- Timestamp:
- 05/16/17 17:54:30 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
XIOS/dev/branch_yushan_merged/src/attribute_enum_impl.hpp
r1112 r1134 10 10 namespace xios 11 11 { 12 /// ////////////////////// D éfinitions ////////////////////// ///12 /// ////////////////////// Définitions ////////////////////// /// 13 13 template <class T> 14 14 CAttributeEnum<T>::CAttributeEnum(const StdString & id) … … 30 30 umap.insert(umap.end(), std::make_pair(id, this)); 31 31 } 32 32 33 33 template <class T> 34 34 CAttributeEnum<T>::CAttributeEnum … … 40 40 umap.insert(umap.end(), std::make_pair(id, this)); 41 41 } 42 42 43 43 ///-------------------------------------------------------------- 44 44 template <class T> … … 54 54 return CEnum<T>::get(); 55 55 } 56 56 57 57 template <class T> 58 58 string CAttributeEnum<T>::getStringValue(void) const 59 59 { 60 return CEnum<T>::toString(); 61 } 60 return CEnum<T>::toString(); 61 } 62 62 63 63 64 template <class T> … … 70 71 void CAttributeEnum<T>::set(const CAttribute& attr) 71 72 { 72 this->set(dynamic_cast<const CAttributeEnum<T>& >(attr));73 } 74 75 template <class T>73 this->set(dynamic_cast<const CAttributeEnum<T>& >(attr)); 74 } 75 76 template <class T> 76 77 void CAttributeEnum<T>::set(const CAttributeEnum& attr) 77 78 { 78 CEnum<T>::set(attr);79 } 80 79 CEnum<T>::set(attr); 80 } 81 81 82 template <class T> 82 83 void CAttributeEnum<T>::setInheritedValue(const CAttribute& attr) 83 84 { 84 this->setInheritedValue(dynamic_cast<const CAttributeEnum<T>& >(attr));85 } 86 85 this->setInheritedValue(dynamic_cast<const CAttributeEnum<T>& >(attr)); 86 } 87 87 88 template <class T> 88 89 void CAttributeEnum<T>::setInheritedValue(const CAttributeEnum& attr) 89 90 { 90 if (this->isEmpty() && _canInherite && attr.hasInheritedValue()) inheritedValue.set(attr.getInheritedValue());91 } 92 91 if (this->isEmpty() && _canInherite && attr.hasInheritedValue()) inheritedValue.set(attr.getInheritedValue()); 92 } 93 93 94 template <class T> 94 95 typename T::t_enum CAttributeEnum<T>::getInheritedValue(void) const 95 96 { 96 if (this->isEmpty()) return inheritedValue.get();97 else return getValue();98 } 99 100 template <class T> 101 string CAttributeEnum<T>::getInheritedStringValue(void) const102 {103 if (this->isEmpty()) return inheritedValue.toString();104 else return CEnum<T>::toString();;105 }106 107 template <class T> 108 bool CAttributeEnum<T>::hasInheritedValue(void) const109 {110 return !this->isEmpty() || !inheritedValue.isEmpty();111 }112 113 template <class T> 114 bool CAttributeEnum<T>::isEqual(const CAttribute& attr)115 {116 return (this->isEqual(dynamic_cast<const CAttributeEnum<T>& >(attr)));117 }118 119 template <class T> 120 bool CAttributeEnum<T>::isEqual(const CAttributeEnum& attr)121 {122 return ((dynamic_cast<const CEnum<T>& >(*this)) == (dynamic_cast<const CEnum<T>& >(attr)));123 }97 if (this->isEmpty()) return inheritedValue.get(); 98 else return getValue(); 99 } 100 101 template <class T> 102 string CAttributeEnum<T>::getInheritedStringValue(void) const 103 { 104 if (this->isEmpty()) return inheritedValue.toString(); 105 else return CEnum<T>::toString();; 106 } 107 108 template <class T> 109 bool CAttributeEnum<T>::hasInheritedValue(void) const 110 { 111 return !this->isEmpty() || !inheritedValue.isEmpty(); 112 } 113 114 template <class T> 115 bool CAttributeEnum<T>::isEqual(const CAttribute& attr) 116 { 117 return (this->isEqual(dynamic_cast<const CAttributeEnum<T>& >(attr))); 118 } 119 120 template <class T> 121 bool CAttributeEnum<T>::isEqual(const CAttributeEnum& attr) 122 { 123 return ((dynamic_cast<const CEnum<T>& >(*this)) == (dynamic_cast<const CEnum<T>& >(attr))); 124 } 124 125 125 126 //--------------------------------------------------------------- 126 127 127 128 template <class T> 128 CAttributeEnum<T>& CAttributeEnum<T>::operator=(const T_enum & value)129 {130 this->setValue(value);131 return *this;132 }129 CAttributeEnum<T>& CAttributeEnum<T>::operator=(const T_enum & value) 130 { 131 this->setValue(value); 132 return *this; 133 } 133 134 134 135 //--------------------------------------------------------------- 135 136 136 137 template <class T> 137 StdString CAttributeEnum<T>::_toString(void) const138 {139 StdOStringStream oss;140 if (!CEnum<T>::isEmpty() && this->hasId())141 oss << this->getName() << "=\"" << CEnum<T>::toString() << "\"";142 return (oss.str());143 }144 145 template <class T> 146 void CAttributeEnum<T>::_fromString(const StdString & str)147 {148 CEnum<T>::fromString(str);149 }150 151 template <class T> 152 bool CAttributeEnum<T>::_toBuffer (CBufferOut& buffer) const153 {154 return CEnum<T>::toBuffer(buffer);155 }156 157 template <class T> 158 bool CAttributeEnum<T>::_fromBuffer(CBufferIn& buffer)159 {160 return CEnum<T>::fromBuffer(buffer);161 }162 163 template <typename T> 164 void CAttributeEnum<T>::generateCInterface(ostream& oss,const string& className)165 {166 CInterface::AttributeCInterface<CEnumBase>(oss, className, this->getName());167 }168 169 template <typename T> 170 void CAttributeEnum<T>::generateFortran2003Interface(ostream& oss,const string& className)171 {172 CInterface::AttributeFortran2003Interface<string>(oss, className, this->getName());173 }174 175 template <typename T> 176 void CAttributeEnum<T>::generateFortranInterfaceDeclaration_(ostream& oss,const string& className)177 {178 CInterface::AttributeFortranInterfaceDeclaration<string>(oss, className, this->getName()+"_");179 }180 181 template <typename T> 182 void CAttributeEnum<T>::generateFortranInterfaceBody_(ostream& oss,const string& className)183 {184 CInterface::AttributeFortranInterfaceBody<string>(oss, className, this->getName());185 }186 187 template <typename T> 188 void CAttributeEnum<T>::generateFortranInterfaceDeclaration(ostream& oss,const string& className)189 {190 CInterface::AttributeFortranInterfaceDeclaration<string>(oss, className, this->getName());191 }192 193 template <typename T> 194 void CAttributeEnum<T>::generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className)195 {196 CInterface::AttributeFortranInterfaceGetDeclaration<string>(oss, className, this->getName()+"_");197 }198 199 template <typename T> 200 void CAttributeEnum<T>::generateFortranInterfaceGetBody_(ostream& oss,const string& className)201 {202 CInterface::AttributeFortranInterfaceGetBody<string>(oss, className, this->getName());203 }204 205 template <typename T> 206 void CAttributeEnum<T>::generateFortranInterfaceGetDeclaration(ostream& oss,const string& className)207 {208 CInterface::AttributeFortranInterfaceGetDeclaration<string>(oss, className, this->getName());209 }138 StdString CAttributeEnum<T>::_toString(void) const 139 { 140 StdOStringStream oss; 141 if (!CEnum<T>::isEmpty() && this->hasId()) 142 oss << this->getName() << "=\"" << CEnum<T>::toString() << "\""; 143 return (oss.str()); 144 } 145 146 template <class T> 147 void CAttributeEnum<T>::_fromString(const StdString & str) 148 { 149 CEnum<T>::fromString(str); 150 } 151 152 template <class T> 153 bool CAttributeEnum<T>::_toBuffer (CBufferOut& buffer) const 154 { 155 return CEnum<T>::toBuffer(buffer); 156 } 157 158 template <class T> 159 bool CAttributeEnum<T>::_fromBuffer(CBufferIn& buffer) 160 { 161 return CEnum<T>::fromBuffer(buffer); 162 } 163 164 template <typename T> 165 void CAttributeEnum<T>::generateCInterface(ostream& oss,const string& className) 166 { 167 CInterface::AttributeCInterface<CEnumBase>(oss, className, this->getName()); 168 } 169 170 template <typename T> 171 void CAttributeEnum<T>::generateFortran2003Interface(ostream& oss,const string& className) 172 { 173 CInterface::AttributeFortran2003Interface<string>(oss, className, this->getName()); 174 } 175 176 template <typename T> 177 void CAttributeEnum<T>::generateFortranInterfaceDeclaration_(ostream& oss,const string& className) 178 { 179 CInterface::AttributeFortranInterfaceDeclaration<string>(oss, className, this->getName()+"_"); 180 } 181 182 template <typename T> 183 void CAttributeEnum<T>::generateFortranInterfaceBody_(ostream& oss,const string& className) 184 { 185 CInterface::AttributeFortranInterfaceBody<string>(oss, className, this->getName()); 186 } 187 188 template <typename T> 189 void CAttributeEnum<T>::generateFortranInterfaceDeclaration(ostream& oss,const string& className) 190 { 191 CInterface::AttributeFortranInterfaceDeclaration<string>(oss, className, this->getName()); 192 } 193 194 template <typename T> 195 void CAttributeEnum<T>::generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) 196 { 197 CInterface::AttributeFortranInterfaceGetDeclaration<string>(oss, className, this->getName()+"_"); 198 } 199 200 template <typename T> 201 void CAttributeEnum<T>::generateFortranInterfaceGetBody_(ostream& oss,const string& className) 202 { 203 CInterface::AttributeFortranInterfaceGetBody<string>(oss, className, this->getName()); 204 } 205 206 template <typename T> 207 void CAttributeEnum<T>::generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) 208 { 209 CInterface::AttributeFortranInterfaceGetDeclaration<string>(oss, className, this->getName()); 210 } 210 211 } // namespace xios 211 212 212 213 #endif // __XIOS_ATTRIBUTE_ENUM_IMPL_HPP__ 214
Note: See TracChangeset
for help on using the changeset viewer.