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

Last change on this file since 1878 was 1875, checked in by ymipsl, 4 years ago

XIOS coupling branch
Some updates.

First coupling test is beginning to work...

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.8 KB
RevLine 
[591]1#ifndef __XIOS_DECLARE_ATTRIBUTE__
2#define __XIOS_DECLARE_ATTRIBUTE__
[219]3
4/// ///////////////////////////// Macros ///////////////////////////// ///
[1025]5#define DECLARE_ATTRIBUTE(type, name, ...)                        \
[369]6   class name##_attr : public CAttributeTemplate<type>            \
7   {                                                              \
[219]8      public :                                                    \
[1025]9         name##_attr(void)                                        \
[219]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)); } \
[1229]15         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
[1025]16         bool helper(bool returnTrue=true) const { return returnTrue; }   \
17         virtual ~name##_attr(void)                               \
[219]18         { /* Ne rien faire de plus */ }                          \
19   } name;
20
[1025]21#define DECLARE_ATTRIBUTE_PRIVATE(type, name, ...)                \
22   class name##_attr : public CAttributeTemplate<type>            \
[775]23   {                                                              \
24      public :                                                    \
[1025]25         name##_attr(void)                                        \
[775]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)); } \
[778]31         virtual bool isPublic() const                            \
[775]32         { return false; }                                        \
[1229]33         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
[1025]34         bool helper(bool returnTrue=true) const { return returnTrue; }   \
[775]35         virtual ~name##_attr(void)                               \
36         { /* Ne rien faire de plus */ }                          \
37   } name;
38
[1025]39#define DECLARE_ARRAY(T_num, T_rank, name, ...)                   \
[369]40   class name##_attr : public CAttributeArray<T_num, T_rank>      \
41   {                                                              \
42      public :                                                    \
[415]43         using CAttributeArray<T_num, T_rank>::operator = ;       \
[1875]44         bool alwaysFalse=false;\
45         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {if (alwaysFalse) TV_ttf_display_type(this);} \
[1229]46         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
[1025]47         bool helper(bool returnTrue=true) const { return returnTrue; }   \
[1875]48         static int TV_ttf_display_type ( const name##_attr* array )\
49         {\
50           cout<<"TV_ttf_display_type"<<endl ;\
51           return CArray<T_num,T_rank>::TV_ttf_display_type((const CArray<T_num,T_rank>*)array) ;\
52         }\
[369]53         virtual ~name##_attr(void) {}                            \
[219]54   } name;
[775]55
[1025]56#define DECLARE_ARRAY_PRIVATE(T_num, T_rank, name, ...)           \
[775]57   class name##_attr : public CAttributeArray<T_num, T_rank>      \
58   {                                                              \
59      public :                                                    \
60         using CAttributeArray<T_num, T_rank>::operator = ;       \
61         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {} \
[778]62         virtual bool isPublic() const                            \
[775]63         { return false; }                                        \
[1229]64         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
[1025]65         bool helper(bool returnTrue=true) const { return returnTrue; }   \
[775]66         virtual ~name##_attr(void) {}                            \
67   } name;
68
[1025]69#define DECLARE_CLASS_ENUM(name, ...)                             \
70   class name##_attr : public CAttributeEnum<Enum_##name>         \
[369]71   {                                                              \
72      public :                                                    \
73         name##_attr(void) : CAttributeEnum<Enum_##name>(#name, *CAttributeMap::Current) { } \
[1229]74         virtual bool doSend() const { return helper(__VA_ARGS__); }   \
[1025]75         bool helper(bool returnTrue=true) const { return returnTrue; }   \
76         virtual ~name##_attr(void) {}                            \
[369]77   } name;
[775]78
[369]79#define DECLARE_ENUM2(name,arg1,arg2)                             \
80   class Enum_##name                                              \
81   {                                                              \
82     public:                                                      \
83     enum t_enum { arg1=0, arg2} ;                                \
84     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2 } ; return enumStr ; }   \
85     int getSize(void) const { return 2 ; }                       \
86   } ;                                                            \
87   DECLARE_CLASS_ENUM(name)
[775]88
[1025]89#define DECLARE_ENUM3(name,arg1,arg2,arg3)                        \
[369]90   class Enum_##name                                              \
91   {                                                              \
92     public:                                                      \
[1025]93     enum t_enum { arg1=0, arg2, arg3} ;                          \
[369]94     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3 } ; return enumStr ; }   \
95     int getSize(void) const { return 3 ; }                       \
96   } ;                                                            \
97   DECLARE_CLASS_ENUM(name)
[219]98
[1025]99#define DECLARE_ENUM4(name,arg1,arg2,arg3,arg4)                   \
[369]100   class Enum_##name                                              \
101   {                                                              \
102     public:                                                      \
[1025]103     enum t_enum { arg1=0, arg2, arg3,arg4} ;                     \
[369]104     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4 } ; return enumStr ; }   \
105     int getSize(void) const { return 4 ; }                       \
106   } ;                                                            \
107   DECLARE_CLASS_ENUM(name)
108
[1025]109#define DECLARE_ENUM5(name,arg1,arg2,arg3,arg4,arg5)              \
[369]110   class Enum_##name                                              \
111   {                                                              \
112     public:                                                      \
[1025]113     enum t_enum { arg1=0, arg2, arg3,arg4,arg5} ;                \
[369]114     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5 } ; return enumStr ; }   \
115     int getSize(void) const { return 5 ; }                       \
116   } ;                                                            \
117   DECLARE_CLASS_ENUM(name)
118
[1025]119#define DECLARE_ENUM6(name,arg1,arg2,arg3,arg4,arg5,arg6)         \
[369]120   class Enum_##name                                              \
121   {                                                              \
122     public:                                                      \
[1025]123     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6} ;           \
[369]124     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6 } ; return enumStr ; }   \
125     int getSize(void) const { return 6 ; }                       \
126   } ;                                                            \
127   DECLARE_CLASS_ENUM(name)
128
[1025]129#define DECLARE_ENUM7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7)    \
[369]130   class Enum_##name                                              \
131   {                                                              \
132     public:                                                      \
[1025]133     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7} ;      \
[369]134     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7 } ; return enumStr ; }   \
135     int getSize(void) const { return 7 ; }                       \
136   } ;                                                            \
137   DECLARE_CLASS_ENUM(name)
138
139#define DECLARE_ENUM8(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)                             \
140   class Enum_##name                                              \
141   {                                                              \
142     public:                                                      \
[1025]143     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8} ; \
[369]144     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8 } ; return enumStr ; }   \
145     int getSize(void) const { return 8 ; }                       \
146   } ;                                                            \
147   DECLARE_CLASS_ENUM(name)
148
149  #define DECLARE_ENUM9(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)                             \
150   class Enum_##name                                              \
151   {                                                              \
152     public:                                                      \
153     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8,arg9} ;                                \
154     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8,#arg9 } ; return enumStr ; }   \
[522]155     int getSize(void) const { return 9 ; }                       \
[369]156   } ;                                                            \
[775]157   DECLARE_CLASS_ENUM(name)
[369]158
[527]159  #define DECLARE_TYPE(name)                                      \
160   class Enum_##name                                              \
161   {                                                              \
162     public:                                                      \
163     enum t_enum { t_bool=0, t_int16, t_int, t_int32, t_int64, t_float, t_double, t_string }; \
164     const char** getStr(void) const { static const char * enumStr[] = { "bool", "int16", "int", "int32", "int64", "float", "double", "string" }; return enumStr; } \
165     int getSize(void) const { return 8; }                        \
166   };                                                             \
167   DECLARE_CLASS_ENUM(name)
[369]168
[219]169#define BEGIN_DECLARE_ATTRIBUTE_MAP(type)                  \
[369]170   class type##Attributes : public virtual CAttributeMap   \
171   {                                                       \
[219]172      public :
173
174#define END_DECLARE_ATTRIBUTE_MAP(type)            \
175         type##Attributes (void) : CAttributeMap() \
176         { /* Ne rien faire de plus */ }           \
177         virtual ~type##Attributes (void)          \
178         { /* Ne rien faire de plus */ }           \
179   };
180
[591]181#endif // __XIOS_DECLARE_ATTRIBUTE__
Note: See TracBrowser for help on using the repository browser.