#ifndef __XIOS_ATTRIBUTE_ENUM_IMPL_HPP__ #define __XIOS_ATTRIBUTE_ENUM_IMPL_HPP__ #include "enum.hpp" #include "buffer_in.hpp" #include "buffer_out.hpp" #include "generate_interface.hpp" #include "attribute_enum.hpp" namespace xios { /// ////////////////////// Définitions ////////////////////// /// template CAttributeEnum::CAttributeEnum(const StdString & id) : CAttribute(id) { /* Ne rien faire de plus */ } template CAttributeEnum::CAttributeEnum(const StdString & id, const T_enum & value) : CAttribute(id) { this->setValue(value); } template CAttributeEnum::CAttributeEnum(const StdString & id, xios_map & umap) : CAttribute(id) { umap.insert(umap.end(), std::make_pair(id, this)); } template CAttributeEnum::CAttributeEnum (const StdString & id, const T_enum & value, xios_map & umap) : CAttribute(id) { this->setValue(value); umap.insert(umap.end(), std::make_pair(id, this)); } ///-------------------------------------------------------------- template void CAttributeEnum::reset(void) { CEnum::reset(); inheritedValue.reset(); } template typename T::t_enum CAttributeEnum::getValue(void) const { return CEnum::get(); } template string CAttributeEnum::getStringValue(void) const { return CEnum::toString(); } template void CAttributeEnum::setValue(const typename T::t_enum & value) { CEnum::set(value); } template void CAttributeEnum::set(const CAttribute& attr) { this->set(dynamic_cast& >(attr)); } template void CAttributeEnum::set(const CAttributeEnum& attr) { CEnum::set(attr); } template void CAttributeEnum::setInheritedValue(const CAttribute& attr) { this->setInheritedValue(dynamic_cast& >(attr)); } template void CAttributeEnum::setInheritedValue(const CAttributeEnum& attr) { if (this->isEmpty() && _canInherite && attr.hasInheritedValue()) inheritedValue.set(attr.getInheritedValue()); } template typename T::t_enum CAttributeEnum::getInheritedValue(void) const { if (this->isEmpty()) return inheritedValue.get(); else return getValue(); } template string CAttributeEnum::getInheritedStringValue(void) const { if (this->isEmpty()) return inheritedValue.toString(); else return CEnum::toString();; } template bool CAttributeEnum::hasInheritedValue(void) const { return !this->isEmpty() || !inheritedValue.isEmpty(); } template bool CAttributeEnum::isEqual(const CAttribute& attr) { return (this->isEqual(dynamic_cast& >(attr))); } template bool CAttributeEnum::isEqual(const CAttributeEnum& attr) { return ((dynamic_cast& >(*this)) == (dynamic_cast& >(attr))); } //--------------------------------------------------------------- template CAttributeEnum& CAttributeEnum::operator=(const T_enum & value) { this->setValue(value); return *this; } //--------------------------------------------------------------- template StdString CAttributeEnum::_toString(void) const { StdOStringStream oss; if (!CEnum::isEmpty() && this->hasId()) oss << this->getName() << "=\"" << CEnum::toString() << "\""; return (oss.str()); } template void CAttributeEnum::_fromString(const StdString & str) { CEnum::fromString(str); } template bool CAttributeEnum::_toBuffer (CBufferOut& buffer) const { return CEnum::toBuffer(buffer); } template bool CAttributeEnum::_fromBuffer(CBufferIn& buffer) { return CEnum::fromBuffer(buffer); } template void CAttributeEnum::generateCInterface(ostream& oss,const string& className) { CInterface::AttributeCInterface(oss, className, this->getName()); } template void CAttributeEnum::generateFortran2003Interface(ostream& oss,const string& className) { CInterface::AttributeFortran2003Interface(oss, className, this->getName()); } template void CAttributeEnum::generateFortranInterfaceDeclaration_(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceDeclaration(oss, className, this->getName()+"_"); } template void CAttributeEnum::generateFortranInterfaceBody_(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceBody(oss, className, this->getName()); } template void CAttributeEnum::generateFortranInterfaceDeclaration(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceDeclaration(oss, className, this->getName()); } template void CAttributeEnum::generateFortranInterfaceGetDeclaration_(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceGetDeclaration(oss, className, this->getName()+"_"); } template void CAttributeEnum::generateFortranInterfaceGetBody_(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceGetBody(oss, className, this->getName()); } template void CAttributeEnum::generateFortranInterfaceGetDeclaration(ostream& oss,const string& className) { CInterface::AttributeFortranInterfaceGetDeclaration(oss, className, this->getName()); } } // namespace xios #endif // __XIOS_ATTRIBUTE_ENUM_IMPL_HPP__