Salome HOME
Fix tests MakeBrick2 & MakeBrick3. Fix Box macro feature.
[modules/shaper.git] / src / ModelHighAPI / ModelHighAPI_Macro.h
index a2ef23c6bc7de12167245e82d162be983556b7ac..86e1bec88a9629da335fabde88d26612157d1ac5 100644 (file)
@@ -8,20 +8,23 @@
 #define SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_
 
 //--------------------------------------------------------------------------------------
-#include <ModelAPI_Feature.h>
-
+#include <GeomDataAPI_Dir.h>
+#include <GeomDataAPI_Point.h>
+#include <GeomDataAPI_Point2D.h>
 //--------------------------------------------------------------------------------------
-// See ModelAPI_Feature functions
-#define FN_ModelAPI_AttributeBoolean boolean
-#define FN_ModelAPI_AttributeDocRef document
-#define FN_ModelAPI_AttributeDouble real
-#define FN_ModelAPI_AttributeInteger integer
-#define FN_ModelAPI_AttributeRefAttr refattr
-#define FN_ModelAPI_AttributeReference reference
-#define FN_ModelAPI_AttributeRefList reflist
-#define FN_ModelAPI_AttributeSelection selection
-#define FN_ModelAPI_AttributeSelectionList selectionList
-#define FN_ModelAPI_AttributeString string
+#include <ModelAPI_AttributeBoolean.h>
+#include <ModelAPI_AttributeDocRef.h>
+#include <ModelAPI_AttributeDouble.h>
+#include <ModelAPI_AttributeIntArray.h>
+#include <ModelAPI_AttributeInteger.h>
+#include <ModelAPI_AttributeRefAttr.h>
+#include <ModelAPI_AttributeRefAttrList.h>
+#include <ModelAPI_AttributeReference.h>
+#include <ModelAPI_AttributeRefList.h>
+#include <ModelAPI_AttributeSelection.h>
+#include <ModelAPI_AttributeSelectionList.h>
+#include <ModelAPI_AttributeString.h>
+#include <ModelAPI_Feature.h>
 
 //--------------------------------------------------------------------------------------
 #define VAR_NAME(NAME) my##NAME
@@ -38,7 +41,7 @@
 //--------------------------------------------------------------------------------------
 // Used in INTERFACE_N inside START_INIT/END_INIT for set variable with attribute received from feature
 #define SET_ATTRIBUTE(NAME, TYPE, ATT_NAME) \
-  VAR_NAME(NAME) = feature()->FN_##TYPE(ATT_NAME); \
+  VAR_NAME(NAME) = std::dynamic_pointer_cast<TYPE>(feature()->attribute(ATT_NAME)); \
   if (!VAR_NAME(NAME)) \
     return false;
 
     END_INIT() \
   public:
 
+//--------------------------------------------------------------------------------------
+#define INTERFACE_10(KIND, \
+                     N_0, AN_0, T_0, C_0, \
+                     N_1, AN_1, T_1, C_1, \
+                     N_2, AN_2, T_2, C_2, \
+                     N_3, AN_3, T_3, C_3, \
+                     N_4, AN_4, T_4, C_4, \
+                     N_5, AN_5, T_5, C_5, \
+                     N_6, AN_6, T_6, C_6, \
+                     N_7, AN_7, T_7, C_7, \
+                     N_8, AN_8, T_8, C_8, \
+                     N_9, AN_9, T_9, C_9) \
+  public: \
+    INTERFACE_COMMON(KIND) \
+    DEFINE_ATTRIBUTE(N_0, T_0, C_0) \
+    DEFINE_ATTRIBUTE(N_1, T_1, C_1) \
+    DEFINE_ATTRIBUTE(N_2, T_2, C_2) \
+    DEFINE_ATTRIBUTE(N_3, T_3, C_3) \
+    DEFINE_ATTRIBUTE(N_4, T_4, C_4) \
+    DEFINE_ATTRIBUTE(N_5, T_5, C_5) \
+    DEFINE_ATTRIBUTE(N_6, T_6, C_6) \
+    DEFINE_ATTRIBUTE(N_7, T_7, C_7) \
+    DEFINE_ATTRIBUTE(N_8, T_8, C_8) \
+    DEFINE_ATTRIBUTE(N_9, T_9, C_9) \
+  protected: \
+    START_INIT() \
+      SET_ATTRIBUTE(N_0, T_0, AN_0) \
+      SET_ATTRIBUTE(N_1, T_1, AN_1) \
+      SET_ATTRIBUTE(N_2, T_2, AN_2) \
+      SET_ATTRIBUTE(N_3, T_3, AN_3) \
+      SET_ATTRIBUTE(N_4, T_4, AN_4) \
+      SET_ATTRIBUTE(N_5, T_5, AN_5) \
+      SET_ATTRIBUTE(N_6, T_6, AN_6) \
+      SET_ATTRIBUTE(N_7, T_7, AN_7) \
+      SET_ATTRIBUTE(N_8, T_8, AN_8) \
+      SET_ATTRIBUTE(N_9, T_9, AN_9) \
+    END_INIT() \
+  public:
+
 //--------------------------------------------------------------------------------------
 #endif /* SRC_MODELHIGHAPI_MODELHIGHAPI_MACRO_H_ */