source: XMLIO_V2/dev/common/src/xmlio/iface/macro.inc @ 219

Last change on this file since 219 was 219, checked in by hozdoba, 13 years ago

Préparation nouvelle arborescence

File size: 4.6 KB
Line 
1#define MAKE_STRING(var_name, str_arg, int_arg) ;;     \
2   StdString var_name##temp; ;;                        \
3   StdSize d, f = 0; ;;                                \
4   if (int_arg != -1) ;;                               \
5   { ;;                                                \
6      var_name##temp.append (str_arg, int_arg); ;;     \
7      d = var_name##temp.find_first_not_of(' '); ;;    \
8      f = var_name##temp.find_last_not_of (' '); ;;    \
9   } ;;                                                \
10   StdString var_name = (int_arg != -1)                \
11                     ? var_name##temp.substr(d, f-d+1) \
12                     : "" ; ;
13
14#define MAKE_ARRAY(value, valuetype, numdims, extent)            \
15   boost::shared_ptr<CArray<valuetype, numdims> > value##_val ;; \
16   (new CArray<valuetype, numdims>(boost::extents extent));   ;; \
17   std::copy(value, &(value[value##_val->num_elements()]), value##_val->data()); ;
18
19
20//-------------------------------
21
22#define iarg_bool(name)      , const bool   * name
23#define iarg_int(name)       , const int    * name
24#define iarg_double(name)    , const double * name
25#define iarg_StdString(name) , const char   * name iarg_int(name##_size)
26
27#define iarg_ARRAY1(name) name iarg_int(name##_extent1)
28#define iarg_ARRAY2(name) iarg_ARRAY1(name) iarg_int(name##_extent2)
29#define iarg_ARRAY3(name) iarg_ARRAY2(name) iarg_int(name##_extent3)
30#define iarg_ARRAY(type, numdim) , const type *  iarg_ARRAY##numdim
31
32//--------------------------------
33#define dec_bool(name)      bool   name##_val = *name;
34#define dec_int(name)       int    name##_val = *name;
35#define dec_double(name)    double name##_val = *name;
36#define dec_StdString(name) MAKE_STRING(name##_val, name, *name##_size);
37
38//-
39
40#define dec_double1(name)     \
41   dec_int(name##_extent1) ;; \
42   MAKE_ARRAY(name, double, 1, [name##_extent1##_val]);
43
44#define dec_double2(name)     \
45   dec_int(name##_extent1) ;; \
46   dec_int(name##_extent2) ;; \
47   MAKE_ARRAY(name, double, 2, [name##_extent1##_val][name##_extent2##_val]);
48
49#define dec_double3(name)     \
50   dec_int(name##_extent1) ;; \
51   dec_int(name##_extent2) ;; \
52   dec_int(name##_extent3) ;; \
53   MAKE_ARRAY(name, double, 3, [name##_extent1##_val][name##_extent2##_val])[name##_extent3##_val]);
54
55//-
56
57#define dec_int1(name)        \
58   dec_int(name##_extent1) ;; \
59   MAKE_ARRAY(name, int, 1, [name##_extent1##_val]);
60
61#define dec_int2(name)        \
62   dec_int(name##_extent1) ;; \
63   dec_int(name##_extent2) ;; \
64   MAKE_ARRAY(name, int, 2, [name##_extent1##_val][name##_extent2##_val]);
65
66#define dec_int3(name)        \
67   dec_int(name##_extent1) ;; \
68   dec_int(name##_extent2) ;; \
69   dec_int(name##_extent3) ;; \
70   MAKE_ARRAY(name, int, 3, [name##_extent1##_val][name##_extent2##_val])[name##_extent3##_val]);
71
72//-
73
74#define dec_bool1(name)       \
75   dec_int(name##_extent1) ;; \
76   MAKE_ARRAY(name, bool, 1, [name##_extent1##_val]);
77
78#define dec_bool2(name)       \
79   dec_int(name##_extent1) ;; \
80   dec_int(name##_extent2) ;; \
81   MAKE_ARRAY(name, bool, 2, [name##_extent1##_val][name##_extent2##_val]);
82
83#define dec_bool3(name)       \
84   dec_int(name##_extent1) ;; \
85   dec_int(name##_extent2) ;; \
86   dec_int(name##_extent3) ;; \
87   MAKE_ARRAY(name, bool, 3, [name##_extent1##_val][name##_extent2##_val])[name##_extent3##_val]);
88
89//-
90
91#define dec_ARRAY(type, numdim) dec_##type##numdim
92
93//--------------------------------
94
95#define DECLARE_INTERFACE(class, type, name);;                    \
96   void xios_set_##class##_##name                                 \
97      (void * class##_hdl, int ftype iarg_##type(name));;         \
98   {;;                                                            \
99      dec_##type(name) ;;                                         \
100      if (class##_hdl != NULL) ;;                                 \
101      {;;                                                         \
102         if (ftype < GAXIS);;                                     \
103         {;;                                                      \
104            c##class * class##_hdl_ = (c##class *) class##_hdl; ;;\
105            class##_hdl_->name.setValue(name##_val); ;;           \
106         };;                                                      \
107         else;;                                                   \
108         {;;                                                      \
109            c##class##group * class##_hdl_;;                      \
110              = (c##class##group *) class##_hdl; ;;               \
111            class##_hdl_->name.setValue(name##_val); ;;           \
112         };;                                                      \
113      };;                                                         \
114   };; ;;
Note: See TracBrowser for help on using the repository browser.