13#ifndef ML_FIELD_CONTAINER_H
14#define ML_FIELD_CONTAINER_H
69 std::string
whoAmI(
bool withInstanceName =
true)
const;
102 EnumField*
addEnum(
const char* name,
const std::vector<std::string> &enumerationItemNames);
127 template<
typename EnumType>
167 template <
typename T>
175 template <
typename T>
182 template <
typename T>
192 template <
typename T>
200 template <
typename T>
405 bool removeField(
Field* field);
410 void enableNotifications(
bool flag);
421 std::vector <Field*> _fields;
void setBaseValueAndAddAllowedType(T *value)
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
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()
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)
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)
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)
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)
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)
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)
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()
std::string whoAmI(bool withInstanceName=true) const
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
~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.
Class defining a plane in 3D.
Class to handle Rotations (internally, the rotation is stored as a unit quaternion).
void setValue(T *basePointerValue)
Sets the value of the field to basePointerValue.
#define ML_DISALLOW_COPY_AND_ASSIGN(className)
Defines basic macros.
#define ML_ABSTRACT_CLASS_HEADER(className)
#define MLEXPORT
Code it as import symbol if compiled elsewhere.
Tvec5< MLdouble > Vector5
A vector with five components of type double.
Tvec10< MLdouble > Vector10
A vector with ten components of type double.
Tvec4< MLdouble > Vector4
A vector with four components of type double.
Tmat4< MLdouble > Matrix4
The standard 4x4 matrix of type double.
Tvec3< MLdouble > Vector3
A vector with three components of type double.
Tmat2< MLdouble > Matrix2
The standard 2x2 matrix of type double.
Tvec6< MLdouble > Vector6
A vector with six components of type double.
Tvec2< MLdouble > Vector2
A vector with two components of type double.
Tmat3< MLdouble > Matrix3
The standard 3x3 matrix of type double.
TSubImageBox< MLint > SubImageBox
Defines 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 that is used by the ML for indexing and coordinates.
Tmat5< MLdouble > Matrix5
The standard 5x5 matrix of type double.
Tmat6< MLdouble > Matrix6
The standard 6x6 matrix of type double.
MLEXPORT std::ostream & operator<<(std::ostream &s, const ml::Field &v)
Overloads the operator '<<' for stream output of Field objects.