0029582: Coding Rules, Bnd_Range - inconsistent methods pair GetMin()/GetMAX()
[occt.git] / src / Quantity / Quantity_Convert.hxx
1 // Created on: 1994-07-19
2 // Created by: Guest Kernel
3 // Copyright (c) 1994-1999 Matra Datavision
4 // Copyright (c) 1999-2014 OPEN CASCADE SAS
5 //
6 // This file is part of Open CASCADE Technology software library.
7 //
8 // This library is free software; you can redistribute it and/or modify it under
9 // the terms of the GNU Lesser General Public License version 2.1 as published
10 // by the Free Software Foundation, with special exception defined in the file
11 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12 // distribution for complete text of the license and disclaimer of any warranty.
13 //
14 // Alternatively, this file may be used under the terms of Open CASCADE
15 // commercial license or contractual agreement.
16
17 #ifndef _Quantity_Convert_HeaderFile
18 #define _Quantity_Convert_HeaderFile
19
20 #include <NCollection_Array1.hxx>
21 #include <Standard.hxx>
22 #include <Standard_DefineAlloc.hxx>
23 #include <Standard_Handle.hxx>
24 #include <Standard_Real.hxx>
25 #include <Standard_Boolean.hxx>
26 #include <Quantity_PhysicalQuantity.hxx>
27
28 class TCollection_AsciiString;
29
30 #ifndef __Quantity_API
31   #if defined(_WIN32) && !defined(HAVE_NO_DLL)
32     #ifdef __Quantity_DLL
33       #define __Quantity_API __declspec(dllexport)
34     #else
35       #define __Quantity_API __declspec(dllimport)
36     #endif
37   #else
38     #define __Quantity_API
39   #endif
40 #endif
41
42 extern __Quantity_API NCollection_Array1<Standard_Real> ConvertTable;
43
44 //! Services to manage units conversion between Front-ends and Engines.
45 //! This conversion is managed by a table of correspondance between the quantities
46 //! and their "conversion coefficient".
47 //! This table is implemented like an external array (TCollection_Array1) regarding
48 //! to the quantities enumeration.
49 class Standard_DEPRECATED("This class is deprecated - UnitsAPI should be used instead") Quantity_Convert
50 {
51 public:
52
53   DEFINE_STANDARD_ALLOC
54
55   //! Creates an object;
56   Standard_EXPORT Quantity_Convert();
57   
58   //! Updates the conversion table (correspondances between
59   //! Quantities and conversion coefficients).
60   static void SetQuantity (const Quantity_PhysicalQuantity theQuantity,
61                            const Standard_Real theCoef)
62   {
63     if (theQuantity > 0 && theQuantity <= 68)
64     {
65       ConvertTable (theQuantity) = theCoef;
66     }
67   }
68
69   //! Converts, from the conversion table, the value theVal from the user system to the SI system.
70   static Standard_Real ConvertUserToSI (const Quantity_PhysicalQuantity theQuantity,
71                                         const Standard_Real theVal)
72   {
73     return theQuantity > 0 && theQuantity <= 68
74          ? theVal * ConvertTable (theQuantity)
75          : theVal;
76   }
77
78   //! Converts, from the conversion table, the value theVal from the SI system to the user system.
79   static Standard_Real ConvertSIToUser (const Quantity_PhysicalQuantity theQuantity, const Standard_Real theVal)
80   {
81     return theQuantity > 0 && theQuantity <= 68
82          ? (theVal / ConvertTable (theQuantity))
83          : theVal;
84   }
85
86   //! if (aType is a physical quantity)
87   //! returns True and the name of the associated PhysicalQuantity .
88   //! else
89   //! returns False.
90   Standard_EXPORT static Standard_Boolean IsPhysicalQuantity (const TCollection_AsciiString& aTypeName, TCollection_AsciiString& anEnum);
91
92 };
93
94 #endif // _Quantity_Convert_HeaderFile