00001 #ifndef vcsl_dimension_h_ 00002 #define vcsl_dimension_h_ 00003 //: 00004 // \file 00005 // \brief Abstract dimension 00006 // \author François BERTEL 00007 // 00008 // \verbatim 00009 // Modifications 00010 // 2000/06/28 François BERTEL Creation. Adapted from IUE 00011 // 2004/09/10 Peter Vanroose Inlined all 1-line methods in class decl 00012 // 2004/09/17 Peter Vanroose do not pass vcsl_unit objects; use vcsl_unit_sptr instead 00013 // \endverbatim 00014 00015 #include <vbl/vbl_ref_count.h> 00016 #include <vcsl/vcsl_dimension_sptr.h> 00017 #include <vcsl/vcsl_unit_sptr.h> 00018 00019 //: Abstract dimension 00020 // A dimension is a type of quantity to be measured 00021 class vcsl_dimension 00022 : public vbl_ref_count 00023 { 00024 //*************************************************************************** 00025 // Constructors/Destructor 00026 //*************************************************************************** 00027 00028 protected: 00029 // Default constructor 00030 vcsl_dimension() {} 00031 00032 public: 00033 // Copy constructor 00034 vcsl_dimension(vcsl_dimension const&) : vbl_ref_count() {} 00035 00036 // Destructor 00037 virtual ~vcsl_dimension() {} 00038 00039 //*************************************************************************** 00040 // Status report 00041 //*************************************************************************** 00042 00043 //: Is `new_unit' a compatible unit for the dimension ? 00044 virtual bool compatible_unit(vcsl_unit_sptr const& new_unit) const=0; 00045 00046 //: Return the standard unit associated to the dimension 00047 virtual vcsl_unit_sptr standard_unit() const=0; 00048 }; 00049 00050 #endif // vcsl_dimension_h_