Ignore:
Timestamp:
10/16/12 13:04:44 (12 years ago)
Author:
ymipsl
Message:

Major Update

  • redesign Type and attribute manipulation
  • add enumerate type and attribute
  • use blitz class array instead of boost class array

YM

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/declare_attribute.hpp

    r219 r369  
    55 
    66#define DECLARE_ATTRIBUTE(type, name)                             \ 
    7    class name##att : public CAttributeTemplate<type>{             \ 
     7   class name##_attr : public CAttributeTemplate<type>            \ 
     8   {                                                              \ 
    89      public :                                                    \ 
    9          name##att(void)                                          \ 
     10         name##_attr(void)                                          \ 
    1011            : CAttributeTemplate<type>                            \ 
    1112            (#name, *CAttributeMap::Current)                      \ 
     
    1314         type operator=(const type & value)                       \ 
    1415         { return (CAttributeTemplate<type>::operator=(value)); } \ 
    15          virtual ~name##att(void)                                 \ 
     16         virtual ~name##_attr(void)                                 \ 
    1617         { /* Ne rien faire de plus */ }                          \ 
    1718   } name; 
    1819 
    19 #define DECLARE_ATTRIBUTE_DEF(type, name, def)                     \ 
    20    class name##att : public CAttributeTemplate<type>{              \ 
    21       public :                                                     \ 
    22          name##att(void)                                           \ 
    23             : CAttributeTemplate<type>                             \ 
    24             (#name, def, *CAttributeMap::Current)                  \ 
    25          { /* Ne rien faire de plus */ }                           \ 
    26          type operator=(const type & value)                        \ 
    27          { return (CAttributeTemplate<type>::operator=(value)); }  \ 
    28          virtual ~name##att(void)                                  \ 
    29          { /* Ne rien faire de plus */ }                           \ 
     20#define DECLARE_ARRAY(T_num, T_rank, name)                        \ 
     21   class name##_attr : public CAttributeArray<T_num, T_rank>      \ 
     22   {                                                              \ 
     23      public :                                                    \ 
     24         name##_attr(void) : CAttributeArray<T_num, T_rank> (#name, *CAttributeMap::Current) {} \ 
     25         virtual ~name##_attr(void) {}                            \ 
    3026   } name; 
     27    
     28#define DECLARE_CLASS_ENUM(name)                                   \ 
     29   class name##_attr : public CAttributeEnum<Enum_##name>          \ 
     30   {                                                              \ 
     31      public :                                                    \ 
     32         name##_attr(void) : CAttributeEnum<Enum_##name>(#name, *CAttributeMap::Current) { } \ 
     33         virtual ~name##_attr(void) {}                           \ 
     34   } name; 
     35    
     36#define DECLARE_ENUM2(name,arg1,arg2)                             \ 
     37   class Enum_##name                                              \ 
     38   {                                                              \ 
     39     public:                                                      \ 
     40     enum t_enum { arg1=0, arg2} ;                                \ 
     41     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2 } ; return enumStr ; }   \ 
     42     int getSize(void) const { return 2 ; }                       \ 
     43   } ;                                                            \ 
     44   DECLARE_CLASS_ENUM(name) 
     45    
     46#define DECLARE_ENUM3(name,arg1,arg2,arg3)                             \ 
     47   class Enum_##name                                              \ 
     48   {                                                              \ 
     49     public:                                                      \ 
     50     enum t_enum { arg1=0, arg2, arg3} ;                                \ 
     51     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3 } ; return enumStr ; }   \ 
     52     int getSize(void) const { return 3 ; }                       \ 
     53   } ;                                                            \ 
     54   DECLARE_CLASS_ENUM(name) 
     55 
     56#define DECLARE_ENUM4(name,arg1,arg2,arg3,arg4)                             \ 
     57   class Enum_##name                                              \ 
     58   {                                                              \ 
     59     public:                                                      \ 
     60     enum t_enum { arg1=0, arg2, arg3,arg4} ;                                \ 
     61     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4 } ; return enumStr ; }   \ 
     62     int getSize(void) const { return 4 ; }                       \ 
     63   } ;                                                            \ 
     64   DECLARE_CLASS_ENUM(name) 
     65 
     66#define DECLARE_ENUM5(name,arg1,arg2,arg3,arg4,arg5)                             \ 
     67   class Enum_##name                                              \ 
     68   {                                                              \ 
     69     public:                                                      \ 
     70     enum t_enum { arg1=0, arg2, arg3,arg4,arg5} ;                                \ 
     71     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5 } ; return enumStr ; }   \ 
     72     int getSize(void) const { return 5 ; }                       \ 
     73   } ;                                                            \ 
     74   DECLARE_CLASS_ENUM(name) 
     75 
     76#define DECLARE_ENUM6(name,arg1,arg2,arg3,arg4,arg5,arg6)                             \ 
     77   class Enum_##name                                              \ 
     78   {                                                              \ 
     79     public:                                                      \ 
     80     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6} ;                                \ 
     81     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6 } ; return enumStr ; }   \ 
     82     int getSize(void) const { return 6 ; }                       \ 
     83   } ;                                                            \ 
     84   DECLARE_CLASS_ENUM(name) 
     85 
     86#define DECLARE_ENUM7(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7)                             \ 
     87   class Enum_##name                                              \ 
     88   {                                                              \ 
     89     public:                                                      \ 
     90     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7} ;                                \ 
     91     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7 } ; return enumStr ; }   \ 
     92     int getSize(void) const { return 7 ; }                       \ 
     93   } ;                                                            \ 
     94   DECLARE_CLASS_ENUM(name) 
     95 
     96#define DECLARE_ENUM8(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8)                             \ 
     97   class Enum_##name                                              \ 
     98   {                                                              \ 
     99     public:                                                      \ 
     100     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8} ;                                \ 
     101     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8 } ; return enumStr ; }   \ 
     102     int getSize(void) const { return 8 ; }                       \ 
     103   } ;                                                            \ 
     104   DECLARE_CLASS_ENUM(name) 
     105 
     106  #define DECLARE_ENUM9(name,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9)                             \ 
     107   class Enum_##name                                              \ 
     108   {                                                              \ 
     109     public:                                                      \ 
     110     enum t_enum { arg1=0, arg2, arg3,arg4,arg5,arg6,arg7,arg8,arg9} ;                                \ 
     111     const char** getStr(void) const { static const char * enumStr[] = { #arg1, #arg2, #arg3,#arg4,#arg5,#arg6,#arg7,#arg8,#arg9 } ; return enumStr ; }   \ 
     112     int getSize(void) const { return 8 ; }                       \ 
     113   } ;                                                            \ 
     114   DECLARE_CLASS_ENUM(name)  
     115 
    31116 
    32117#define BEGIN_DECLARE_ATTRIBUTE_MAP(type)                  \ 
    33    class type##Attributes : public virtual CAttributeMap { \ 
     118   class type##Attributes : public virtual CAttributeMap   \ 
     119   {                                                       \ 
    34120      public : 
    35121 
Note: See TracChangeset for help on using the changeset viewer.