#ifndef  TYPE_SDAIIFCDERIVEDMEASUREVALUE_H
#define  TYPE_SDAIIFCDERIVEDMEASUREVALUE_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 SdaiIfcderivedmeasurevalue
class SC_SCHEMA_EXPORT SdaiIfcderivedmeasurevalue  :  public SDAI_Select {
  protected:
    //  types in SELECT 
    //   IFCABSORBEDDOSEMEASURE    --  sdaiREAL
    //   IFCACCELERATIONMEASURE    --  sdaiREAL
    //   IFCANGULARVELOCITYMEASURE    --  sdaiREAL
    //   IFCAREADENSITYMEASURE    --  sdaiREAL
    //   IFCCOMPOUNDPLANEANGLEMEASURE    --  LIST_TYPE
    //   IFCCURVATUREMEASURE    --  sdaiREAL
    //   IFCDOSEEQUIVALENTMEASURE    --  sdaiREAL
    //   IFCDYNAMICVISCOSITYMEASURE    --  sdaiREAL
    //   IFCELECTRICCAPACITANCEMEASURE    --  sdaiREAL
    //   IFCELECTRICCHARGEMEASURE    --  sdaiREAL
    //   IFCELECTRICCONDUCTANCEMEASURE    --  sdaiREAL
    //   IFCELECTRICRESISTANCEMEASURE    --  sdaiREAL
    //   IFCELECTRICVOLTAGEMEASURE    --  sdaiREAL
    //   IFCENERGYMEASURE    --  sdaiREAL
    //   IFCFORCEMEASURE    --  sdaiREAL
    //   IFCFREQUENCYMEASURE    --  sdaiREAL
    //   IFCHEATFLUXDENSITYMEASURE    --  sdaiREAL
    //   IFCHEATINGVALUEMEASURE    --  sdaiREAL
    //   IFCILLUMINANCEMEASURE    --  sdaiREAL
    //   IFCINDUCTANCEMEASURE    --  sdaiREAL
    //   IFCINTEGERCOUNTRATEMEASURE    --  sdaiINTEGER
    //   IFCIONCONCENTRATIONMEASURE    --  sdaiREAL
    //   IFCISOTHERMALMOISTURECAPACITYMEASURE    --  sdaiREAL
    //   IFCKINEMATICVISCOSITYMEASURE    --  sdaiREAL
    //   IFCLINEARFORCEMEASURE    --  sdaiREAL
    //   IFCLINEARMOMENTMEASURE    --  sdaiREAL
    //   IFCLINEARSTIFFNESSMEASURE    --  sdaiREAL
    //   IFCLINEARVELOCITYMEASURE    --  sdaiREAL
    //   IFCLUMINOUSFLUXMEASURE    --  sdaiREAL
    //   IFCLUMINOUSINTENSITYDISTRIBUTIONMEASURE    --  sdaiREAL
    //   IFCMAGNETICFLUXDENSITYMEASURE    --  sdaiREAL
    //   IFCMAGNETICFLUXMEASURE    --  sdaiREAL
    //   IFCMASSDENSITYMEASURE    --  sdaiREAL
    //   IFCMASSFLOWRATEMEASURE    --  sdaiREAL
    //   IFCMASSPERLENGTHMEASURE    --  sdaiREAL
    //   IFCMODULUSOFELASTICITYMEASURE    --  sdaiREAL
    //   IFCMODULUSOFLINEARSUBGRADEREACTIONMEASURE    --  sdaiREAL
    //   IFCMODULUSOFROTATIONALSUBGRADEREACTIONMEASURE    --  sdaiREAL
    //   IFCMODULUSOFSUBGRADEREACTIONMEASURE    --  sdaiREAL
    //   IFCMOISTUREDIFFUSIVITYMEASURE    --  sdaiREAL
    //   IFCMOLECULARWEIGHTMEASURE    --  sdaiREAL
    //   IFCMOMENTOFINERTIAMEASURE    --  sdaiREAL
    //   IFCMONETARYMEASURE    --  sdaiREAL
    //   IFCPHMEASURE    --  sdaiREAL
    //   IFCPLANARFORCEMEASURE    --  sdaiREAL
    //   IFCPOWERMEASURE    --  sdaiREAL
    //   IFCPRESSUREMEASURE    --  sdaiREAL
    //   IFCRADIOACTIVITYMEASURE    --  sdaiREAL
    //   IFCROTATIONALFREQUENCYMEASURE    --  sdaiREAL
    //   IFCROTATIONALMASSMEASURE    --  sdaiREAL
    //   IFCROTATIONALSTIFFNESSMEASURE    --  sdaiREAL
    //   IFCSECTIONMODULUSMEASURE    --  sdaiREAL
    //   IFCSECTIONALAREAINTEGRALMEASURE    --  sdaiREAL
    //   IFCSHEARMODULUSMEASURE    --  sdaiREAL
    //   IFCSOUNDPOWERLEVELMEASURE    --  sdaiREAL
    //   IFCSOUNDPOWERMEASURE    --  sdaiREAL
    //   IFCSOUNDPRESSURELEVELMEASURE    --  sdaiREAL
    //   IFCSOUNDPRESSUREMEASURE    --  sdaiREAL
    //   IFCSPECIFICHEATCAPACITYMEASURE    --  sdaiREAL
    //   IFCTEMPERATUREGRADIENTMEASURE    --  sdaiREAL
    //   IFCTEMPERATURERATEOFCHANGEMEASURE    --  sdaiREAL
    //   IFCTHERMALADMITTANCEMEASURE    --  sdaiREAL
    //   IFCTHERMALCONDUCTIVITYMEASURE    --  sdaiREAL
    //   IFCTHERMALEXPANSIONCOEFFICIENTMEASURE    --  sdaiREAL
    //   IFCTHERMALRESISTANCEMEASURE    --  sdaiREAL
    //   IFCTHERMALTRANSMITTANCEMEASURE    --  sdaiREAL
    //   IFCTORQUEMEASURE    --  sdaiREAL
    //   IFCVAPORPERMEABILITYMEASURE    --  sdaiREAL
    //   IFCVOLUMETRICFLOWRATEMEASURE    --  sdaiREAL
    //   IFCWARPINGCONSTANTMEASURE    --  sdaiREAL
    //   IFCWARPINGMOMENTMEASURE    --  sdaiREAL
       SDAI_Real _real;
       IntAggregate_ptr _intaggregate;
       SDAI_Integer _integer;

  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
    SdaiIfcderivedmeasurevalue( const SelectTypeDescriptor * =ifc4::t_ifcderivedmeasurevalue );
    //  part 1
    SdaiIfcderivedmeasurevalue( const SdaiIfccompoundplaneanglemeasure_ptr&,
                                const SelectTypeDescriptor * =ifc4::t_ifcderivedmeasurevalue );
    SdaiIfcderivedmeasurevalue( const SdaiIfcintegercountratemeasure&,
                                const SelectTypeDescriptor * =ifc4::t_ifcderivedmeasurevalue );
    SdaiIfcderivedmeasurevalue( const SDAI_Real&,
                                const SelectTypeDescriptor * =ifc4::t_ifcderivedmeasurevalue );
    virtual ~SdaiIfcderivedmeasurevalue();

