/* 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 IfcCompressorTypeEnum = ENUMERATION OF	(DYNAMIC	,RECIPROCATING	,ROTARY	,SCROLL	,TROCHOIDAL	,SINGLESTAGE	,BOOSTER	,OPENTYPE	,HERMETIC	,SEMIHERMETIC	,WELDEDSHELLHERMETIC	,ROLLINGPISTON	,ROTARYVANE	,SINGLESCREW	,TWINSCREW	,USERDEFINED	,NOTDEFINED);
class IFCQUERY_EXPORT IfcCompressorTypeEnum : virtual public BuildingObject
{
public:
	enum IfcCompressorTypeEnumEnum
	{
		ENUM_DYNAMIC,
		ENUM_RECIPROCATING,
		ENUM_ROTARY,
		ENUM_SCROLL,
		ENUM_TROCHOIDAL,
		ENUM_SINGLESTAGE,
		ENUM_BOOSTER,
		ENUM_OPENTYPE,
		ENUM_HERMETIC,
		ENUM_SEMIHERMETIC,
		ENUM_WELDEDSHELLHERMETIC,
		ENUM_ROLLINGPISTON,
		ENUM_ROTARYVANE,
		ENUM_SINGLESCREW,
		ENUM_TWINSCREW,
		ENUM_USERDEFINED,
		ENUM_NOTDEFINED
	};

	IfcCompressorTypeEnum() = default;
	IfcCompressorTypeEnum( IfcCompressorTypeEnumEnum e ) { m_enum = e; }
	~IfcCompressorTypeEnum();
	virtual const char* className() const { return "IfcCompressorTypeEnum"; }
	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<IfcCompressorTypeEnum> createObjectFromSTEP( const std::wstring& arg, const std::map<int,shared_ptr<BuildingEntity> >& map );
	IfcCompressorTypeEnumEnum m_enum;
};

