/* Code generated by IfcQuery EXPRESS generator, www.ifcquery.com */

#pragma once
#include <vector>
#include <map>
#include <sstream>
#include <string>
#include "ifcpp/model/GlobalDefines.h"
#include "ifcpp/model/BasicTypes.h"
#include "ifcpp/model/BuildingObject.h"

// TYPE IfcRoofTypeEnum = ENUMERATION OF	(FLAT_ROOF	,SHED_ROOF	,GABLE_ROOF	,HIP_ROOF	,HIPPED_GABLE_ROOF	,GAMBREL_ROOF	,MANSARD_ROOF	,BARREL_ROOF	,RAINBOW_ROOF	,BUTTERFLY_ROOF	,PAVILION_ROOF	,DOME_ROOF	,FREEFORM	,USERDEFINED	,NOTDEFINED);
class IFCQUERY_EXPORT IfcRoofTypeEnum : virtual public BuildingObject
{
public:
	enum IfcRoofTypeEnumEnum
	{
		ENUM_FLAT_ROOF,
		ENUM_SHED_ROOF,
		ENUM_GABLE_ROOF,
		ENUM_HIP_ROOF,
		ENUM_HIPPED_GABLE_ROOF,
		ENUM_GAMBREL_ROOF,
		ENUM_MANSARD_ROOF,
		ENUM_BARREL_ROOF,
		ENUM_RAINBOW_ROOF,
		ENUM_BUTTERFLY_ROOF,
		ENUM_PAVILION_ROOF,
		ENUM_DOME_ROOF,
		ENUM_FREEFORM,
		ENUM_USERDEFINED,
		ENUM_NOTDEFINED
	};

	IfcRoofTypeEnum() = default;
	IfcRoofTypeEnum( IfcRoofTypeEnumEnum e ) { m_enum = e; }
	~IfcRoofTypeEnum();
	virtual const char* className() const { return "IfcRoofTypeEnum"; }
	virtual shared_ptr<BuildingObject> getDeepCopy( BuildingCopyOptions& options );
	virtual void getStepParameter( std::stringstream& stream, bool is_select_type = false ) const;
	virtual const std::wstring toString() const;
	static shared_ptr<IfcRoofTypeEnum> createObjectFromSTEP( const std::wstring& arg, const std::map<int,shared_ptr<BuildingEntity> >& map );
	IfcRoofTypeEnumEnum m_enum;
};

