#ifndef  ENTITY_SDAIIFCRELSPACEBOUNDARY_H
#define  ENTITY_SDAIIFCRELSPACEBOUNDARY_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 SdaiIfcrelspaceboundary : public SdaiIfcrelconnects {
     protected:
        SdaiIfcspaceboundaryselect _relatingspace;
        SDAI_Application_instance_ptr _relatedbuildingelement = NULL;
        SDAI_Application_instance_ptr _connectiongeometry = NULL;    //  OPTIONAL
        SdaiIfcphysicalorvirtualenum_var _physicalorvirtualboundary;
        SdaiIfcinternalorexternalenum_var _internalorexternalboundary;
    public: 
        SdaiIfcrelspaceboundary();
        SdaiIfcrelspaceboundary( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcrelspaceboundary( SdaiIfcrelspaceboundary & e );
        ~SdaiIfcrelspaceboundary();
        int opcode() {
            return 88;
        }
        SdaiIfcspaceboundaryselect_ptr_c relatingspace_() const;
        SdaiIfcspaceboundaryselect_ptr   relatingspace_();
        void relatingspace_( const SdaiIfcspaceboundaryselect_ptr x );

        SdaiIfcelement_ptr_c relatedbuildingelement_() const;
        SdaiIfcelement_ptr   relatedbuildingelement_();
        void relatedbuildingelement_( const SdaiIfcelement_ptr x );

        SdaiIfcconnectiongeometry_ptr_c connectiongeometry_() const;
        SdaiIfcconnectiongeometry_ptr   connectiongeometry_();
        void connectiongeometry_( const SdaiIfcconnectiongeometry_ptr x );

  const SdaiIfcphysicalorvirtualenum_var   physicalorvirtualboundary_() const;
        SdaiIfcphysicalorvirtualenum_var   physicalorvirtualboundary_();
        void physicalorvirtualboundary_( const SdaiIfcphysicalorvirtualenum_var x );

  const SdaiIfcinternalorexternalenum_var   internalorexternalboundary_() const;
        SdaiIfcinternalorexternalenum_var   internalorexternalboundary_();
        void internalorexternalboundary_( const SdaiIfcinternalorexternalenum_var x );

};

inline SdaiIfcrelspaceboundary * create_SdaiIfcrelspaceboundary() {
    return new SdaiIfcrelspaceboundary;
}

void init_SdaiIfcrelspaceboundary(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcrelspaceboundary;
    extern AttrDescriptor *a_194relatingspace;
    extern AttrDescriptor *a_195relatedbuildingelement;
    extern AttrDescriptor *a_196connectiongeometry;
    extern AttrDescriptor *a_197physicalorvirtualboundary;
    extern AttrDescriptor *a_198internalorexternalboundary;
}

#endif
