#ifndef  TYPE_SDAIIFCLABORRESOURCETYPEENUM_VAR_H
#define  TYPE_SDAIIFCLABORRESOURCETYPEENUM_VAR_H

// This file was generated by exp2cxx,
// 0.8.1.
// You probably don't want to edit it since your modifications
// will be lost if exp2cxx is used to regenerate it.

enum Ifclaborresourcetypeenum {
        Ifclaborresourcetypeenum__administration,
        Ifclaborresourcetypeenum__carpentry,
        Ifclaborresourcetypeenum__cleaning,
        Ifclaborresourcetypeenum__concrete,
        Ifclaborresourcetypeenum__drywall,
        Ifclaborresourcetypeenum__electric,
        Ifclaborresourcetypeenum__finishing,
        Ifclaborresourcetypeenum__flooring,
        Ifclaborresourcetypeenum__general,
        Ifclaborresourcetypeenum__hvac,
        Ifclaborresourcetypeenum__landscaping,
        Ifclaborresourcetypeenum__masonry,
        Ifclaborresourcetypeenum__painting,
        Ifclaborresourcetypeenum__paving,
        Ifclaborresourcetypeenum__plumbing,
        Ifclaborresourcetypeenum__roofing,
        Ifclaborresourcetypeenum__sitegrading,
        Ifclaborresourcetypeenum__steelwork,
        Ifclaborresourcetypeenum__surveying,
        Ifclaborresourcetypeenum__userdefined,
        Ifclaborresourcetypeenum__notdefined,
        Ifclaborresourcetypeenum_unset
};

class SC_SCHEMA_EXPORT SdaiIfclaborresourcetypeenum_var  :  public SDAI_Enum  {
  protected:
        EnumTypeDescriptor *type;

  public:
        SdaiIfclaborresourcetypeenum_var (const char * n =0, EnumTypeDescriptor *et =ifc4::t_ifclaborresourcetypeenum);
        SdaiIfclaborresourcetypeenum_var (Ifclaborresourcetypeenum e, EnumTypeDescriptor *et =ifc4::t_ifclaborresourcetypeenum)
                : type(et) {  set_value (e);  }
        SdaiIfclaborresourcetypeenum_var (const SdaiIfclaborresourcetypeenum_var &e) { set_value(e); }
        ~SdaiIfclaborresourcetypeenum_var () { }
        SdaiIfclaborresourcetypeenum_var& operator= (const SdaiIfclaborresourcetypeenum_var& e)
                {  set_value (e);  return *this;  }
        operator Ifclaborresourcetypeenum () const;

        inline virtual const char * Name () const
                {  return type->Name();  }
        inline virtual int no_elements () const  {  return 21;  }
        virtual const char * element_at (int n) const;
};

typedef       SdaiIfclaborresourcetypeenum_var *   SdaiIfclaborresourcetypeenum_var_ptr;

typedef const SdaiIfclaborresourcetypeenum_var *   SdaiIfclaborresourcetypeenum_var_ptr_c;
  SDAI_Enum * create_SdaiIfclaborresourcetypeenum_var();

class SdaiIfclaborresourcetypeenum_var_agg  :  public EnumAggregate  {
  protected:
    EnumTypeDescriptor *enum_type;

  public:
    SdaiIfclaborresourcetypeenum_var_agg( EnumTypeDescriptor * =ifc4::t_ifclaborresourcetypeenum);
    virtual ~SdaiIfclaborresourcetypeenum_var_agg();
    virtual SingleLinkNode * NewNode()
        { return new EnumNode (new SdaiIfclaborresourcetypeenum_var( "", enum_type )); }
};

typedef       SdaiIfclaborresourcetypeenum_var_agg *   SdaiIfclaborresourcetypeenum_var_agg_ptr;

typedef const SdaiIfclaborresourcetypeenum_var_agg *   SdaiIfclaborresourcetypeenum_var_agg_ptr_c;
  STEPaggregate * create_SdaiIfclaborresourcetypeenum_var_agg ();
void init_SdaiIfclaborresourcetypeenum_var(Registry& reg);

#endif
