/* 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 IfcValveTypeEnum = ENUMERATION OF	(AIRRELEASE	,ANTIVACUUM	,CHANGEOVER	,CHECK	,COMMISSIONING	,DIVERTING	,DRAWOFFCOCK	,DOUBLECHECK	,DOUBLEREGULATING	,FAUCET	,FLUSHING	,GASCOCK	,GASTAP	,ISOLATING	,MIXING	,PRESSUREREDUCING	,PRESSURERELIEF	,REGULATING	,SAFETYCUTOFF	,STEAMTRAP	,STOPCOCK	,USERDEFINED	,NOTDEFINED);
class IFCQUERY_EXPORT IfcValveTypeEnum : virtual public BuildingObject
{
public:
	enum IfcValveTypeEnumEnum
	{
		ENUM_AIRRELEASE,
		ENUM_ANTIVACUUM,
		ENUM_CHANGEOVER,
		ENUM_CHECK,
		ENUM_COMMISSIONING,
		ENUM_DIVERTING,
		ENUM_DRAWOFFCOCK,
		ENUM_DOUBLECHECK,
		ENUM_DOUBLEREGULATING,
		ENUM_FAUCET,
		ENUM_FLUSHING,
		ENUM_GASCOCK,
		ENUM_GASTAP,
		ENUM_ISOLATING,
		ENUM_MIXING,
		ENUM_PRESSUREREDUCING,
		ENUM_PRESSURERELIEF,
		ENUM_REGULATING,
		ENUM_SAFETYCUTOFF,
		ENUM_STEAMTRAP,
		ENUM_STOPCOCK,
		ENUM_USERDEFINED,
		ENUM_NOTDEFINED
	};

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

