ML Reference
|
00001 // **InsertLicense** code 00002 //------------------------------------------------------------------------- 00013 //------------------------------------------------------------------------- 00014 #ifndef __mlFieldContainer_H 00015 #define __mlFieldContainer_H 00016 00017 // ML-includes 00018 #ifndef __mlInitSystemML_H 00019 #include "mlInitSystemML.h" 00020 #endif 00021 #ifndef __mlLinearAlgebra_H 00022 #include "mlLinearAlgebra.h" 00023 #endif 00024 #ifndef __mlImageVector_H 00025 #include "mlImageVector.h" 00026 #endif 00027 #ifndef __mlSubImageBox_H 00028 #include "mlSubImageBox.h" 00029 #endif 00030 00031 #include "mlBase.h" 00032 #include "mlFieldSensor.h" 00033 #include "mlFields.h" 00034 00036 class SoNode; 00038 00039 ML_START_NAMESPACE 00040 00041 00042 #ifdef ML_DEPRECATED 00043 #define ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER ML_DEPRECATED 00044 #endif 00045 00047 #ifdef ML_DEPRECATED 00048 class BaseOp; 00049 #endif 00050 class InputConnector; 00051 class OutputConnector; 00052 class SubImageBoxd; 00054 00055 00056 // Disable own usage of deprecation 00057 #ifdef _MSC_VER 00058 #pragma warning(push) 00059 #pragma warning(disable : 4996 ) 00060 #endif 00061 00062 //------------------------------------------------------------------------- 00070 //------------------------------------------------------------------------- 00071 class MLEXPORT FieldContainer : public Base { 00072 00073 ML_DISALLOW_COPY_AND_ASSIGN(FieldContainer); 00074 00075 public: 00077 FieldContainer(); 00078 00080 virtual ~FieldContainer(); 00081 00087 Field* addField(const char* name, const char* type, const char* value); 00088 00090 Field* addField(Field* field); 00091 00093 BoolField* addBool(const char* name); 00095 BoolField* addBool(const char* name, bool value); 00096 00098 IntField* addInt(const char* name); 00100 IntField* addInt(const char* name, MLint value); 00101 00107 EnumField* addEnum(const char* name, const char* const * enumerationItemNames, MLint numEnumerationItems); 00108 00113 EnumField* addEnum(const char* name, const std::vector<std::string> &enumerationItemNames); 00114 00116 FloatField* addFloat(const char* name); 00118 FloatField* addFloat(const char* name, float value); 00119 00121 ProgressField* addProgress(const char* name); 00123 ProgressField* addProgress(const char* name, float value); 00124 00126 DoubleField* addDouble(const char* name); 00128 DoubleField* addDouble(const char* name, double value); 00129 00131 LongDoubleField* addLongDouble(const char* name); 00133 LongDoubleField* addLongDouble(const char* name, MLldouble value); 00134 00136 StringField* addString(const char* name); 00138 StringField* addString(const char* name, const std::string& value); 00139 00141 NotifyField* addNotify(const char* name); 00142 00144 BaseField* addBase(const char* name); 00146 BaseField* addBase(const char* name, Base* value); 00147 00149 SoNodeField* addSoNode(const char* name); 00151 SoNodeField* addSoNode(const char* name, SoNode* value); 00152 00154 PointerField* addPointer(const char* name); 00155 00157 Vector2Field* addVector2(const char* name); 00159 Vector2Field* addVector2(const char* name, const Vector2& value); 00161 Vector2Field* addVector2(const char* name, double x, double y); 00162 00164 Vector3Field* addVector3(const char* name); 00166 Vector3Field* addVector3(const char* name, const Vector3& value); 00168 Vector3Field* addVector3(const char* name, double x, double y, double z); 00169 00171 Vector4Field* addVector4(const char* name); 00173 Vector4Field* addVector4(const char* name, const Vector4& value); 00175 Vector4Field* addVector4(const char* name, double x, double y, double z, double w); 00176 00178 Vector5Field* addVector5(const char* name); 00180 Vector5Field* addVector5(const char* name, const Vector5& value); 00181 00183 Vector6Field* addVector6(const char* name); 00185 Vector6Field* addVector6(const char* name, const Vector6& value); 00186 00188 Vector10Field* addVector10(const char* name); 00190 Vector10Field* addVector10(const char* name, const Vector10& value); 00191 00193 ImageVectorField* addImageVector(const char* name); 00195 ImageVectorField* addImageVector(const char* name, const ImageVector& value); 00197 ImageVectorField* addImageVector(const char* name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u); 00198 00200 SubImageBoxField* addSubImageBox(const char* name); 00202 SubImageBoxField* addSubImageBox(const char* name, const SubImageBox& value); 00203 00205 SubImageBoxdField* addSubImageBoxd(const char* name); 00207 SubImageBoxdField* addSubImageBoxd(const char* name, const SubImageBoxd& value); 00208 00210 ColorField* addColor(const char* name); 00212 ColorField* addColor(const char* name, float r, float g, float b); 00214 ColorField* addColor(const char* name, const Vector3& value); 00215 00217 PlaneField* addPlane(const char* name); 00219 PlaneField* addPlane(const char* name, double f0, double f1, double f2, double f3); 00221 PlaneField* addPlane(const char* name, const Plane& value); 00222 00224 RotationField* addRotation(const char* name); 00226 RotationField* addRotation(const char* name, const Rotation& value); 00227 00229 Matrix2Field* addMatrix2(const char* name); 00231 Matrix2Field* addMatrix2(const char* name, const Matrix2& value); 00232 00234 Matrix3Field* addMatrix3(const char* name); 00236 Matrix3Field* addMatrix3(const char* name, const Matrix3& value); 00237 00239 Matrix4Field* addMatrix4(const char* name); 00241 Matrix4Field* addMatrix4(const char* name, const Matrix4& value); 00242 00244 Matrix5Field* addMatrix5(const char* name); 00246 Matrix5Field* addMatrix5(const char* name, const Matrix5& value); 00247 00249 Matrix6Field* addMatrix6(const char* name); 00251 Matrix6Field* addMatrix6(const char* name, const Matrix6& value); 00252 00254 MatrixField* addMatrix(const char* name); 00256 MatrixField* addMatrix(const char* name, const Matrix4& value); 00257 00259 MLDataTypeField* addMLDataType(const char* name); 00261 MLDataTypeField* addMLDataType(const char* name, MLDataType value); 00262 00264 UniversalTypeField* addUniversalType(const char* name); 00265 00267 size_t getNumFields() const; 00268 00270 bool hasField(const std::string& name) const; 00271 00274 Field* getField(const std::string& name) const ; 00275 00277 Field* getField(MLint index) const ; 00278 00280 MLint getFieldIndex(Field* field) const; 00281 00284 void setFieldStringValue(const std::string& name, const std::string& value); 00285 00289 std::string getFieldStringValue(const std::string& name) const; 00290 00301 virtual void activateAttachments() { enableNotifications(true); } 00302 00312 virtual void deactivateAttachments(){ enableNotifications(false); } 00313 00314 private: 00319 bool removeField(Field* field); 00320 00324 void enableNotifications(bool flag); 00325 00326 protected: 00327 // Permit access from Field to call handleNotificationInternal 00328 friend class Field; 00329 00331 virtual void handleNotificationInternal(Field* /*field*/, FieldSensor::Strength /*strength*/) {}; 00332 00333 private: 00335 std::vector <Field*> _fields; 00336 00337 public: 00340 00341 00342 00343 virtual InputConnectorField* addInputConnector(const char* /*name*/, Module* /*module*/, MLint /*i*/) { return NULL; } 00344 00347 virtual OutputConnectorField* addOutputConnector(const char* /*name*/, Module* /*module*/, MLint /*i*/) { return NULL; } 00348 00350 00351 #ifdef ML_DEPRECATED 00352 00355 00356 00357 public: 00360 ML_DEPRECATED InputConnectorField* addInputConnector(Module* module, MLint i); 00361 00364 ML_DEPRECATED OutputConnectorField* addOutputConnector(Module* module, MLint i); 00365 00368 inline ML_DEPRECATED Vector2Field* addVec2f(const char* name) { return addVector2(name); } 00369 inline ML_DEPRECATED Vector2Field* addDeprecatedVec2f(const char* name, Vector2 *var0) { return addDeprecatedVector2(name, var0); } 00372 inline ML_DEPRECATED Vector3Field* addVec3f(const char* name) { return addVector3(name); } 00373 inline ML_DEPRECATED Vector3Field* addDeprecatedVec3f(const char* name, Vector3 *var0) { return addDeprecatedVector3(name, var0); } 00376 inline ML_DEPRECATED Vector4Field* addVec4f(const char* name) { return addVector4(name); } 00377 inline ML_DEPRECATED Vector4Field* addDeprecatedVec4f(const char* name, Vector4 *var0) { return addDeprecatedVector4(name, var0); } 00380 inline ML_DEPRECATED Vector5Field* addVec5f(const char* name) { return addVector5(name); } 00383 inline ML_DEPRECATED Vector6Field* addVec6f(const char* name) { return addVector6(name); } 00384 inline ML_DEPRECATED Vector6Field* addDeprecatedVec6f(const char* name, Vector6 *var0) { return addDeprecatedVector6(name, var0); } 00387 inline ML_DEPRECATED Vector10Field* addVec10f(const char* name) { return addVector10(name); } 00390 inline ML_DEPRECATED ImageVectorField* addVector(const char* name) { return addImageVector(name); } 00391 inline ML_DEPRECATED ImageVectorField* addDeprecatedVector(const char* name, ImageVector *var0) { return addDeprecatedImageVector(name, var0); } 00394 inline ML_DEPRECATED SubImageBoxField* addSubImgBox(const char* name) { return addSubImageBox(name); } 00395 inline ML_DEPRECATED SubImageBoxField* addDeprecatedSubImgBox(const char* name, SubImageBox *var0) { return addDeprecatedSubImageBox(name, var0); } 00398 inline ML_DEPRECATED SubImageBoxdField* addSubImgBoxf(const char* name) { return addSubImageBoxd(name); } 00399 inline ML_DEPRECATED SubImageBoxdField* addDeprecatedSubImgBoxf(const char* name, SubImageBoxd *var0) { return addDeprecatedSubImageBoxd(name, var0); } 00402 inline ML_DEPRECATED Matrix2Field* addMat2(const char* name) { return addMatrix2(name); } 00405 inline ML_DEPRECATED Matrix3Field* addMat3(const char* name) { return addMatrix3(name); } 00408 inline ML_DEPRECATED Matrix4Field* addMat4(const char* name) { return addMatrix4(name); } 00411 inline ML_DEPRECATED Matrix5Field* addMat5(const char* name) { return addMatrix5(name); } 00414 inline ML_DEPRECATED Matrix6Field* addMat6(const char* name) { return addMatrix6(name); } 00415 00417 00418 #endif // ML_DEPRECATED 00419 00420 00421 00422 #ifdef ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER 00423 00426 00427 00428 public: 00429 00432 ML_DEPRECATED BoolField* addDeprecatedBool(const char* name, bool *var); 00435 ML_DEPRECATED IntField* addDeprecatedInt(const char* name, MLint *var); 00438 ML_DEPRECATED ToggleField* addDeprecatedToggle(const char* name); 00441 ML_DEPRECATED ToggleField* addDeprecatedToggle(const char* name, int *var); 00444 ML_DEPRECATED EnumField* addDeprecatedEnum(const char* name, const char* const * enumNames, MLint enumNum, int *var); 00447 ML_DEPRECATED FloatField* addDeprecatedFloat(const char* name, float *var); 00450 ML_DEPRECATED ProgressField* addDeprecatedProgress(const char* name, float *var); 00453 ML_DEPRECATED DoubleField* addDeprecatedDouble(const char* name, double *var); 00456 ML_DEPRECATED Vector2Field* addDeprecatedVector2(const char* name, Vector2 *var0); 00459 ML_DEPRECATED Vector3Field* addDeprecatedVector3(const char* name, Vector3 *var0); 00462 ML_DEPRECATED Vector4Field* addDeprecatedVector4(const char* name, Vector4 *var0); 00465 ML_DEPRECATED Vector6Field* addDeprecatedVector6(const char* name, Vector6 *var0); 00468 ML_DEPRECATED ImageVectorField* addDeprecatedImageVector(const char* name, ImageVector *var0); 00471 ML_DEPRECATED SubImageBoxField* addDeprecatedSubImageBox(const char* name, SubImageBox *var0); 00474 ML_DEPRECATED SubImageBoxdField* addDeprecatedSubImageBoxd(const char* name, SubImageBoxd *var0); 00477 ML_DEPRECATED ColorField* addDeprecatedColor(const char* name, Vector3 *var0); 00480 ML_DEPRECATED MatrixField* addDeprecatedMatrix(const char* name, Matrix4* mat); 00483 ML_DEPRECATED MLDataTypeField* addDeprecatedMLDataType(const char* name, MLDataType* dt); 00484 00486 00487 #endif // ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER 00488 00489 ML_ABSTRACT_CLASS_HEADER(FieldContainer) 00490 00491 }; 00492 00493 // re-enable deprecation warnings 00494 #ifdef _MSC_VER 00495 #pragma warning(pop) 00496 #endif 00497 00498 ML_END_NAMESPACE 00499 00500 //----------------------------------------------------------------------------------- 00501 // Stream output for std::ostream 00502 //----------------------------------------------------------------------------------- 00503 namespace std 00504 { 00505 00507 MLEXPORT std::ostream& operator<<(std::ostream& s, const ML_NAMESPACE::FieldContainer &fc); 00508 00509 } 00510 00511 00512 00513 #endif //of __mlFieldContainer_H 00514 00515 00516