#ifndef  ENTITY_SDAIB_SPLINE_SURFACE_H
#define  ENTITY_SDAIB_SPLINE_SURFACE_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 SdaiB_spline_surface : public SdaiBounded_surface {
     protected:
        SDAI_Integer _u_degree = 0;
        SDAI_Integer _v_degree = 0;
        GenericAggregate_ptr _control_points_list = NULL;          //  of  cartesian_point

        SdaiB_spline_surface_form_var _surface_form;
        SDAI_LOGICAL _u_closed;
        SDAI_LOGICAL _v_closed;
        SDAI_LOGICAL _self_intersect;
    public: 
        SdaiB_spline_surface();
        SdaiB_spline_surface( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiB_spline_surface( SdaiB_spline_surface & e );
        ~SdaiB_spline_surface();
        int opcode() {
            return 72;
        }
        SDAI_Integer   u_degree_() const;
        void u_degree_( const SDAI_Integer x );

        SDAI_Integer   v_degree_() const;
        void v_degree_( const SDAI_Integer x );

        GenericAggregate_ptr_c control_points_list_() const;
        GenericAggregate_ptr   control_points_list_();
        void control_points_list_( const GenericAggregate_ptr x );

  const SdaiB_spline_surface_form_var   surface_form_() const;
        SdaiB_spline_surface_form_var   surface_form_();
        void surface_form_( const SdaiB_spline_surface_form_var x );

        Logical   u_closed_() const;
        void u_closed_( const Logical x );

        Logical   v_closed_() const;
        void v_closed_( const Logical x );

        Logical   self_intersect_() const;
        void self_intersect_( const Logical x );

};

inline SdaiB_spline_surface * create_SdaiB_spline_surface() {
    return new SdaiB_spline_surface;
}

void init_SdaiB_spline_surface(Registry& reg);

namespace dimensional_inspection_schema {
    extern EntityDescriptor *e_b_spline_surface;
    extern AttrDescriptor *a_112u_degree;
    extern AttrDescriptor *a_113v_degree;
    extern AttrDescriptor *a_114control_points_list;
    extern AttrDescriptor *a_115surface_form;
    extern AttrDescriptor *a_116u_closed;
    extern AttrDescriptor *a_117v_closed;
    extern AttrDescriptor *a_118self_intersect;
    extern Derived_attribute *a_119Du_upper;
    extern Derived_attribute *a_120Dv_upper;
    extern Derived_attribute *a_121Dcontrol_points;
}

#endif
