#ifndef  ENTITY_SDAISURFACE_FREEDOM_AND_VALUE_DEFINITION_H
#define  ENTITY_SDAISURFACE_FREEDOM_AND_VALUE_DEFINITION_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 SdaiSurface_freedom_and_value_definition : public SdaiState_definition {
     protected:
        SDAI_Application_instance_ptr _required_surface = NULL;
        SDAI_Application_instance_ptr _coordinate_system = NULL;
        SDAI_Application_instance_ptr _degrees_of_freedom = NULL;
        SdaiMeasure_or_unspecified_value_agg_ptr _values = NULL;          //  of  measure_or_unspecified_value

    public: 
        SdaiSurface_freedom_and_value_definition();
        SdaiSurface_freedom_and_value_definition( SDAI_Application_instance *se, bool addAttrs = true );
        SdaiSurface_freedom_and_value_definition( SdaiSurface_freedom_and_value_definition & e );
        ~SdaiSurface_freedom_and_value_definition();
        int opcode() {
            return 1146;
        }
        SdaiAnalysis_item_within_representation_ptr_c required_surface_() const;
        SdaiAnalysis_item_within_representation_ptr   required_surface_();
        void required_surface_( const SdaiAnalysis_item_within_representation_ptr x );

        SdaiFea_axis2_placement_3d_ptr_c coordinate_system_() const;
        SdaiFea_axis2_placement_3d_ptr   coordinate_system_();
        void coordinate_system_( const SdaiFea_axis2_placement_3d_ptr x );

        SdaiFreedoms_list_ptr_c degrees_of_freedom_() const;
        SdaiFreedoms_list_ptr   degrees_of_freedom_();
        void degrees_of_freedom_( const SdaiFreedoms_list_ptr x );

        SdaiMeasure_or_unspecified_value_agg_ptr_c values_() const;
        SdaiMeasure_or_unspecified_value_agg_ptr   values_();
        void values_( const SdaiMeasure_or_unspecified_value_agg_ptr x );

};

inline SdaiSurface_freedom_and_value_definition * create_SdaiSurface_freedom_and_value_definition() {
    return new SdaiSurface_freedom_and_value_definition;
}

void init_SdaiSurface_freedom_and_value_definition(Registry& reg);

namespace ap209_multidisciplinary_analysis_and_design_mim_lf {
    extern EntityDescriptor *e_surface_freedom_and_value_definition;
    extern AttrDescriptor *a_1696required_surface;
    extern AttrDescriptor *a_1697coordinate_system;
    extern AttrDescriptor *a_1698degrees_of_freedom;
    extern AttrDescriptor *a_1699values;
}

#endif
