#ifndef  ENTITY_SDAIIFCCLASSIFICATION_H
#define  ENTITY_SDAIIFCCLASSIFICATION_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.

class SC_SCHEMA_EXPORT SdaiIfcclassification : public SdaiIfcexternalinformation {
     protected:
        SDAI_String _source;    //  OPTIONAL
        SDAI_String _edition;    //  OPTIONAL
        SDAI_String _editiondate;    //  OPTIONAL
        SDAI_String _name;
        SDAI_String _description;    //  OPTIONAL
        SDAI_String _location;    //  OPTIONAL
        StringAggregate_ptr _referencetokens = NULL;    //  OPTIONAL          //  of  ifcidentifier

    public: 
        SdaiIfcclassification();
        SdaiIfcclassification( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcclassification( SdaiIfcclassification & e );
        ~SdaiIfcclassification();
        int opcode() {
            return 356;
        }
  const SdaiIfclabel   source_() const;
        SdaiIfclabel   source_();
        void source_( const SdaiIfclabel x );

  const SdaiIfclabel   edition_() const;
        SdaiIfclabel   edition_();
        void edition_( const SdaiIfclabel x );

  const SdaiIfcdate   editiondate_() const;
        SdaiIfcdate   editiondate_();
        void editiondate_( const SdaiIfcdate x );

  const SdaiIfclabel   name_() const;
        SdaiIfclabel   name_();
        void name_( const SdaiIfclabel x );

  const SdaiIfctext   description_() const;
        SdaiIfctext   description_();
        void description_( const SdaiIfctext x );

  const SdaiIfcurireference   location_() const;
        SdaiIfcurireference   location_();
        void location_( const SdaiIfcurireference x );

        StringAggregate_ptr_c referencetokens_() const;
        StringAggregate_ptr   referencetokens_();
        void referencetokens_( const StringAggregate_ptr x );

        EntityAggregate_ptr_c classificationforobjects_() const;
        EntityAggregate_ptr   classificationforobjects_();
        void classificationforobjects_( const EntityAggregate_ptr x );

        EntityAggregate_ptr_c hasreferences_() const;
        EntityAggregate_ptr   hasreferences_();
        void hasreferences_( const EntityAggregate_ptr x );

};

inline SdaiIfcclassification * create_SdaiIfcclassification() {
    return new SdaiIfcclassification;
}

void init_SdaiIfcclassification(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcclassification;
    extern AttrDescriptor *a_764source;
    extern AttrDescriptor *a_765edition;
    extern AttrDescriptor *a_766editiondate;
    extern AttrDescriptor *a_767name;
    extern AttrDescriptor *a_768description;
    extern AttrDescriptor *a_769location;
    extern AttrDescriptor *a_770referencetokens;
    extern Inverse_attribute *a_771Iclassificationforobjects;
    extern Inverse_attribute *a_772Ihasreferences;
}

#endif
