[152] | 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 | };; ;; |
---|