source: XIOS/dev/dev_ym/XIOS_COUPLING/src/declare_attribute.hpp @ 2230

Last change on this file since 2230 was 2120, checked in by ymipsl, 3 years ago

remove attempt to visualize blitz array throw totalview API.
YM

  • Property copyright set to
    Software name : XIOS (Xml I/O Server)
    http://forge.ipsl.jussieu.fr/ioserver
    Creation date : January 2009
    Licence : CeCCIL version2
    see license file in root directory : Licence_CeCILL_V2-en.txt
    or http://www.cecill.info/licences/Licence_CeCILL_V2-en.html
    Holder : CEA/LSCE (Laboratoire des Sciences du CLimat et de l'Environnement)
    CNRS/IPSL (Institut Pierre Simon Laplace)
    Project Manager : Yann Meurdesoif
    yann.meurdesoif@cea.fr
File size: 10.5 KB
Line 
1#ifndef __XIOS_DECLARE_ATTRIBUTE__
2#define __XIOS_DECLARE_ATTRIBUTE__
3
4/// ///////////////////////////// Macros ///////////////////////////// ///
5#define DECLARE_ATTRIBUTE(type, name, ...)                        \
6   class name##_attr : public CAttributeTemplate<type>            \
7   {                                                              \
8      public :                                                    \
9         name##_attr(void)                                        \
10            : CAttributeTemplate<type>                            \
11            (#name, *CAttributeMap::Current)                      \
12         { /* Ne rien faire de plus */ }                          \
13         type operator=(const type & value)                       \
14         { return (CAttributeTemplate<type>::operator=(value)); } \
15         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
16         bool helper(bool returnTrue=true) const { return returnTrue; }   \
17         virtual ~name##_attr(void)                               \
18         { /* Ne rien faire de plus */ }                          \
19   } name;
20
21#define DECLARE_ATTRIBUTE_PRIVATE(type, name, ...)                \
22   class name##_attr : public CAttributeTemplate<type>            \
23   {                                                              \
24      public :                                                    \
25         name##_attr(void)                                        \
26            : CAttributeTemplate<type>                            \
27            (#name, *CAttributeMap::Current)                      \
28         { /* Ne rien faire de plus */ }                          \
29         type operator=(const type & value)                       \
30         { return (CAttributeTemplate<type>::operator=(value)); } \
31         virtual bool isPublic() const                            \
32         { return false; }                                        \
33         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
34         bool helper(bool returnTrue=true) const { return returnTrue; }   \
35         virtual ~name##_attr(void)                               \
36         { /* Ne rien faire de plus */ }                          \
37   } name;
38
39#define DECLARE_ARRAY(T_num, T_rank, name, ...)                   \
40   class name##_attr : public CAttributeArray<T_num, T_rank>      \
41   {                                                              \
42      public :                                                    \
43         using CAttributeArray<T_num, T_rank>::operator = ;       \
44         bool alwaysFalse=false;\
45         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {} \
46         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
47         bool helper(bool returnTrue=true) const { return returnTrue; }   \
48         virtual ~name##_attr(void) {}                            \
49   } name;
50
51#define DECLARE_ARRAY_PRIVATE(T_num, T_rank, name, ...)           \
52   class name##_attr : public CAttributeArray<T_num, T_rank>      \
53   {                                                              \
54      public :                                                    \
55         using CAttributeArray<T_num, T_rank>::operator = ;       \
56         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {} \
57         virtual bool isPublic() const                            \
58         { return false; }                                        \
59         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
60         bool helper(bool returnTrue=true) const { return returnTrue; }   \
61         virtual ~name##_attr(void) {}                            \
62   } name;
63
64#define DECLARE_CLASS_ENUM(name, ...)                             \
65   class name##_attr : public CAttributeEnum<Enum_##name>         \
66   {                                                              \
67      public :                                                    \
68         name##_attr(void) : CAttributeEnum<Enum_##name>(#name, *CAttributeMap::Current) { } \
69         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
70         bool helper(bool returnTrue=true) const { return returnTrue; }   \
71         virtual ~name##_attr(void) {}                            \
72   } name;
73
74#define DECLARE_ENUM2(name,arg1,arg2)                             \
75   class Enum_##name                                              \
76   {                                                              \
77     public:                                                      \
78     enum t_enum { arg1=0, arg2} ;                                \
79     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2 } ; return enumStr ; }   \
80     int getSize(void) const { return 2 ; }                       \
81   } ;                                                            \
82   DECLARE_CLASS_ENUM(name)
83
84#define DECLARE_ENUM3(name,arg1,arg2,arg3)                        \
85   class Enum_##name                                              \
86   {                                                              \
87     public:                                                      \
88     enum t_enum { arg1=0, arg2, arg3} ;                          \
89     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3 } ; return enumStr ; }   \
90     int getSize(void) const { return 3 ; }                       \
91   } ;                                                            \
92   DECLARE_CLASS_ENUM(name)
93
94#define DECLARE_ENUM4(name,arg1,arg2,arg3,arg4)                   \
95   class Enum_##name                                              \
96   {                                                              \
97     public:                                                      \
98     enum t_enum { arg1=0, arg2, arg3,arg4} ;                     \
99     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4 } ; return enumStr ; }   \
100     int getSize(void) const { return 4 ; }                       \
101   } ;                                                            \
102   DECLARE_CLASS_ENUM(name)
103
104#define DECLARE_ENUM5(name,arg1,arg2,arg3,arg4,arg5)              \
105   class Enum_##name                                              \
106   {                                                              \
107     public:                                                      \
108     enum t_enum { arg1=0, arg2, arg3,arg4,arg5} ;                \
109     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5 } ; return enumStr ; }   \
110     int getSize(void) const { return 5 ; }                       \
111   } ;                                                            \
112   DECLARE_CLASS_ENUM(name)
113
114#define DECLARE_ENUM6(name,arg1,arg2,arg3,arg4,arg5,arg6)         \
115   class Enum_##name                                              \
116   {                                                              \
117     public:                                                      \
118     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6} ;           \
119     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6 } ; return enumStr ; }   \
120     int getSize(void) const { return 6 ; }                       \
121   } ;                                                            \
122   DECLARE_CLASS_ENUM(name)
123
124#define DECLARE_ENUM7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7)    \
125   class Enum_##name                                              \
126   {                                                              \
127     public:                                                      \
128     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7} ;      \
129     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7 } ; return enumStr ; }   \
130     int getSize(void) const { return 7 ; }                       \
131   } ;                                                            \
132   DECLARE_CLASS_ENUM(name)
133
134#define DECLARE_ENUM8(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)                             \
135   class Enum_##name                                              \
136   {                                                              \
137     public:                                                      \
138     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8} ; \
139     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8 } ; return enumStr ; }   \
140     int getSize(void) const { return 8 ; }                       \
141   } ;                                                            \
142   DECLARE_CLASS_ENUM(name)
143
144  #define DECLARE_ENUM9(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)                             \
145   class Enum_##name                                              \
146   {                                                              \
147     public:                                                      \
148     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8,arg9} ;                                \
149     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8,#arg9 } ; return enumStr ; }   \
150     int getSize(void) const { return 9 ; }                       \
151   } ;                                                            \
152   DECLARE_CLASS_ENUM(name)
153
154  #define DECLARE_TYPE(name)                                      \
155   class Enum_##name                                              \
156   {                                                              \
157     public:                                                      \
158     enum t_enum { t_bool=0, t_int16, t_int, t_int32, t_int64, t_float, t_double, t_string }; \
159     const char** getStr(void) const { static const char * enumStr[] = { "bool", "int16", "int", "int32", "int64", "float", "double", "string" }; return enumStr; } \
160     int getSize(void) const { return 8; }                        \
161   };                                                             \
162   DECLARE_CLASS_ENUM(name)
163
164#define BEGIN_DECLARE_ATTRIBUTE_MAP(type)                  \
165   class type##Attributes : public virtual CAttributeMap   \
166   {                                                       \
167      public :
168
169#define END_DECLARE_ATTRIBUTE_MAP(type)            \
170         type##Attributes (void) : CAttributeMap() \
171         { /* Ne rien faire de plus */ }           \
172         virtual ~type##Attributes (void)          \
173         { /* Ne rien faire de plus */ }           \
174   };
175
176#endif // __XIOS_DECLARE_ATTRIBUTE__
Note: See TracBrowser for help on using the repository browser.