1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
3 // File: CollectionAPI_Field.h
4 // Created: 16 Nov 2016
5 // Author: Mikhail Ponikarov
7 #ifndef CollectionAPI_Field_H_
8 #define CollectionAPI_Field_H_
10 #include "CollectionAPI.h"
12 #include <CollectionPlugin_Field.h>
14 #include <ModelHighAPI_Interface.h>
15 #include <ModelHighAPI_Macro.h>
17 class ModelHighAPI_Dumper;
18 class ModelHighAPI_Selection;
19 class ModelHighAPI_Integer;
20 class ModelHighAPI_ComponentValue;
22 /// \class CollectionAPI_Field
23 /// \inField CPPHighAPI
24 /// \brief Interface for Field feature.
25 class CollectionAPI_Field: public ModelHighAPI_Interface
28 /// Constructor without values.
30 explicit CollectionAPI_Field(const std::shared_ptr<ModelAPI_Feature>& theFeature);
34 virtual ~CollectionAPI_Field();
36 INTERFACE_7(CollectionPlugin_Field::ID(),
37 selection, CollectionPlugin_Field::SELECTED_ID(),
38 ModelAPI_AttributeSelectionList, /** Field selection list*/,
39 componentsNum, CollectionPlugin_Field::COMPONENTS_NB_ID(),
40 ModelAPI_AttributeInteger, /** Number of components integer */,
41 componentsNames, CollectionPlugin_Field::COMPONENTS_NAMES_ID(),
42 ModelAPI_AttributeStringArray, /** Names of components list of strings */,
43 valuesType, CollectionPlugin_Field::VALUES_TYPE_ID(),
44 ModelAPI_AttributeInteger, /** Type of the values enumeration */,
45 stepsNum, CollectionPlugin_Field::STEPS_NB_ID(),
46 ModelAPI_AttributeInteger, /** Number of steps integer */,
47 stamps, CollectionPlugin_Field::STAMPS_ID(),
48 ModelAPI_AttributeIntArray, /** Identifiers of stamps */,
49 values, CollectionPlugin_Field::VALUES_ID(), ModelAPI_AttributeTables /** Table of values */,
52 /// Set selected objects.
54 void setSelection(const std::list<ModelHighAPI_Selection>& theFieldList);
55 /// Set number of components
57 void setComponentsNum(const ModelHighAPI_Integer& theNum);
58 /// Set names of components
60 void setComponentsNames(const std::list<std::string>& theNames);
61 /// Set type of values
63 void setValuesType(const std::string& theType);
64 /// Set number of steps
66 void setStepsNum(const ModelHighAPI_Integer& theSteps);
67 /// Set stamps identifiers
69 void setStamps(const std::list<ModelHighAPI_Integer>& theStamps);
70 /// Sets the double values of specific step
72 void addStep(const ModelHighAPI_Integer& theStepNum, const ModelHighAPI_Integer& theStamp,
73 const std::list<std::list<double> >& theComponents);
74 /// Sets the integer values of specific step
76 void addStep(const ModelHighAPI_Integer& theStepNum, const ModelHighAPI_Integer& theStamp,
77 const std::list<std::list<int> >& theComponents);
78 /// Sets the string values of specific step
80 void addStep(const ModelHighAPI_Integer& theStepNum, const ModelHighAPI_Integer& theStamp,
81 const std::list<std::list<std::string> >& theComponents);
82 /// Sets the boolean values of specific step
84 void addStep(const ModelHighAPI_Integer& theStepNum, const ModelHighAPI_Integer& theStamp,
85 const std::list<std::list<bool> >& theComponents);
87 /// Dump wrapped feature
89 virtual void dump(ModelHighAPI_Dumper& theDumper) const;
92 /// Pointer on Field object.
93 typedef std::shared_ptr<CollectionAPI_Field> FieldPtr;
95 /// \inField CPPHighAPI
96 /// \brief Create Field feature.
98 FieldPtr addField(const std::shared_ptr<ModelAPI_Document>& thePart,
99 const ModelHighAPI_Integer& theStepsNum,
100 const std::string& theComponentType,
101 const int theComponentsNum,
102 const std::list<std::string>& theComponentNames,
103 const std::list<ModelHighAPI_Selection>& theSelectionList);
105 #endif // CollectionAPI_Field_H_