core/vcsl/vcsl_dimension.h
Go to the documentation of this file.
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_