Ignore:
Timestamp:
10/21/15 13:40:57 (6 years ago)
Author:
rlacroix
Message:

CType<T>: Add a conversion operator to const reference.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/trunk/src/type/type_impl.hpp

    r680 r748  
    1313namespace xios 
    1414{ 
    15   
     15 
    1616  using namespace std; 
    17    
     17 
    1818  template <typename T> 
    1919  CType<T>::CType(void) 
     
    2121    empty=true ; 
    2222  } 
    23      
     23 
    2424  template <typename T> 
    2525  CType<T>::CType(const T& val) 
     
    2828    set(val) ; 
    2929  } 
    30    
     30 
    3131  template <typename T> 
    3232  CType<T>::CType(const CType<T>& type) 
     
    4141    empty=true ; 
    4242    set(type) ; 
    43   }   
    44    
     43  } 
     44 
    4545  template <typename T> 
    4646  void CType<T>::set(const T& val) 
    4747  { 
    48     if (empty)  
    49     {  
     48    if (empty) 
     49    { 
    5050      ptrValue = new T(val) ; 
    5151      empty=false ; 
     
    6161    { 
    6262      if (empty) 
    63       {  
     63      { 
    6464        ptrValue = new T(*type.ptrValue) ; 
    6565        empty=false ; 
     
    7676    { 
    7777      if (empty) 
    78       {  
     78      { 
    7979        ptrValue = new T(*type.ptrValue) ; 
    8080        empty=false ; 
     
    9797    return *ptrValue ; 
    9898  } 
    99    
     99 
    100100  template <typename T> 
    101101  CType<T>& CType<T>::operator = (const T& val) 
     
    104104    return *this ; 
    105105  } 
    106    
     106 
    107107  template <typename T> 
    108108  CType<T>& CType<T>::operator = (const CType<T>& type) 
     
    111111    return *this ; 
    112112  } 
    113    
     113 
    114114  template <typename T> 
    115115  CType<T>& CType<T>::operator = (const CType_ref<T>& type) 
     
    118118    return *this ; 
    119119  } 
    120    
     120 
    121121   template <typename T> 
    122122   CType<T>::operator T&() 
     123   { 
     124    checkEmpty(); 
     125    return *ptrValue ; 
     126   } 
     127 
     128   template <typename T> 
     129   CType<T>::operator const T&() const 
    123130   { 
    124131    checkEmpty(); 
     
    133140   } 
    134141 
    135    
     142 
    136143  template <typename T> 
    137144  void CType<T>::_fromString(const string& str) 
     
    147154    return sizeof(T) ; 
    148155  } 
    149    
     156 
    150157  template <typename T> 
    151158  bool CType<T>::_isEmpty(void) const 
     
    153160    return empty ; 
    154161  } 
    155    
     162 
    156163  template <typename T> 
    157164  string CType<T>::_toString(void) const 
     
    162169    return oss.str() ; 
    163170  } 
    164    
     171 
    165172  template <typename T> 
    166173  bool CType<T>::_toBuffer(CBufferOut& buffer) const 
     
    169176    return buffer.put(*ptrValue) ; 
    170177  } 
    171    
     178 
    172179  template <typename T> 
    173180  bool CType<T>::_fromBuffer(CBufferIn& buffer) 
     
    176183    return buffer.get(*ptrValue) ; 
    177184  } 
    178   
     185 
    179186 
    180187  template <typename T> 
    181188  void CType<T>::allocate(void) 
    182189  { 
    183     if (empty)  
     190    if (empty) 
    184191    { 
    185192      ptrValue = new T ; 
     
    187194    } 
    188195  } 
    189    
     196 
    190197  template <typename T> 
    191198  void CType<T>::_reset(void) 
    192199  { 
    193     if (!empty)  
     200    if (!empty) 
    194201    { 
    195202      delete ptrValue ; 
     
    197204    } 
    198205  } 
    199    
     206 
    200207  template <typename T> 
    201208  void CType<T>::checkEmpty(void) const 
    202209  { 
    203210    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ; 
    204   }   
    205  
    206    
     211  } 
     212 
     213 
    207214  template <typename T> 
    208215  CBufferOut& operator<<(CBufferOut& buffer, const CType<T>& type) 
Note: See TracChangeset for help on using the changeset viewer.