#ifndef  ENTITY_SDAIIFCSURFACETEXTURE_H
#define  ENTITY_SDAIIFCSURFACETEXTURE_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 SdaiIfcsurfacetexture : public SdaiIfcpresentationitem {
     protected:
        SDAI_BOOLEAN _repeats = false;
        SDAI_BOOLEAN _repeatt = false;
        SDAI_String _mode;    //  OPTIONAL
        SDAI_Application_instance_ptr _texturetransform = NULL;    //  OPTIONAL
        StringAggregate_ptr _parameter = NULL;    //  OPTIONAL          //  of  ifcidentifier

    public: 
        SdaiIfcsurfacetexture();
        SdaiIfcsurfacetexture( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiIfcsurfacetexture( SdaiIfcsurfacetexture & e );
        ~SdaiIfcsurfacetexture();
        int opcode() {
            return 163;
        }
        Boolean   repeats_() const;
        void repeats_( const Boolean x );

        Boolean   repeatt_() const;
        void repeatt_( const Boolean x );

  const SdaiIfcidentifier   mode_() const;
        SdaiIfcidentifier   mode_();
        void mode_( const SdaiIfcidentifier x );

        SdaiIfccartesiantransformationoperator2d_ptr_c texturetransform_() const;
        SdaiIfccartesiantransformationoperator2d_ptr   texturetransform_();
        void texturetransform_( const SdaiIfccartesiantransformationoperator2d_ptr x );

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

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

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

};

inline SdaiIfcsurfacetexture * create_SdaiIfcsurfacetexture() {
    return new SdaiIfcsurfacetexture;
}

void init_SdaiIfcsurfacetexture(Registry& reg);

namespace ifc4 {
    extern EntityDescriptor *e_ifcsurfacetexture;
    extern AttrDescriptor *a_353repeats;
    extern AttrDescriptor *a_354repeatt;
    extern AttrDescriptor *a_355mode;
    extern AttrDescriptor *a_356texturetransform;
    extern AttrDescriptor *a_357parameter;
    extern Inverse_attribute *a_358Iismappedby;
    extern Inverse_attribute *a_359Iusedinstyles;
}

#endif