    //  part 2
    operator SdaiIfccompoundplaneanglemeasure_ptr();
    operator SdaiIfcintegercountratemeasure();
    operator SDAI_Real ();

    //  part 3

    //  part 4
    SdaiIfcderivedmeasurevalue& operator =( const SdaiIfccompoundplaneanglemeasure_ptr& );
    SdaiIfcderivedmeasurevalue& operator =( const SdaiIfcintegercountratemeasure& );
    SdaiIfcderivedmeasurevalue& operator =( const SDAI_Real& );
    // not in SDAI
    SdaiIfcderivedmeasurevalue& ShallowCopy ( const SdaiIfcderivedmeasurevalue& );

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

    //  part 5
    Logical IsIfcabsorbeddosemeasure() const;
    Logical IsIfcaccelerationmeasure() const;
    Logical IsIfcangularvelocitymeasure() const;
    Logical IsIfcareadensitymeasure() const;
    Logical IsIfccompoundplaneanglemeasure() const;
    Logical IsIfccurvaturemeasure() const;
    Logical IsIfcdoseequivalentmeasure() const;
    Logical IsIfcdynamicviscositymeasure() const;
    Logical IsIfcelectriccapacitancemeasure() const;
    Logical IsIfcelectricchargemeasure() const;
    Logical IsIfcelectricconductancemeasure() const;
    Logical IsIfcelectricresistancemeasure() const;
    Logical IsIfcelectricvoltagemeasure() const;
    Logical IsIfcenergymeasure() const;
    Logical IsIfcforcemeasure() const;
    Logical IsIfcfrequencymeasure() const;
    Logical IsIfcheatfluxdensitymeasure() const;
    Logical IsIfcheatingvaluemeasure() const;
    Logical IsIfcilluminancemeasure() const;
    Logical IsIfcinductancemeasure() const;
    Logical IsIfcintegercountratemeasure() const;
    Logical IsIfcionconcentrationmeasure() const;
    Logical IsIfcisothermalmoisturecapacitymeasure() const;
    Logical IsIfckinematicviscositymeasure() const;
    Logical IsIfclinearforcemeasure() const;
    Logical IsIfclinearmomentmeasure() const;
    Logical IsIfclinearstiffnessmeasure() const;
    Logical IsIfclinearvelocitymeasure() const;
    Logical IsIfcluminousfluxmeasure() const;
    Logical IsIfcluminousintensitydistributionmeasure() const;
    Logical IsIfcmagneticfluxdensitymeasure() const;
    Logical IsIfcmagneticfluxmeasure() const;
    Logical IsIfcmassdensitymeasure() const;
    Logical IsIfcmassflowratemeasure() const;
    Logical IsIfcmassperlengthmeasure() const;
    Logical IsIfcmodulusofelasticitymeasure() const;
    Logical IsIfcmodulusoflinearsubgradereactionmeasure() const;
    Logical IsIfcmodulusofrotationalsubgradereactionmeasure() const;
    Logical IsIfcmodulusofsubgradereactionmeasure() const;
    Logical IsIfcmoisturediffusivitymeasure() const;
    Logical IsIfcmolecularweightmeasure() const;
    Logical IsIfcmomentofinertiameasure() const;
    Logical IsIfcmonetarymeasure() const;
    Logical IsIfcphmeasure() const;
    Logical IsIfcplanarforcemeasure() const;
    Logical IsIfcpowermeasure() const;
    Logical IsIfcpressuremeasure() const;
    Logical IsIfcradioactivitymeasure() const;
    Logical IsIfcrotationalfrequencymeasure() const;
    Logical IsIfcrotationalmassmeasure() const;
    Logical IsIfcrotationalstiffnessmeasure() const;
    Logical IsIfcsectionmodulusmeasure() const;
    Logical IsIfcsectionalareaintegralmeasure() const;
    Logical IsIfcshearmodulusmeasure() const;
    Logical IsIfcsoundpowerlevelmeasure() const;
    Logical IsIfcsoundpowermeasure() const;
    Logical IsIfcsoundpressurelevelmeasure() const;
    Logical IsIfcsoundpressuremeasure() const;
    Logical IsIfcspecificheatcapacitymeasure() const;
    Logical IsIfctemperaturegradientmeasure() const;
    Logical IsIfctemperaturerateofchangemeasure() const;
    Logical IsIfcthermaladmittancemeasure() const;
    Logical IsIfcthermalconductivitymeasure() const;
    Logical IsIfcthermalexpansioncoefficientmeasure() const;
    Logical IsIfcthermalresistancemeasure() const;
    Logical IsIfcthermaltransmittancemeasure() const;
    Logical IsIfctorquemeasure() const;
    Logical IsIfcvaporpermeabilitymeasure() const;
    Logical IsIfcvolumetricflowratemeasure() const;
    Logical IsIfcwarpingconstantmeasure() const;
    Logical IsIfcwarpingmomentmeasure() const;

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

    //  part 7
    const TypeDescriptor *SetUnderlyingType ( const TypeDescriptor * td );
};

inline SDAI_Select * create_SdaiIfcderivedmeasurevalue () { return new SdaiIfcderivedmeasurevalue; }
typedef SdaiIfcderivedmeasurevalue * SdaiIfcderivedmeasurevalueH;
typedef SdaiIfcderivedmeasurevalue_ptr SdaiIfcderivedmeasurevalue_var;


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

  public:
    SdaiIfcderivedmeasurevalue_agg( SelectTypeDescriptor * =ifc4::t_ifcderivedmeasurevalue );
    ~SdaiIfcderivedmeasurevalue_agg();
    virtual SingleLinkNode * NewNode()
     { return new SelectNode (new SdaiIfcderivedmeasurevalue( sel_type )); }
};
inline STEPaggregate * create_SdaiIfcderivedmeasurevalue_agg () { return new SdaiIfcderivedmeasurevalue_agg; }
typedef SdaiIfcderivedmeasurevalue_agg_ptr SdaiIfcderivedmeasurevalue_agg_var;

/////  END SELECT TYPE ifcderivedmeasurevalue

void init_SdaiIfcderivedmeasurevalue(Registry& reg);

#endif
