MeVisLab Toolbox Reference
mlFieldContainer.h
Go to the documentation of this file.
1 /*************************************************************************************
2 **
3 ** Copyright 2007, MeVis Medical Solutions AG
4 **
5 ** The user may use this file in accordance with the license agreement provided with
6 ** the Software or, alternatively, in accordance with the terms contained in a
7 ** written agreement between the user and MeVis Medical Solutions AG.
8 **
9 ** For further information use the contact form at https://www.mevislab.de/contact
10 **
11 **************************************************************************************/
12 
13 #ifndef ML_FIELD_CONTAINER_H
14 #define ML_FIELD_CONTAINER_H
15 
21 
22 // ML-includes
23 #include "mlInitSystemML.h"
24 #include "mlLinearAlgebra.h"
25 #include "mlImageVector.h"
26 #include "mlSubImageBox.h"
27 
28 #include "mlBase.h"
29 #include "mlFieldSensor.h"
30 #include "mlFields.h"
31 #include "mlListFields.h"
32 
34 class SoNode;
36 
37 ML_START_NAMESPACE
38 
39 
40 #if ML_DEPRECATED_SINCE(3,5,0)
41 #define ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER ML_DEPRECATED
42 #endif
43 
45 #if ML_DEPRECATED_SINCE(3,5,0)
46 class BaseOp;
47 #endif
48 class InputConnector;
49 class OutputConnector;
50 class SubImageBoxd;
52 
53 //-------------------------------------------------------------------------
61 //-------------------------------------------------------------------------
62 class MLEXPORT FieldContainer : public Base {
63 
65 
66 public:
69 
71  ~FieldContainer() override;
72 
77  std::string whoAmI(bool withInstanceName = true) const;
78 
84  Field* addField(const char* name, const char* type, const char* value);
85 
87  Field* addField(Field* field);
88 
90  BoolField* addBool(const char* name);
92  BoolField* addBool(const char* name, bool value);
93 
95  IntField* addInt(const char* name);
97  IntField* addInt(const char* name, MLint value);
98 
104  EnumField* addEnum(const char* name, const char* const * enumerationItemNames, MLint numEnumerationItems);
105 
110  EnumField* addEnum(const char* name, const std::vector<std::string> &enumerationItemNames);
111 
115 
135  template<typename EnumType>
136  TypedEnumField<EnumType>* addEnum(const char* name, const EnumValues<EnumType>& values, EnumType initialValue) {
137  TypedEnumField<EnumType>* field = new TypedEnumField<EnumType>(name, values, initialValue);
138  addField(field);
139  return field;
140  }
141 
143  FloatField* addFloat(const char* name);
145  FloatField* addFloat(const char* name, float value);
146 
148  ProgressField* addProgress(const char* name);
150  ProgressField* addProgress(const char* name, float value);
151 
153  DoubleField* addDouble(const char* name);
155  DoubleField* addDouble(const char* name, double value);
156 
158  StringField* addString(const char* name);
160  StringField* addString(const char* name, const std::string& value);
161 
163  NotifyField* addNotify(const char* name);
166  TriggerField* addTrigger(const char* name);
167 
169  BaseField* addBase(const char* name);
171  BaseField* addBase(const char* name, Base* value);
173  BaseField* addBase(const char* name, const RefCountedBasePtr& value);
175  template <typename T>
176  BaseField* addBaseWithAllowedType(const char* name, T* value = nullptr)
177  {
178  BaseField* f = addBase(name);
180  return f;
181  }
183  template <typename T>
184  BaseField* addBaseWithAllowedType(const char* name, const ::boost::intrusive_ptr<T>& value)
185  {
186  return addBaseWithAllowedType(name, value.get());
187  }
188 
190  template <typename T>
191  TypedBaseField<T>* addTypedBase(const char* name)
192  {
193  TypedBaseField<T>* field = nullptr;
194 
195  field = new TypedBaseField<T>(name);
196  addField(field);
197  return field;
198  }
200  template <typename T>
201  TypedBaseField<T>* addTypedBase(const char* name, T* value)
202  {
203  TypedBaseField<T>* field = addTypedBase<T>(name);
204  field->setValue(value);
205  return field;
206  }
208  template <typename T>
209  TypedBaseField<T>* addTypedBase(const char* name, const ::boost::intrusive_ptr<T>& value)
210  {
211  TypedBaseField<T>* field = addTypedBase<T>(name);
212  field->setValue(value);
213  return field;
214  }
215 
217  SoNodeField* addSoNode(const char* name);
219  SoNodeField* addSoNode(const char* name, SoNode* value);
220 
222  PointerField* addPointer(const char* name);
223 
225  Vector2Field* addVector2(const char* name);
227  Vector2Field* addVector2(const char* name, const Vector2& value);
229  Vector2Field* addVector2(const char* name, double x, double y);
230 
232  Vector3Field* addVector3(const char* name);
234  Vector3Field* addVector3(const char* name, const Vector3& value);
236  Vector3Field* addVector3(const char* name, double x, double y, double z);
237 
239  Vector4Field* addVector4(const char* name);
241  Vector4Field* addVector4(const char* name, const Vector4& value);
243  Vector4Field* addVector4(const char* name, double x, double y, double z, double w);
244 
246  Vector5Field* addVector5(const char* name);
248  Vector5Field* addVector5(const char* name, const Vector5& value);
249 
251  Vector6Field* addVector6(const char* name);
253  Vector6Field* addVector6(const char* name, const Vector6& value);
254 
256  Vector10Field* addVector10(const char* name);
258  Vector10Field* addVector10(const char* name, const Vector10& value);
259 
261  ImageVectorField* addImageVector(const char* name);
263  ImageVectorField* addImageVector(const char* name, const ImageVector& value);
265  ImageVectorField* addImageVector(const char* name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u);
266 
268  SubImageBoxField* addSubImageBox(const char* name);
270  SubImageBoxField* addSubImageBox(const char* name, const SubImageBox& value);
271 
273  SubImageBoxdField* addSubImageBoxd(const char* name);
275  SubImageBoxdField* addSubImageBoxd(const char* name, const SubImageBoxd& value);
276 
278  ColorField* addColor(const char* name);
280  ColorField* addColor(const char* name, float r, float g, float b);
282  ColorField* addColor(const char* name, const Vector3& value);
283 
285  PlaneField* addPlane(const char* name);
287  PlaneField* addPlane(const char* name, double f0, double f1, double f2, double f3);
289  PlaneField* addPlane(const char* name, const Plane& value);
290 
292  RotationField* addRotation(const char* name);
294  RotationField* addRotation(const char* name, const Rotation& value);
295 
297  Matrix2Field* addMatrix2(const char* name);
299  Matrix2Field* addMatrix2(const char* name, const Matrix2& value);
300 
302  Matrix3Field* addMatrix3(const char* name);
304  Matrix3Field* addMatrix3(const char* name, const Matrix3& value);
305 
307  Matrix4Field* addMatrix4(const char* name);
309  Matrix4Field* addMatrix4(const char* name, const Matrix4& value);
310 
312  Matrix5Field* addMatrix5(const char* name);
314  Matrix5Field* addMatrix5(const char* name, const Matrix5& value);
315 
317  Matrix6Field* addMatrix6(const char* name);
319  Matrix6Field* addMatrix6(const char* name, const Matrix6& value);
320 
322  MatrixField* addMatrix(const char* name);
324  MatrixField* addMatrix(const char* name, const Matrix4& value);
325 
327  MLDataTypeField* addMLDataType(const char* name);
329  MLDataTypeField* addMLDataType(const char* name, MLDataType value);
330 
333 
335  IntListField* addIntList(const char* name);
337  IntListField* addIntList(const char* name, const std::vector<MLint>& value);
338 
340  DoubleListField* addDoubleList(const char* name);
342  DoubleListField* addDoubleList(const char* name, const std::vector<double>& value);
343 
345  Vector2ListField* addVector2List(const char* name);
347  Vector2ListField* addVector2List(const char* name, const std::vector<Vector2>& value);
348 
350  Vector3ListField* addVector3List(const char* name);
352  Vector3ListField* addVector3List(const char* name, const std::vector<Vector3>& value);
353 
355  Vector4ListField* addVector4List(const char* name);
357  Vector4ListField* addVector4List(const char* name, const std::vector<Vector4>& value);
358 
359 
361  size_t getNumFields() const;
362 
364  bool hasField(const std::string& name) const;
365 
368  Field* getField(const std::string& name) const ;
369 
371  Field* getField(MLint index) const ;
372 
374  MLint getFieldIndex(Field* field) const;
375 
378  void setFieldStringValue(const std::string& name, const std::string& value);
379 
383  std::string getFieldStringValue(const std::string& name) const;
384 
395  virtual void activateAttachments() { enableNotifications(true); }
396 
406  virtual void deactivateAttachments(){ enableNotifications(false); }
407 
408 private:
413  bool removeField(Field* field);
414 
418  void enableNotifications(bool flag);
419 
420 protected:
421  // Permit access from Field to call handleNotificationInternal
422  friend class Field;
423 
425  virtual void handleNotificationInternal(Field* /*field*/, FieldSensor::Strength /*strength*/) {};
426 
427 private:
429  std::vector <Field*> _fields;
430 
431 public:
437  virtual InputConnectorField* addInputConnector(const char* /*name*/, Module* /*module*/, MLint /*i*/) { return nullptr; }
438 
441  virtual OutputConnectorField* addOutputConnector(const char* /*name*/, Module* /*module*/, MLint /*i*/) { return nullptr; }
442 
444 
445 #if ML_DEPRECATED_SINCE(3,5,0)
446 
450 
451 public:
454  ML_DEPRECATED InputConnectorField* addInputConnector(Module* module, MLint i);
455 
458  ML_DEPRECATED OutputConnectorField* addOutputConnector(Module* module, MLint i);
459 
462  LongDoubleField* addLongDouble(const char* name);
465  LongDoubleField* addLongDouble(const char* name, MLldouble value);
466 
469  inline ML_DEPRECATED Vector2Field* addVec2f(const char* name) { return addVector2(name); }
470  ML_DEPRECATED Vector2Field* addDeprecatedVec2f(const char* name, Vector2 *var0);
473  inline ML_DEPRECATED Vector3Field* addVec3f(const char* name) { return addVector3(name); }
474  ML_DEPRECATED Vector3Field* addDeprecatedVec3f(const char* name, Vector3 *var0);
477  inline ML_DEPRECATED Vector4Field* addVec4f(const char* name) { return addVector4(name); }
478  ML_DEPRECATED Vector4Field* addDeprecatedVec4f(const char* name, Vector4 *var0);
481  inline ML_DEPRECATED Vector5Field* addVec5f(const char* name) { return addVector5(name); }
484  inline ML_DEPRECATED Vector6Field* addVec6f(const char* name) { return addVector6(name); }
485  ML_DEPRECATED Vector6Field* addDeprecatedVec6f(const char* name, Vector6 *var0);
488  inline ML_DEPRECATED Vector10Field* addVec10f(const char* name) { return addVector10(name); }
491  inline ML_DEPRECATED ImageVectorField* addVector(const char* name) { return addImageVector(name); }
492  ML_DEPRECATED ImageVectorField* addDeprecatedVector(const char* name, ImageVector *var0);
495  inline ML_DEPRECATED SubImageBoxField* addSubImgBox(const char* name) { return addSubImageBox(name); }
496  ML_DEPRECATED SubImageBoxField* addDeprecatedSubImgBox(const char* name, SubImageBox *var0);
499  inline ML_DEPRECATED SubImageBoxdField* addSubImgBoxf(const char* name) { return addSubImageBoxd(name); }
500  ML_DEPRECATED SubImageBoxdField* addDeprecatedSubImgBoxf(const char* name, SubImageBoxd *var0);
503  inline ML_DEPRECATED Matrix2Field* addMat2(const char* name) { return addMatrix2(name); }
506  inline ML_DEPRECATED Matrix3Field* addMat3(const char* name) { return addMatrix3(name); }
509  inline ML_DEPRECATED Matrix4Field* addMat4(const char* name) { return addMatrix4(name); }
512  inline ML_DEPRECATED Matrix5Field* addMat5(const char* name) { return addMatrix5(name); }
515  inline ML_DEPRECATED Matrix6Field* addMat6(const char* name) { return addMatrix6(name); }
516 
518 
519 #endif
520 
521 
522 
523 #ifdef ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER
524 
528 
529 public:
530 
533  ML_DEPRECATED BoolField* addDeprecatedBool(const char* name, bool *var);
536  ML_DEPRECATED IntField* addDeprecatedInt(const char* name, MLint *var);
539  ML_DEPRECATED ToggleField* addDeprecatedToggle(const char* name);
542  ML_DEPRECATED ToggleField* addDeprecatedToggle(const char* name, int *var);
545  ML_DEPRECATED EnumField* addDeprecatedEnum(const char* name, const char* const * enumNames, MLint enumNum, int *var);
548  ML_DEPRECATED FloatField* addDeprecatedFloat(const char* name, float *var);
551  ML_DEPRECATED ProgressField* addDeprecatedProgress(const char* name, float *var);
554  ML_DEPRECATED DoubleField* addDeprecatedDouble(const char* name, double *var);
557  ML_DEPRECATED Vector2Field* addDeprecatedVector2(const char* name, Vector2 *var0);
560  ML_DEPRECATED Vector3Field* addDeprecatedVector3(const char* name, Vector3 *var0);
563  ML_DEPRECATED Vector4Field* addDeprecatedVector4(const char* name, Vector4 *var0);
566  ML_DEPRECATED Vector6Field* addDeprecatedVector6(const char* name, Vector6 *var0);
569  ML_DEPRECATED ImageVectorField* addDeprecatedImageVector(const char* name, ImageVector *var0);
572  ML_DEPRECATED SubImageBoxField* addDeprecatedSubImageBox(const char* name, SubImageBox *var0);
575  ML_DEPRECATED SubImageBoxdField* addDeprecatedSubImageBoxd(const char* name, SubImageBoxd *var0);
578  ML_DEPRECATED ColorField* addDeprecatedColor(const char* name, Vector3 *var0);
581  ML_DEPRECATED MatrixField* addDeprecatedMatrix(const char* name, Matrix4* mat);
584  ML_DEPRECATED MLDataTypeField* addDeprecatedMLDataType(const char* name, MLDataType* dt);
585 
587 
588 #endif // ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER
589 
590  ML_ABSTRACT_CLASS_HEADER(FieldContainer)
591 
592 };
593 
594 
595 ML_END_NAMESPACE
596 
597 //-----------------------------------------------------------------------------------
598 // Stream output for std::ostream
599 //-----------------------------------------------------------------------------------
600 namespace std
601 {
602 
604  MLEXPORT std::ostream& operator<<(std::ostream& s, const ML_NAMESPACE::FieldContainer &fc);
605 
606 }
607 
608 
609 
610 #endif //of __mlFieldContainer_H
611 
612 
613 
#define ML_DEPRECATED
Definition: CSOGroup.h:371
@ T
Definition: SoKeyGrabber.h:71
Field to encapsulate a pointer to an ML base object.
Definition: mlFields.h:1187
void setBaseValueAndAddAllowedType(T *value)
convenience routine for setting the base value and its type at the same time.
Definition: mlFields.h:1238
Class representing general ML objects that support import/export via strings (setPersistentState() an...
Definition: mlBase.h:62
Field to encapsulate a boolean value.
Definition: mlFields.h:62
Field to encapsulate a vector of 3 float values representing an (rgb) color with all properties of Ve...
Definition: mlFields.h:2065
Field to encapsulate a double value.
Definition: mlFields.h:806
Field to encapsulate an enumerated value.
Definition: mlFields.h:363
Helper class that stores a list of typed enum values and their string names.
Definition: mlFields.h:531
Defines the class FieldContainer to encapsulate a vector of fields for (see class Field).
PlaneField * addPlane(const char *name, const Plane &value)
Creates a PlaneField with name and adds it to the container.
Matrix5Field * addMatrix5(const char *name, const Matrix5 &value)
Creates a Matrix5Field with name and adds it to the container.
Vector2Field * addVector2(const char *name, const Vector2 &value)
Creates a Vector2Field with name and adds it to the container.
Matrix6Field * addMatrix6(const char *name)
Creates a Matrix6Field with name and adds it to the container.
ProgressField * addProgress(const char *name)
Creates a float ProgressField with name and adds it to the container. Default value is 0....
size_t getNumFields() const
Returns the number of added fields.
virtual void handleNotificationInternal(Field *, FieldSensor::Strength)
Called when field has changed.
Vector4Field * addVector4(const char *name, const Vector4 &value)
Creates a Vector4Field with name and adds it to the container.
ProgressField * addProgress(const char *name, float value)
Creates a float ProgressField with name and adds it to the container.
virtual void deactivateAttachments()
Disables notification handling, i.e., all fields of this module will not send notifications to attach...
TriggerField * addTrigger(const char *name)
Creates a TriggerField field with name and adds it to the container.
SubImageBoxField * addSubImageBox(const char *name, const SubImageBox &value)
Creates a SubImageBoxField with name and adds it to the container.
Vector4Field * addVector4(const char *name)
Creates a Vector4Field with name and adds it to the container.
MLDataTypeField * addMLDataType(const char *name)
Creates a MTDataTypeField with name and adds it to the container.
IntListField * addIntList(const char *name, const std::vector< MLint > &value)
Creates an IntListField field with name and given list value and adds it to the container.
RotationField * addRotation(const char *name, const Rotation &value)
Creates a RotationField with name and adds it to the container.
BaseField * addBaseWithAllowedType(const char *name, T *value=nullptr)
As above, but also sets the allowed type of the field.
Vector5Field * addVector5(const char *name, const Vector5 &value)
Creates a Vector5Field with name and adds it to the container.
IntField * addInt(const char *name, MLint value)
Creates an IntField with name and adds it to the container.
void setFieldStringValue(const std::string &name, const std::string &value)
Sets the value of the field with name if it exists.
EnumField * addEnum(const char *name, const std::vector< std::string > &enumerationItemNames)
Creates an EnumField field with name and adds it to the container.
EnumField * addEnum(const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
Creates an EnumField field with name and adds it to the container.
MatrixField * addMatrix(const char *name)
Creates a MatrixField with name and adds it to the container.
NotifyField * addNotify(const char *name)
Creates a NotifyField field with name and adds it to the container.
BaseField * addBase(const char *name, Base *value)
Creates a Base field with name and adds it to the container.
DoubleField * addDouble(const char *name)
Creates a DoubleField with name and adds it to the container. Default value is 0.
BoolField * addBool(const char *name, bool value)
Creates a BoolField with name and adds it to the container.
Vector3Field * addVector3(const char *name, double x, double y, double z)
Creates a Vector3Field with name and adds it to the container.
FloatField * addFloat(const char *name, float value)
Creates a FloatField with name and adds it to the container.
bool hasField(const std::string &name) const
Returns true if the field with name name exists; otherwise false is returned.
Matrix3Field * addMatrix3(const char *name)
Creates a Matrix3Field with name and adds it to the container.
Field * getField(const std::string &name) const
Returns the pointer to the field with name name.
DoubleField * addDouble(const char *name, double value)
Creates a DoubleField with name and adds it to the container.
TypedBaseField< T > * addTypedBase(const char *name, T *value)
Creates a TypedBaseField with name and adds it to the container.
IntField * addInt(const char *name)
Creates an IntField with name and adds it to the container. Default value is 0.
Matrix6Field * addMatrix6(const char *name, const Matrix6 &value)
Creates a Matrix6Field with name and adds it to the container.
Field * addField(const char *name, const char *type, const char *value)
Adds a new field with name name, type type and value value (coded as string) to the container.
SubImageBoxdField * addSubImageBoxd(const char *name)
Creates a SubImageBoxd field with name and adds it to the container.
Vector5Field * addVector5(const char *name)
Creates a Vector5Field with name and adds it to the container.
MLDataTypeField * addMLDataType(const char *name, MLDataType value)
Creates a MTDataTypeField with name and adds it to the container.
MatrixField * addMatrix(const char *name, const Matrix4 &value)
Creates a MatrixField with name and adds it to the container.
Vector4ListField * addVector4List(const char *name, const std::vector< Vector4 > &value)
Creates an Vector4ListField field with name and given list value and adds it to the container.
ImageVectorField * addImageVector(const char *name, const ImageVector &value)
Creates a ImageVectorField with name and adds it to the container.
Vector2ListField * addVector2List(const char *name)
Creates an Vector2ListField field with name and empty list value and adds it to the container.
Matrix2Field * addMatrix2(const char *name)
Creates a Matrix2Field with name and adds it to the container.
StringField * addString(const char *name)
Creates a StringField with name and adds it to the container. Default value is empty string.
ImageVectorField * addImageVector(const char *name)
Creates a ImageVectorField with name and adds it to the container.
BaseField * addBase(const char *name)
Creates a Base field with name and adds it to the container. Default value is NULL.
Vector10Field * addVector10(const char *name, const Vector10 &value)
Creates a Vector10Field with name and adds it to the container.
Vector3Field * addVector3(const char *name, const Vector3 &value)
Creates a Vector3Field with name and adds it to the container.
ColorField * addColor(const char *name, float r, float g, float b)
Creates a ColorField with name and adds it to the container.
Matrix5Field * addMatrix5(const char *name)
Creates a Matrix5Field with name and adds it to the container.
Vector2Field * addVector2(const char *name, double x, double y)
Creates a Vector2Field with name and adds it to the container.
TypedBaseField< T > * addTypedBase(const char *name)
Creates a TypedBaseField with name and adds it to the container. Default value is NULL.
SoNodeField * addSoNode(const char *name)
Creates a SoNodeField with name and adds it to the container. Default value is NULL.
BoolField * addBool(const char *name)
Creates a BoolField with name and adds it to the container. Default value is false.
ColorField * addColor(const char *name)
Creates a ColorField with name and adds it to the container.
Matrix3Field * addMatrix3(const char *name, const Matrix3 &value)
Creates a Matrix3Field with name and adds it to the container.
ColorField * addColor(const char *name, const Vector3 &value)
Creates a ColorField with name and adds it to the container.
TypedEnumField< EnumType > * addEnum(const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
Creates a TypedEnumField field with name and adds it to the container.
SubImageBoxdField * addSubImageBoxd(const char *name, const SubImageBoxd &value)
Creates a SubImageBoxd field with name and adds it to the container.
MLint getFieldIndex(Field *field) const
Returns index of field if it exists. If not, -1 is returned.
Vector3Field * addVector3(const char *name)
Creates a Vector3Field with name and adds it to the container.
BaseField * addBase(const char *name, const RefCountedBasePtr &value)
Creates a Base field with name and adds it to the container. Sets the value from intrusive pointer.
Vector10Field * addVector10(const char *name)
Creates a Vector10Field with name and adds it to the container.
FieldContainer()
Constructor.
RotationField * addRotation(const char *name)
Creates a RotationField with name and adds it to the container.
TypedBaseField< T > * addTypedBase(const char *name, const ::boost::intrusive_ptr< T > &value)
Creates a TypedBaseField with name and adds it to the container. Sets the value from intrusive pointe...
virtual OutputConnectorField * addOutputConnector(const char *, Module *, MLint)
SubImageBoxField * addSubImageBox(const char *name)
Creates a SubImageBoxField with name and adds it to the container.
FloatField * addFloat(const char *name)
Creates a FloatField with name and adds it to the container. Default value is 0.f.
DoubleListField * addDoubleList(const char *name)
Creates an DoubleListField field with name and empty list value and adds it to the container.
Vector6Field * addVector6(const char *name, const Vector6 &value)
Creates a Vector6Field with name and adds it to the container.
virtual InputConnectorField * addInputConnector(const char *, Module *, MLint)
Field * getField(MLint index) const
Returns pointer of field at index if it exists. If not, -1 is returned.
Vector2Field * addVector2(const char *name)
Creates a Vector2Field with name and adds it to the container.
virtual void activateAttachments()
Reactivates notification handling, i.e., all fields of this module will send notifications again to a...
std::string whoAmI(bool withInstanceName=true) const
Returns type and instance name of format "ClassTypeName(instanceName)" if the instance name is not em...
SoNodeField * addSoNode(const char *name, SoNode *value)
Creates a SoNodeField with name and adds it to the container.
Vector6Field * addVector6(const char *name)
Creates a Vector6Field with name and adds it to the container.
Vector4Field * addVector4(const char *name, double x, double y, double z, double w)
Creates a Vector4Field with name and adds it to the container.
PlaneField * addPlane(const char *name, double f0, double f1, double f2, double f3)
Creates a PlaneField with name and adds it to the container.
IntListField * addIntList(const char *name)
Creates an IntListField field with name and empty list value and adds it to the container.
BaseField * addBaseWithAllowedType(const char *name, const ::boost::intrusive_ptr< T > &value)
As above, but also sets the allowed type of the field.
Vector3ListField * addVector3List(const char *name, const std::vector< Vector3 > &value)
Creates an Vector3ListField field with name and given list value and adds it to the container.
Matrix2Field * addMatrix2(const char *name, const Matrix2 &value)
Creates a Matrix2Field with name and adds it to the container.
UniversalTypeField * addUniversalType(const char *name)
Creates an UniversalTypeField field with name and adds it to the container.
StringField * addString(const char *name, const std::string &value)
Creates a StringField with name and adds it to the container.
ImageVectorField * addImageVector(const char *name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u)
Creates a ImageVectorField with name and adds it to the container.
DoubleListField * addDoubleList(const char *name, const std::vector< double > &value)
Creates an DoubleListField field with name and given list value and adds it to the container.
PlaneField * addPlane(const char *name)
Creates a PlaneField with name and adds it to the container.
Vector2ListField * addVector2List(const char *name, const std::vector< Vector2 > &value)
Creates an Vector2ListField field with name and given list value and adds it to the container.
std::string getFieldStringValue(const std::string &name) const
Returns the string value of the field with name if it is found.
Matrix4Field * addMatrix4(const char *name)
Creates a Matrix4Field with name and adds it to the container.
~FieldContainer() override
Destructor: Deletes all added fields.
Vector3ListField * addVector3List(const char *name)
Creates an Vector3ListField field with name and empty list value and adds it to the container.
Field * addField(Field *field)
Adds a field, the ownership of the field is passed to the FieldContainer.
PointerField * addPointer(const char *name)
Creates a PointerField with name and adds it to the container.
Matrix4Field * addMatrix4(const char *name, const Matrix4 &value)
Creates a Matrix4Field with name and adds it to the container.
Vector4ListField * addVector4List(const char *name)
Creates an Vector4ListField field with name and empty list value and adds it to the container.
Strength
Enumeration type describing the strength of notifications.
Definition: mlFieldSensor.h:44
Base class for all fields used in the ML.
Definition: mlField.h:73
Field to encapsulate a float value.
Definition: mlFields.h:627
Field to encapsulate an ML vector ImageVector with 6 integer components.
Definition: mlFields.h:2699
Field to encapsulate a pointer to an input connector which represents a module input.
Definition: mlFields.h:1140
Field to encapsulate an integer value.
Definition: mlFields.h:161
Field to encapsulate an MLDataType value.
Definition: mlFields.h:2633
Field encapsulating a 2x2 matrix.
Definition: mlFields.h:2127
Field encapsulating a 3x3 matrix.
Definition: mlFields.h:2218
Field to encapsulate a 4x4 matrix.
Definition: mlFields.h:2420
Field encapsulating a 5x5 matrix.
Definition: mlFields.h:2445
Field encapsulating a 6x6 matrix.
Definition: mlFields.h:2539
Field to encapsulate a 4x4 matrix, same as Matrix4Field for backward compatibility.
Definition: mlFields.h:2312
Base class for an image processing module of the ML.
Definition: mlModule.h:156
Field without value for notifications.
Definition: mlFields.h:1049
Field to encapsulate a pointer to an output connector which represents a module output.
Definition: mlFields.h:1085
Field to encapsulate a vector of 4 double values representing a plane with all properties of Vector4F...
Definition: mlFields.h:3138
Class defining a plane in 3D.
Definition: mlPlane.h:30
Field to encapsulate a void pointer to arbitrary data.
Definition: mlFields.h:1382
Field to encapsulate an increasing float value from range [0,1].
Definition: mlFields.h:744
Field to encapsulate a vector of 4 double values representing a rotation with all properties of Vecto...
Definition: mlFields.h:3109
Class to handle Rotations (internally the rotation is stored as a unit quaternion)
Definition: mlRotation.h:40
Field to encapsulate a pointer to an SoNode instance of OpenInventor.
Definition: mlFields.h:1327
Field to encapsulate a string value.
Definition: mlFields.h:1000
Field to encapsulate an ML integer SubimgBox.
Definition: mlFields.h:2801
Field to encapsulate an ML double SubimgBox.
Definition: mlFields.h:2905
SubImageBoxd - SubImageBox with coordinates of float data type.
Templated version of BaseField which only stores the template type as pointer.
Definition: mlFields.h:1297
void setValue(T *basePointerValue)
Sets the value of the field to basePointerValue.
Definition: mlFields.h:1303
TypedEnumField is used to encapsulate a C++ enum value and work with a real enum value instead of int...
Definition: mlFields.h:596
Field to encapsulate any of the registered ML types.
Definition: mlFields.h:3016
Field to encapsulate a vector of 10 double values.
Definition: mlFields.h:1969
Field to encapsulate a vector of 2 double values.
Definition: mlFields.h:1428
Field to encapsulate a vector of 3 double values.
Definition: mlFields.h:1538
Field to encapsulate a vector of 4 double values.
Definition: mlFields.h:1650
Field to encapsulate a vector of 5 double values.
Definition: mlFields.h:1762
Field to encapsulate a vector of 6 double values.
Definition: mlFields.h:1857
#define ML_DISALLOW_COPY_AND_ASSIGN(className)
Defines basic macros.
Definition: mlMacros.h:23
#define ML_ABSTRACT_CLASS_HEADER(className)
Same like ML_ABSTRACT_CLASS_HEADER_EXPORTED with a non existing export symbol.
MLint32 MLDataType
MLDataType.
Definition: mlTypeDefs.h:684
MLEXPORT std::ostream & operator<<(std::ostream &s, const ml::Field &v)
Overloads the operator "<<" for stream output of Field objects.
#define MLEXPORT
To export symbols from a dll/shared object, we need to mark them with the MLEXPORT symbol.
long double MLldouble
Definition: mlTypeDefs.h:238
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
Definition: mlTypeDefs.h:578
Tvec4< MLdouble > Vector4
A vector with 4 components of type double.
Definition: mlVector4.h:162
Tmat4< MLdouble > Matrix4
The standard 4x4 matrix of type double.
Definition: mlMatrix4.h:726
Tvec3< MLdouble > Vector3
A vector with 3 components of type double.
Definition: mlVector3.h:300
Tvec6< MLdouble > Vector6
A vector with 6 components of type double.
Definition: mlVector6.h:194
Tvec2< MLdouble > Vector2
A vector with 2 components of type double.
Definition: mlVector2.h:159
TSubImageBox< MLint > SubImageBox
Define the standard SubImageBox type used in the ML. Its size varies with the size of the MLint type.
TImageVector< MLint > ImageVector
Defines the standard ImageVector type which is used by the ML for indexing and coordinates.