1 // Name : ModelHighAPI_Interface.h
5 // 17/05/16 - Sergey POKHODENKO - Creation of the file
7 #ifndef SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_
8 #define SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_
10 //--------------------------------------------------------------------------------------
11 #include "ModelHighAPI.h"
18 //--------------------------------------------------------------------------------------
19 class ModelAPI_Feature;
20 class ModelAPI_Result;
21 class ModelHighAPI_Selection;
22 class ModelHighAPI_Dumper;
23 //--------------------------------------------------------------------------------------
24 /**\class ModelHighAPI_Interface
26 * \brief Base class for feature interfaces
28 class ModelHighAPI_Interface
33 explicit ModelHighAPI_Interface(const std::shared_ptr<ModelAPI_Feature> & theFeature);
36 virtual ~ModelHighAPI_Interface();
38 /// Return ModelAPI_Feature
40 std::shared_ptr<ModelAPI_Feature> feature() const;
42 /// If feature is composite return intefrace for sub-feature by zero-based index,
43 /// or empty pointer if feature not composite or does not have sub-feature with such index.
45 std::shared_ptr<ModelHighAPI_Interface> subFeature(const int theIndex) const;
47 /// Shortcut for feature()->getKind()
49 const std::string& getKind() const;
51 /// Shortcut for feature()->execute()
52 /// \param isForce start execution of feature instead of sending events
54 void execute(bool isForce = false);
56 /// Shortcut for feature()->data()->setName()
58 void setName(const std::string& theName);
60 // TODO(spo): rename to selectAll()
61 /// Return all objects of the feature
63 virtual std::list<ModelHighAPI_Selection> result() const;
65 /// Return default result. Default implementation feature()->lastResult()
67 virtual std::shared_ptr<ModelAPI_Result> defaultResult() const;
69 /// Throw exception to event loop
71 void throwException(const std::string & theDescription);
73 /// Return name of getter for specified attribute
75 const std::string& attributeGetter(const std::string& theAttrName);
77 /// Dump wrapped feature
79 virtual void dump(ModelHighAPI_Dumper& theDumper) const {}
82 std::shared_ptr<ModelAPI_Feature> myFeature;
84 std::map<std::string, std::string> myAttrGetter; ///< names of attributes and their getters
87 //! Pointer on Interface object
88 typedef std::shared_ptr<ModelHighAPI_Interface> InterfacePtr;
90 //--------------------------------------------------------------------------------------
91 //--------------------------------------------------------------------------------------
92 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_INTERFACE_H_ */