Ignore:
Timestamp:
04/12/18 18:51:08 (3 years ago)
Author:
oabramkina
Message:

Exception handling for attributes by means of dynamic binding. This assures that attribute's id will always be printed in the error message.

Replacing changes done in r1477.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/src/type/type_impl.hpp

    r1477 r1478  
    8787  T& CType<T>::get(void) 
    8888  { 
    89     checkEmpty(); 
     89    this->checkEmpty(); 
    9090   return *ptrValue ; 
    9191  } 
     
    9494  const T& CType<T>::get(void) const 
    9595  { 
    96     checkEmpty(); 
     96    this->checkEmpty(); 
    9797    return *ptrValue ; 
    9898  } 
     
    122122   CType<T>::operator T&() 
    123123   { 
    124      try 
    125      { 
    126        checkEmpty(); 
    127      } 
    128      catch (xios::CException & exc) 
    129      { 
    130        StdString msg("Data is not initialized\n"); 
    131        ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << msg); 
    132      } 
    133  
    134     return *ptrValue ; 
     124     this->checkEmpty(); 
     125     return *ptrValue ; 
    135126   } 
    136127 
     
    138129   CType<T>::operator const T&() const 
    139130   { 
    140     checkEmpty(); 
     131    this->checkEmpty(); 
    141132    return *ptrValue ; 
    142133   } 
     
    145136   CType<T>* CType<T>::_clone(void) const 
    146137   { 
    147      checkEmpty(); 
     138     this->checkEmpty(); 
    148139     return new CType(*this) ; 
    149140   } 
     
    174165  { 
    175166    ostringstream oss; 
    176     checkEmpty(); 
     167    this->checkEmpty(); 
    177168    oss<<*ptrValue ; 
    178169    return oss.str() ; 
     
    182173  bool CType<T>::_toBuffer(CBufferOut& buffer) const 
    183174  { 
    184     checkEmpty(); 
     175    this->checkEmpty(); 
    185176    return buffer.put(*ptrValue) ; 
    186177  } 
     
    215206 
    216207  template <typename T> 
    217   void CType<T>::checkEmpty(void) const 
    218   { 
    219 //    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ; 
    220     if (empty) throw CException(); 
     208  void CType<T>::_checkEmpty(void) const 
     209  { 
     210    if (empty) ERROR("template <typename T> void CType<T>::checkEmpty(void) const", << "Data is not initialized") ; 
    221211  } 
    222212 
Note: See TracChangeset for help on using the changeset viewer.