Ignore:
Timestamp:
03/22/18 10:43:20 (6 years ago)
Author:
yushan
Message:

branch_openmp merged with XIOS_DEV_CMIP6@1459

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/branch_openmp/src/declare_attribute.hpp

    r778 r1460  
    33 
    44/// ///////////////////////////// Macros ///////////////////////////// /// 
    5 #define DECLARE_ATTRIBUTE(type, name)                             \ 
     5#define DECLARE_ATTRIBUTE(type, name, ...)                        \ 
    66   class name##_attr : public CAttributeTemplate<type>            \ 
    77   {                                                              \ 
    88      public :                                                    \ 
    9          name##_attr(void)                                          \ 
     9         name##_attr(void)                                        \ 
    1010            : CAttributeTemplate<type>                            \ 
    1111            (#name, *CAttributeMap::Current)                      \ 
     
    1313         type operator=(const type & value)                       \ 
    1414         { return (CAttributeTemplate<type>::operator=(value)); } \ 
    15          virtual ~name##_attr(void)                                 \ 
     15         virtual bool doSend() const { return helper(__VA_ARGS__); }   \ 
     16         bool helper(bool returnTrue=true) const { return returnTrue; }   \ 
     17         virtual ~name##_attr(void)                               \ 
    1618         { /* Ne rien faire de plus */ }                          \ 
    1719   } name; 
    1820 
    19 #define DECLARE_ATTRIBUTE_PRIVATE(type, name)                    \ 
    20    class name##_attr : public CAttributeTemplate<type>           \ 
     21#define DECLARE_ATTRIBUTE_PRIVATE(type, name, ...)                \ 
     22   class name##_attr : public CAttributeTemplate<type>            \ 
    2123   {                                                              \ 
    2224      public :                                                    \ 
    23          name##_attr(void)                                          \ 
     25         name##_attr(void)                                        \ 
    2426            : CAttributeTemplate<type>                            \ 
    2527            (#name, *CAttributeMap::Current)                      \ 
     
    2931         virtual bool isPublic() const                            \ 
    3032         { return false; }                                        \ 
     33         virtual bool doSend() const { return helper(__VA_ARGS__); }   \ 
     34         bool helper(bool returnTrue=true) const { return returnTrue; }   \ 
    3135         virtual ~name##_attr(void)                               \ 
    3236         { /* Ne rien faire de plus */ }                          \ 
    3337   } name; 
    3438 
    35 #define DECLARE_ARRAY(T_num, T_rank, name)                        \ 
     39#define DECLARE_ARRAY(T_num, T_rank, name, ...)                   \ 
    3640   class name##_attr : public CAttributeArray<T_num, T_rank>      \ 
    3741   {                                                              \ 
     
    3943         using CAttributeArray<T_num, T_rank>::operator = ;       \ 
    4044         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {} \ 
     45         virtual bool doSend() const { return helper(__VA_ARGS__); }   \ 
     46         bool helper(bool returnTrue=true) const { return returnTrue; }   \ 
    4147         virtual ~name##_attr(void) {}                            \ 
    4248   } name; 
    4349 
    44 #define DECLARE_ARRAY_PRIVATE(T_num, T_rank, name)                        \ 
     50#define DECLARE_ARRAY_PRIVATE(T_num, T_rank, name, ...)           \ 
    4551   class name##_attr : public CAttributeArray<T_num, T_rank>      \ 
    4652   {                                                              \ 
     
    5056         virtual bool isPublic() const                            \ 
    5157         { return false; }                                        \ 
     58         virtual bool doSend() const { return helper(__VA_ARGS__); }   \ 
     59         bool helper(bool returnTrue=true) const { return returnTrue; }   \ 
    5260         virtual ~name##_attr(void) {}                            \ 
    5361   } name; 
    5462 
    55 #define DECLARE_CLASS_ENUM(name)                                   \ 
    56    class name##_attr : public CAttributeEnum<Enum_##name>          \ 
     63#define DECLARE_CLASS_ENUM(name, ...)                             \ 
     64   class name##_attr : public CAttributeEnum<Enum_##name>         \ 
    5765   {                                                              \ 
    5866      public :                                                    \ 
    5967         name##_attr(void) : CAttributeEnum<Enum_##name>(#name, *CAttributeMap::Current) { } \ 
    60          virtual ~name##_attr(void) {}                           \ 
     68         virtual bool doSend() const { return helper(__VA_ARGS__); }   \ 
     69         bool helper(bool returnTrue=true) const { return returnTrue; }   \ 
     70         virtual ~name##_attr(void) {}                            \ 
    6171   } name; 
    6272 
     
    7181   DECLARE_CLASS_ENUM(name) 
    7282 
    73 #define DECLARE_ENUM3(name,arg1,arg2,arg3)                             \ 
     83#define DECLARE_ENUM3(name,arg1,arg2,arg3)                        \ 
    7484   class Enum_##name                                              \ 
    7585   {                                                              \ 
    7686     public:                                                      \ 
    77      enum t_enum { arg1=0, arg2, arg3} ;                                \ 
     87     enum t_enum { arg1=0, arg2, arg3} ;                          \ 
    7888     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3 } ; return enumStr ; }   \ 
    7989     int getSize(void) const { return 3 ; }                       \ 
     
    8191   DECLARE_CLASS_ENUM(name) 
    8292 
    83 #define DECLARE_ENUM4(name,arg1,arg2,arg3,arg4)                             \ 
     93#define DECLARE_ENUM4(name,arg1,arg2,arg3,arg4)                   \ 
    8494   class Enum_##name                                              \ 
    8595   {                                                              \ 
    8696     public:                                                      \ 
    87      enum t_enum { arg1=0, arg2, arg3,arg4} ;                                \ 
     97     enum t_enum { arg1=0, arg2, arg3,arg4} ;                     \ 
    8898     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4 } ; return enumStr ; }   \ 
    8999     int getSize(void) const { return 4 ; }                       \ 
     
    91101   DECLARE_CLASS_ENUM(name) 
    92102 
    93 #define DECLARE_ENUM5(name,arg1,arg2,arg3,arg4,arg5)                             \ 
     103#define DECLARE_ENUM5(name,arg1,arg2,arg3,arg4,arg5)              \ 
    94104   class Enum_##name                                              \ 
    95105   {                                                              \ 
    96106     public:                                                      \ 
    97      enum t_enum { arg1=0, arg2, arg3,arg4,arg5} ;                                \ 
     107     enum t_enum { arg1=0, arg2, arg3,arg4,arg5} ;                \ 
    98108     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5 } ; return enumStr ; }   \ 
    99109     int getSize(void) const { return 5 ; }                       \ 
     
    101111   DECLARE_CLASS_ENUM(name) 
    102112 
    103 #define DECLARE_ENUM6(name,arg1,arg2,arg3,arg4,arg5,arg6)                             \ 
     113#define DECLARE_ENUM6(name,arg1,arg2,arg3,arg4,arg5,arg6)         \ 
    104114   class Enum_##name                                              \ 
    105115   {                                                              \ 
    106116     public:                                                      \ 
    107      enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6} ;                                \ 
     117     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6} ;           \ 
    108118     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6 } ; return enumStr ; }   \ 
    109119     int getSize(void) const { return 6 ; }                       \ 
     
    111121   DECLARE_CLASS_ENUM(name) 
    112122 
    113 #define DECLARE_ENUM7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7)                             \ 
     123#define DECLARE_ENUM7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7)    \ 
    114124   class Enum_##name                                              \ 
    115125   {                                                              \ 
    116126     public:                                                      \ 
    117      enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7} ;                                \ 
     127     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7} ;      \ 
    118128     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7 } ; return enumStr ; }   \ 
    119129     int getSize(void) const { return 7 ; }                       \ 
     
    125135   {                                                              \ 
    126136     public:                                                      \ 
    127      enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8} ;                                \ 
     137     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8} ; \ 
    128138     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8 } ; return enumStr ; }   \ 
    129139     int getSize(void) const { return 8 ; }                       \ 
Note: See TracChangeset for help on using the changeset viewer.