text: /* Code generated by IfcQuery EXPRESS generator, www.ifcquery.com */
  
  #include <sstream>
  #include <limits>
  #include <map>
  #include "ifcpp/reader/ReaderUtil.h"
  #include "ifcpp/writer/WriterUtil.h"
  #include "ifcpp/model/BasicTypes.h"
  #include "ifcpp/model/BuildingException.h"
  #include "ifcpp/IFC4/include/IfcCoveringTypeEnum.h"
  
  // TYPE IfcCoveringTypeEnum = ENUMERATION OF	(CEILING	,FLOORING	,CLADDING	,ROOFING	,MOLDING	,SKIRTINGBOARD	,INSULATION	,MEMBRANE	,SLEEVING	,WRAPPING	,USERDEFINED	,NOTDEFINED);
  shared_ptr<BuildingObject> IfcCoveringTypeEnum::getDeepCopy( BuildingCopyOptions& options )
  {
  	shared_ptr<IfcCoveringTypeEnum> copy_self( new IfcCoveringTypeEnum() );
  	copy_self->m_enum = m_enum;
  	return copy_self;
  }
  void IfcCoveringTypeEnum::getStepParameter( std::stringstream& stream, bool is_select_type ) const
  {
  	if( is_select_type ) { stream << "IFCCOVERINGTYPEENUM("; }
  	switch( m_enum )
  	{
  		case ENUM_CEILING:	stream << ".CEILING."; break;
  		case ENUM_FLOORING:	stream << ".FLOORING."; break;
  		case ENUM_CLADDING:	stream << ".CLADDING."; break;
  		case ENUM_ROOFING:	stream << ".ROOFING."; break;
  		case ENUM_MOLDING:	stream << ".MOLDING."; break;
  		case ENUM_SKIRTINGBOARD:	stream << ".SKIRTINGBOARD."; break;
  		case ENUM_INSULATION:	stream << ".INSULATION."; break;
  		case ENUM_MEMBRANE:	stream << ".MEMBRANE."; break;
  		case ENUM_SLEEVING:	stream << ".SLEEVING."; break;
  		case ENUM_WRAPPING:	stream << ".WRAPPING."; break;
  		case ENUM_USERDEFINED:	stream << ".USERDEFINED."; break;
  		case ENUM_NOTDEFINED:	stream << ".NOTDEFINED."; break;
  	}
  	if( is_select_type ) { stream << ")"; }
  }
  const std::wstring IfcCoveringTypeEnum::toString() const
  {
  	switch( m_enum ) 
  	{
  		case ENUM_CEILING:	return L"CEILING";
  		case ENUM_FLOORING:	return L"FLOORING";
  		case ENUM_CLADDING:	return L"CLADDING";
  		case ENUM_ROOFING:	return L"ROOFING";
  		case ENUM_MOLDING:	return L"MOLDING";
  		case ENUM_SKIRTINGBOARD:	return L"SKIRTINGBOARD";
  		case ENUM_INSULATION:	return L"INSULATION";
  		case ENUM_MEMBRANE:	return L"MEMBRANE";
  		case ENUM_SLEEVING:	return L"SLEEVING";
  		case ENUM_WRAPPING:	return L"WRAPPING";
  		case ENUM_USERDEFINED:	return L"USERDEFINED";
  		case ENUM_NOTDEFINED:	return L"NOTDEFINED";
  	}
  	return L"";
  }
  shared_ptr<IfcCoveringTypeEnum> IfcCoveringTypeEnum::createObjectFromSTEP( const std::wstring& arg, const std::map<int,shared_ptr<BuildingEntity> >& map )
  {
  	if( arg.compare( L"$" ) == 0 ) { return shared_ptr<IfcCoveringTypeEnum>(); }
  	if( arg.compare( L"*" ) == 0 ) { return shared_ptr<IfcCoveringTypeEnum>(); }
  	shared_ptr<IfcCoveringTypeEnum> type_object( new IfcCoveringTypeEnum() );
  	if( boost::iequals( arg, L".CEILING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_CEILING;
  	}
  	else if( boost::iequals( arg, L".FLOORING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_FLOORING;
  	}
  	else if( boost::iequals( arg, L".CLADDING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_CLADDING;
  	}
  	else if( boost::iequals( arg, L".ROOFING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_ROOFING;
  	}
  	else if( boost::iequals( arg, L".MOLDING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_MOLDING;
  	}
  	else if( boost::iequals( arg, L".SKIRTINGBOARD." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_SKIRTINGBOARD;
  	}
  	else if( boost::iequals( arg, L".INSULATION." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_INSULATION;
  	}
  	else if( boost::iequals( arg, L".MEMBRANE." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_MEMBRANE;
  	}
  	else if( boost::iequals( arg, L".SLEEVING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_SLEEVING;
  	}
  	else if( boost::iequals( arg, L".WRAPPING." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_WRAPPING;
  	}
  	else if( boost::iequals( arg, L".USERDEFINED." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_USERDEFINED;
  	}
  	else if( boost::iequals( arg, L".NOTDEFINED." ) )
  	{
  		type_object->m_enum = IfcCoveringTypeEnum::ENUM_NOTDEFINED;
  	}
  	return type_object;
  }
  