/* 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 IfcUnitEnum = ENUMERATION OF	(ABSORBEDDOSEUNIT	,AMOUNTOFSUBSTANCEUNIT	,AREAUNIT	,DOSEEQUIVALENTUNIT	,ELECTRICCAPACITANCEUNIT	,ELECTRICCHARGEUNIT	,ELECTRICCONDUCTANCEUNIT	,ELECTRICCURRENTUNIT	,ELECTRICRESISTANCEUNIT	,ELECTRICVOLTAGEUNIT	,ENERGYUNIT	,FORCEUNIT	,FREQUENCYUNIT	,ILLUMINANCEUNIT	,INDUCTANCEUNIT	,LENGTHUNIT	,LUMINOUSFLUXUNIT	,LUMINOUSINTENSITYUNIT	,MAGNETICFLUXDENSITYUNIT	,MAGNETICFLUXUNIT	,MASSUNIT	,PLANEANGLEUNIT	,POWERUNIT	,PRESSUREUNIT	,RADIOACTIVITYUNIT	,SOLIDANGLEUNIT	,THERMODYNAMICTEMPERATUREUNIT	,TIMEUNIT	,VOLUMEUNIT	,USERDEFINED);
class IFCQUERY_EXPORT IfcUnitEnum : virtual public BuildingObject
{
public:
	enum IfcUnitEnumEnum
	{
		ENUM_ABSORBEDDOSEUNIT,
		ENUM_AMOUNTOFSUBSTANCEUNIT,
		ENUM_AREAUNIT,
		ENUM_DOSEEQUIVALENTUNIT,
		ENUM_ELECTRICCAPACITANCEUNIT,
		ENUM_ELECTRICCHARGEUNIT,
		ENUM_ELECTRICCONDUCTANCEUNIT,
		ENUM_ELECTRICCURRENTUNIT,
		ENUM_ELECTRICRESISTANCEUNIT,
		ENUM_ELECTRICVOLTAGEUNIT,
		ENUM_ENERGYUNIT,
		ENUM_FORCEUNIT,
		ENUM_FREQUENCYUNIT,
		ENUM_ILLUMINANCEUNIT,
		ENUM_INDUCTANCEUNIT,
		ENUM_LENGTHUNIT,
		ENUM_LUMINOUSFLUXUNIT,
		ENUM_LUMINOUSINTENSITYUNIT,
		ENUM_MAGNETICFLUXDENSITYUNIT,
		ENUM_MAGNETICFLUXUNIT,
		ENUM_MASSUNIT,
		ENUM_PLANEANGLEUNIT,
		ENUM_POWERUNIT,
		ENUM_PRESSUREUNIT,
		ENUM_RADIOACTIVITYUNIT,
		ENUM_SOLIDANGLEUNIT,
		ENUM_THERMODYNAMICTEMPERATUREUNIT,
		ENUM_TIMEUNIT,
		ENUM_VOLUMEUNIT,
		ENUM_USERDEFINED
	};

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

