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 | };; ;; |
---|