Ignore:
Timestamp:
10/21/15 13:40:57 (9 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.hpp

    r591 r748  
    1313 
    1414  template <typename T> class CType_ref ; 
    15      
    16   template <typename T>  
     15 
     16  template <typename T> 
    1717  class CType : public  virtual CBaseType 
    1818  { 
    1919    public: 
    20    
     20 
    2121    CType(void) ; 
    2222    CType(const T& val) ; 
     
    3535    CType& operator = (const CType_ref<T>& val) ; 
    3636    operator T&() ; 
    37      
     37    operator const T&() const ; 
     38 
    3839    inline virtual CBaseType* clone(void) const   { return _clone(); } 
    3940    virtual void fromString(const string& str)   { _fromString(str); } 
     
    4243    virtual bool toBuffer(CBufferOut& buffer) const { return _toBuffer(buffer); } 
    4344    virtual void reset(void) { _reset(); } 
    44     virtual bool isEmpty() const { return _isEmpty(); }  
     45    virtual bool isEmpty() const { return _isEmpty(); } 
    4546    virtual size_t size(void) const { return _size(); } 
    46      
     47 
    4748    void allocate(void) ; 
    4849    void checkEmpty(void) const; 
    49         
     50 
    5051    T* ptrValue ; 
    5152    bool empty ; 
    52        
    53     friend class CType_ref<T> ;  
    54   
     53 
     54    friend class CType_ref<T> ; 
     55 
    5556    private : 
    56   
     57 
    5758    CType* _clone(void) const; 
    5859    void _fromString(const string& str) ; 
     
    6162    bool _toBuffer(CBufferOut& buffer) const; 
    6263    void _reset(void) ; 
    63     bool _isEmpty() const ;   
     64    bool _isEmpty() const ; 
    6465    size_t _size(void) const ; 
    65   
     66 
    6667  } ; 
    6768 
    6869 
    6970  template<typename T> class CType ; 
    70      
    71   template <typename T>  
     71 
     72  template <typename T> 
    7273  class CType_ref : public virtual CBaseType 
    7374  { 
    7475    public: 
    75    
     76 
    7677    CType_ref(void) ; 
    7778    CType_ref(T& val) ; 
     
    8990    void set_ref(CType<T>& val) ; 
    9091    void set_ref(const CType_ref& val) ; 
    91      
     92 
    9293    const CType_ref& operator = (T& val) const ; 
    9394    const CType_ref& operator = (CType<T>& val) const ; 
     
    103104    virtual bool toBuffer(CBufferOut& buffer) const { return _toBuffer(buffer); } 
    104105    virtual void reset(void) { _reset(); } 
    105     virtual bool isEmpty() const { return _isEmpty(); }  
     106    virtual bool isEmpty() const { return _isEmpty(); } 
    106107    virtual size_t size(void) const { return _size(); } 
    107108 
    108109    void checkEmpty(void) const; 
    109      
     110 
    110111 
    111112    T mutable * ptrValue ; 
    112113    bool empty ; 
    113114    friend class CType<T> ; 
    114      
     115 
    115116    private : 
    116      
     117 
    117118    CType_ref* _clone(void) const; 
    118119    void _fromString(const string& str) ; 
     
    123124    bool _toBuffer(CBufferOut& buffer) const; 
    124125    void _reset(void) ; 
    125     bool _isEmpty() const ;   
     126    bool _isEmpty() const ; 
    126127    size_t _size(void) const ; 
    127128  } ; 
    128    
    129    
     129 
     130 
    130131  class CMessage ; 
    131    
     132 
    132133  template <typename T> 
    133134  CBufferOut& operator<<(CBufferOut& buffer, const CType<T>& type) ; 
     
    135136  template <typename T> 
    136137  CBufferOut& operator<<(CBufferOut& buffer, const CType_ref<T>& type) ; 
    137    
     138 
    138139  template <typename T> 
    139140  CBufferOut& operator<<(CBufferOut& buffer, const T& type) ; 
    140    
     141 
    141142  template <typename T> 
    142143  CBufferOut& operator<<(CBufferOut& buffer, T& type) ; 
     
    158159  template <typename T> 
    159160  CMessage& operator<<(CMessage& msg, const CType_ref<T>& type) ; 
    160 */   
    161    
     161*/ 
     162 
    162163  template <typename T> 
    163164  CMessage& operator<<(CMessage& msg, const T& type) ; 
Note: See TracChangeset for help on using the changeset viewer.