#ifndef  TYPE_SDAIREAL_INTERVAL_H
#define  TYPE_SDAIREAL_INTERVAL_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.


//////////  SELECT TYPE SdaiReal_interval
class SC_SCHEMA_EXPORT SdaiReal_interval  :  public SDAI_Select {
  protected:
    //  types in SELECT 
    //   REAL_INTERVAL_FROM_MIN    --  sdaiINSTANCE
    //   REAL_INTERVAL_TO_MAX    --  sdaiINSTANCE
    //   FINITE_REAL_INTERVAL    --  sdaiINSTANCE
    //   ELEMENTARY_SPACE    --  sdaiINSTANCE
       SDAI_Application_instance_ptr _app_inst;

  public:
    virtual const TypeDescriptor * AssignEntity (SDAI_Application_instance * se);
    virtual SDAI_Select * NewSelect ();

    virtual BASE_TYPE ValueType() const;


// STEP Part 21
    virtual void STEPwrite_content (ostream& out =std::cout,
                    const char *currSch =0) const;
    virtual void STEPwrite_verbose (ostream& out =std::cout,
                    const char *currSch =0) const;
    virtual Severity STEPread_content (istream& in =cin,
        InstMgrBase * instances =0, const char *utype =0,
        int addFileId =0, const char *currSch =0);
    virtual Severity StrToVal_content (const char *,
        InstMgrBase * instances =0);

// STEP Part 22:  SDAI

// constructors
    SdaiReal_interval( const SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    //  part 1
    SdaiReal_interval( const SdaiReal_interval_from_min_ptr&,
                       const SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    SdaiReal_interval( const SdaiReal_interval_to_max_ptr&,
                       const SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    SdaiReal_interval( const SdaiFinite_real_interval_ptr&,
                       const SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    SdaiReal_interval( const SdaiElementary_space_ptr&,
                       const SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    virtual ~SdaiReal_interval();

    //  part 2
    operator SdaiReal_interval_from_min_ptr();
    operator SdaiReal_interval_to_max_ptr();
    operator SdaiFinite_real_interval_ptr();
    operator SdaiElementary_space_ptr();

    //  part 3
  const SdaiElementary_space_enumerators_var   space_id_() const;
        SdaiElementary_space_enumerators_var   space_id_();
        void space_id_( const SdaiElementary_space_enumerators_var x );

  const SdaiOpen_closed_var   max_closure_() const;
        SdaiOpen_closed_var   max_closure_();
        void max_closure_( const SdaiOpen_closed_var x );

        SDAI_Real   max_() const;
        void max_( const SDAI_Real x );

  const SdaiOpen_closed_var   min_closure_() const;
        SdaiOpen_closed_var   min_closure_();
        void min_closure_( const SdaiOpen_closed_var x );

        SDAI_Real   min_() const;
        void min_( const SDAI_Real x );


    //  part 4
    SdaiReal_interval& operator =( const SdaiReal_interval_from_min_ptr& );
    SdaiReal_interval& operator =( const SdaiReal_interval_to_max_ptr& );
    SdaiReal_interval& operator =( const SdaiFinite_real_interval_ptr& );
    SdaiReal_interval& operator =( const SdaiElementary_space_ptr& );
    // not in SDAI
    SdaiReal_interval& ShallowCopy ( const SdaiReal_interval& );

#ifdef COMPILER_DEFINES_OPERATOR_EQ
#else
    SdaiReal_interval& operator =( SdaiReal_interval * const & );
    SDAI_Select& operator =( const SDAI_Select& );
#endif

    //  part 5
    Logical IsReal_interval_from_min() const;
    Logical IsReal_interval_to_max() const;
    Logical IsFinite_real_interval() const;
    Logical IsElementary_space() const;

    //  part 6 ... UnderlyingTypeName () implemented in SDAI_Select class ...

    //  part 7 ... NONE    only for complex selects...
};

inline SDAI_Select * create_SdaiReal_interval () { return new SdaiReal_interval; }
typedef SdaiReal_interval * SdaiReal_intervalH;
typedef SdaiReal_interval_ptr SdaiReal_interval_var;


class SdaiReal_interval_agg : public SelectAggregate {
  protected:
    SelectTypeDescriptor *sel_type;

  public:
    SdaiReal_interval_agg( SelectTypeDescriptor * =ap242_managed_model_based_3d_engineering_mim_lf::t_real_interval );
    ~SdaiReal_interval_agg();
    virtual SingleLinkNode * NewNode()
     { return new SelectNode (new SdaiReal_interval( sel_type )); }
};
inline STEPaggregate * create_SdaiReal_interval_agg () { return new SdaiReal_interval_agg; }
typedef SdaiReal_interval_agg_ptr SdaiReal_interval_agg_var;

/////  END SELECT TYPE real_interval

void init_SdaiReal_interval(Registry& reg);

#endif
