/* 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 IfcElectricApplianceTypeEnum = ENUMERATION OF	(DISHWASHER	,ELECTRICCOOKER	,FREESTANDINGELECTRICHEATER	,FREESTANDINGFAN	,FREESTANDINGWATERHEATER	,FREESTANDINGWATERCOOLER	,FREEZER	,FRIDGE_FREEZER	,HANDDRYER	,KITCHENMACHINE	,MICROWAVE	,PHOTOCOPIER	,REFRIGERATOR	,TUMBLEDRYER	,VENDINGMACHINE	,WASHINGMACHINE	,USERDEFINED	,NOTDEFINED);
class IFCQUERY_EXPORT IfcElectricApplianceTypeEnum : virtual public BuildingObject
{
public:
	enum IfcElectricApplianceTypeEnumEnum
	{
		ENUM_DISHWASHER,
		ENUM_ELECTRICCOOKER,
		ENUM_FREESTANDINGELECTRICHEATER,
		ENUM_FREESTANDINGFAN,
		ENUM_FREESTANDINGWATERHEATER,
		ENUM_FREESTANDINGWATERCOOLER,
		ENUM_FREEZER,
		ENUM_FRIDGE_FREEZER,
		ENUM_HANDDRYER,
		ENUM_KITCHENMACHINE,
		ENUM_MICROWAVE,
		ENUM_PHOTOCOPIER,
		ENUM_REFRIGERATOR,
		ENUM_TUMBLEDRYER,
		ENUM_VENDINGMACHINE,
		ENUM_WASHINGMACHINE,
		ENUM_USERDEFINED,
		ENUM_NOTDEFINED
	};

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

