ML Reference
MeVis/Foundation/Sources/ML/include/mlFieldContainer.h
Go to the documentation of this file.
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