13 #ifndef ML_FIELD_CONTAINER_H
14 #define ML_FIELD_CONTAINER_H
40 #if ML_DEPRECATED_SINCE(3,5,0)
41 #define ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER ML_DEPRECATED
45 #if ML_DEPRECATED_SINCE(3,5,0)
49 class OutputConnector;
77 std::string
whoAmI(
bool withInstanceName =
true)
const;
110 EnumField*
addEnum(
const char* name,
const std::vector<std::string> &enumerationItemNames);
135 template<
typename EnumType>
175 template <
typename T>
183 template <
typename T>
186 return addBaseWithAllowedType(name, value.get());
190 template <
typename T>
200 template <
typename T>
208 template <
typename T>
413 bool removeField(
Field* field);
418 void enableNotifications(
bool flag);
429 std::vector <Field*> _fields;
445 #if ML_DEPRECATED_SINCE(3,5,0)
462 LongDoubleField* addLongDouble(
const char* name);
465 LongDoubleField* addLongDouble(
const char* name,
MLldouble value);
473 inline ML_DEPRECATED Vector3Field* addVec3f(
const char* name) {
return addVector3(name); }
477 inline ML_DEPRECATED Vector4Field* addVec4f(
const char* name) {
return addVector4(name); }
481 inline ML_DEPRECATED Vector5Field* addVec5f(
const char* name) {
return addVector5(name); }
484 inline ML_DEPRECATED Vector6Field* addVec6f(
const char* name) {
return addVector6(name); }
488 inline ML_DEPRECATED Vector10Field* addVec10f(
const char* name) {
return addVector10(name); }
491 inline ML_DEPRECATED ImageVectorField* addVector(
const char* name) {
return addImageVector(name); }
495 inline ML_DEPRECATED SubImageBoxField* addSubImgBox(
const char* name) {
return addSubImageBox(name); }
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); }
523 #ifdef ML_DEPRECATED_FIELDS_WITH_VALUE_POINTER
533 ML_DEPRECATED BoolField* addDeprecatedBool(
const char* name,
bool *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);
575 ML_DEPRECATED SubImageBoxdField* addDeprecatedSubImageBoxd(
const char* name, SubImageBoxd *var0);
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).
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.
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.
Base class for an image processing module of the ML.
Field without value for notifications.
Field to encapsulate a pointer to an output connector which represents a module output.
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.
void setValue(T *basePointerValue)
Sets the value of the field to basePointerValue.
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.
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.
MLint64 MLint
A signed ML integer type with at least 64 bits used for index calculations on very large images even ...
Tvec4< MLdouble > Vector4
A vector with 4 components of type double.
Tmat4< MLdouble > Matrix4
The standard 4x4 matrix of type double.
Tvec3< MLdouble > Vector3
A vector with 3 components of type double.
Tvec6< MLdouble > Vector6
A vector with 6 components of type double.
Tvec2< MLdouble > Vector2
A vector with 2 components of type double.
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.