13#ifndef ML_FIELD_CONTAINER_H
14#define ML_FIELD_CONTAINER_H
127 template<
typename EnumType>
167 template <
typename T>
175 template <
typename T>
178 return addBaseWithAllowedType(name, value.get());
182 template <
typename T>
192 template <
typename T>
196 field->setValue(value);
200 template <
typename T>
204 field->setValue(value);
410 void enableNotifications(
bool flag);
421 std::vector <Field*> _fields;
Field to encapsulate a pointer to an ML base object.
void setBaseValueAndAddAllowedType(T *value)
convenience routine for setting the base value and its type at the same time.
Class representing general ML objects that support import/export via strings (setPersistentState() an...
Field to encapsulate a boolean value.
Field to encapsulate a vector of 3 float values representing an (rgb) color with all properties of Ve...
Field to encapsulate a double value.
Field to encapsulate an enumerated value.
Helper class that stores a list of typed enum values and their string names.
Defines the class FieldContainer to encapsulate a vector of fields for (see class Field).
FloatField * addFloat(const char *name, float value)
Creates a FloatField with name and adds it to the container.
Matrix4Field * addMatrix4(const char *name)
Creates a Matrix4Field 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.
MLDataTypeField * addMLDataType(const char *name)
Creates a MTDataTypeField with name and adds it to the container.
size_t getNumFields() const
Returns the number of added fields.
virtual void handleNotificationInternal(Field *, FieldSensor::Strength)
Called when field has changed.
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.
Field * getField(const std::string &name) const
Returns the pointer to the field with name name.
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.
Matrix6Field * addMatrix6(const char *name)
Creates a Matrix6Field 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...
BoolField * addBool(const char *name, bool value)
Creates a BoolField with name 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.
IntField * addInt(const char *name)
Creates an IntField with name and adds it to the container. Default value is 0.
BaseField * addBaseWithAllowedType(const char *name, T *value=nullptr)
As above, but also sets the allowed type of the field.
SubImageBoxField * addSubImageBox(const char *name, const SubImageBox &value)
Creates a SubImageBoxField 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.
Matrix3Field * addMatrix3(const char *name)
Creates a Matrix3Field 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.
Vector3Field * addVector3(const char *name, const Vector3 &value)
Creates a Vector3Field with name and adds it to the container.
Matrix2Field * addMatrix2(const char *name)
Creates a Matrix2Field with name and adds it to the container.
Vector2Field * addVector2(const char *name)
Creates a Vector2Field 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.
void setFieldStringValue(const std::string &name, const std::string &value)
Sets the value of the field with name if it exists.
BaseField * addBaseWithAllowedType(const char *name, const ::boost::intrusive_ptr< T > &value)
As above, but also sets the allowed type of the field.
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.
Vector4ListField * addVector4List(const char *name)
Creates an Vector4ListField field with name and empty list value 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.
TriggerField * addTrigger(const char *name)
Creates a TriggerField field 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.
Vector4Field * addVector4(const char *name)
Creates a Vector4Field 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....
Vector10Field * addVector10(const char *name, const Vector10 &value)
Creates a Vector10Field 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.
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.
Matrix2Field * addMatrix2(const char *name, const Matrix2 &value)
Creates a Matrix2Field with name and adds it to the container.
Vector5Field * addVector5(const char *name, const Vector5 &value)
Creates a Vector5Field 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.
Vector3Field * addVector3(const char *name)
Creates a Vector3Field 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.
ImageVectorField * addImageVector(const char *name)
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.
Matrix5Field * addMatrix5(const char *name, const Matrix5 &value)
Creates a Matrix5Field with name and adds it to the container.
SoNodeField * addSoNode(const char *name, SoNode *value)
Creates a SoNodeField 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.
MatrixField * addMatrix(const char *name)
Creates a MatrixField 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.
MLint getFieldIndex(Field *field) const
Returns index of field if it exists. If not, -1 is returned.
BaseField * addBase(const char *name)
Creates a Base field with name and adds it to the container. Default value is NULL.
Field * addField(Field *field)
Adds a field, the ownership of the field is passed to the FieldContainer.
BoolField * addBool(const char *name)
Creates a BoolField with name and adds it to the container. Default value is false.
SubImageBoxdField * addSubImageBoxd(const char *name, const SubImageBoxd &value)
Creates a SubImageBoxd field with name and adds it to the container.
FieldContainer()
Constructor.
SoNodeField * addSoNode(const char *name)
Creates a SoNodeField with name and adds it to the container. Default value is NULL.
ColorField * addColor(const char *name, float r, float g, float b)
Creates a ColorField with name and adds it to the container.
Field * getField(MLint index) const
Returns pointer of field at index if it exists. If not, -1 is returned.
RotationField * addRotation(const char *name, const Rotation &value)
Creates a RotationField 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.
EnumField * addEnum(const char *name, const std::vector< std::string > &enumerationItemNames)
Creates an EnumField field with name and adds it to the container.
SubImageBoxdField * addSubImageBoxd(const char *name)
Creates a SubImageBoxd field with name and adds it to the container.
SubImageBoxField * addSubImageBox(const char *name)
Creates a SubImageBoxField 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.
UniversalTypeField * addUniversalType(const char *name)
Creates an UniversalTypeField field with name and adds it to the container.
PointerField * addPointer(const char *name)
Creates a PointerField with name and adds it to the container.
Vector3ListField * addVector3List(const char *name)
Creates an Vector3ListField 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.
Matrix5Field * addMatrix5(const char *name)
Creates a Matrix5Field 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...
PlaneField * addPlane(const char *name)
Creates a PlaneField 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.
MatrixField * addMatrix(const char *name, const Matrix4 &value)
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.
DoubleField * addDouble(const char *name, double value)
Creates a DoubleField 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.
MLDataTypeField * addMLDataType(const char *name, MLDataType value)
Creates a MTDataTypeField with name and adds it to the container.
DoubleListField * addDoubleList(const char *name)
Creates an DoubleListField field with name and empty list value 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.
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...
Vector4Field * addVector4(const char *name, const Vector4 &value)
Creates a Vector4Field with name and adds it to the container.
Vector5Field * addVector5(const char *name)
Creates a Vector5Field with name and adds it to the container.
ColorField * addColor(const char *name)
Creates a ColorField 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.
Vector6Field * addVector6(const char *name)
Creates a Vector6Field 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.
RotationField * addRotation(const char *name)
Creates a RotationField 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.
Matrix6Field * addMatrix6(const char *name, const Matrix6 &value)
Creates a Matrix6Field 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.
std::string getFieldStringValue(const std::string &name) const
Returns the string value of the field with name if it is found.
~FieldContainer() override
Destructor: Deletes all added fields.
PlaneField * addPlane(const char *name, const Plane &value)
Creates a PlaneField with name and adds it to the container.
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.
Vector10Field * addVector10(const char *name)
Creates a Vector10Field 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.
BaseField * addBase(const char *name, Base *value)
Creates a Base field 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.
Vector4Field * addVector4(const char *name, double x, double y, double z, double w)
Creates a Vector4Field with name and adds it to the container.
Strength
Enumeration type describing the strength of notifications.
Base class for all fields used in the ML.
Field to encapsulate a float value.
Field to encapsulate an ML vector ImageVector with 6 integer components.
Field to encapsulate an integer value.
Field to encapsulate an MLDataType value.
Field encapsulating a 2x2 matrix.
Field encapsulating a 3x3 matrix.
Field to encapsulate a 4x4 matrix.
Field encapsulating a 5x5 matrix.
Field encapsulating a 6x6 matrix.
Field to encapsulate a 4x4 matrix, same as Matrix4Field for backward compatibility.
Field without value for notifications.
Field to encapsulate a vector of 4 double values representing a plane with all properties of Vector4F...
Class defining a plane in 3D.
Field to encapsulate a void pointer to arbitrary data.
Field to encapsulate an increasing float value from range [0,1].
Field to encapsulate a vector of 4 double values representing a rotation with all properties of Vecto...
Class to handle Rotations (internally the rotation is stored as a unit quaternion)
Field to encapsulate a pointer to an SoNode instance of OpenInventor.
Field to encapsulate a string value.
Field to encapsulate an ML integer SubimgBox.
Field to encapsulate an ML double SubimgBox.
SubImageBoxd - SubImageBox with coordinates of float data type.
Templated version of BaseField which only stores the template type as pointer.
TypedEnumField is used to encapsulate a C++ enum value and work with a real enum value instead of int...
Field to encapsulate any of the registered ML types.
Field to encapsulate a vector of 10 double values.
Field to encapsulate a vector of 2 double values.
Field to encapsulate a vector of 3 double values.
Field to encapsulate a vector of 4 double values.
Field to encapsulate a vector of 5 double values.
Field to encapsulate a vector of 6 double values.
#define ML_DISALLOW_COPY_AND_ASSIGN(className)
Defines basic macros.
#define ML_ABSTRACT_CLASS_HEADER(className)
Same like ML_ABSTRACT_CLASS_HEADER_EXPORTED with a non existing export symbol.
MLint32 MLDataType
MLDataType.
#define MLEXPORT
To export symbols from a dll/shared object, we need to mark them with the MLEXPORT symbol.
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
MLEXPORT std::ostream & operator<<(std::ostream &s, const ml::Field &v)
Overloads the operator "<<" for stream output of Field objects.