#ifndef  ENTITY_SDAITHING_H
#define  ENTITY_SDAITHING_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 SdaiThing : public SDAI_Application_instance {
    protected:
        SDAI_String _id;
        SDAI_Application_instance_ptr _record_copy_created = NULL;    //  OPTIONAL
        SDAI_Application_instance_ptr _record_created = NULL;    //  OPTIONAL
        SDAI_Application_instance_ptr _record_creator = NULL;    //  OPTIONAL
        SDAI_Application_instance_ptr _record_logically_deleted = NULL;    //  OPTIONAL
        SDAI_Application_instance_ptr _why_deleted = NULL;    //  OPTIONAL
    public: 
        SdaiThing();
        SdaiThing( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiThing( SdaiThing & e );
        ~SdaiThing();
        int opcode() {
            return 0;
        }
  const SDAI_String   id_() const;
        SDAI_String   id_();
        void id_( const SDAI_String x );

        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr_c record_copy_created_() const;
        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr   record_copy_created_();
        void record_copy_created_( const SdaiRepresentation_of_gregorian_date_and_utc_time_ptr x );

        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr_c record_created_() const;
        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr   record_created_();
        void record_created_( const SdaiRepresentation_of_gregorian_date_and_utc_time_ptr x );

        SdaiPossible_individual_ptr_c record_creator_() const;
        SdaiPossible_individual_ptr   record_creator_();
        void record_creator_( const SdaiPossible_individual_ptr x );

        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr_c record_logically_deleted_() const;
        SdaiRepresentation_of_gregorian_date_and_utc_time_ptr   record_logically_deleted_();
        void record_logically_deleted_( const SdaiRepresentation_of_gregorian_date_and_utc_time_ptr x );

        SdaiClass_of_information_representation_ptr_c why_deleted_() const;
        SdaiClass_of_information_representation_ptr   why_deleted_();
        void why_deleted_( const SdaiClass_of_information_representation_ptr x );

};

inline SdaiThing * create_SdaiThing() {
    return new SdaiThing;
}

void init_SdaiThing(Registry& reg);

namespace lifecycle_integration_schema {
    extern EntityDescriptor *e_thing;
    extern AttrDescriptor *a_0id;
    extern AttrDescriptor *a_1record_copy_created;
    extern AttrDescriptor *a_2record_created;
    extern AttrDescriptor *a_3record_creator;
    extern AttrDescriptor *a_4record_logically_deleted;
    extern AttrDescriptor *a_5why_deleted;
}

#endif
