diff --git a/src/App/Application.cpp b/src/App/Application.cpp
index 4d14f4280..bcb959a61 100644
--- a/src/App/Application.cpp
+++ b/src/App/Application.cpp
@@ -73,6 +73,8 @@
#include
#include
#include
+#include
+#include
#include "GeoFeature.h"
#include "FeatureTest.h"
@@ -233,6 +235,9 @@ Application::Application(ParameterManager * /*pcSysParamMngr*/,
//insert Units module
PyObject* pUnitsModule = Py_InitModule3("Units", Base::UnitsApi::Methods,
"The Unit API");
+ Base::Interpreter().addType(&Base::QuantityPy ::Type,pUnitsModule,"Quantity");
+ Base::Interpreter().addType(&Base::UnitPy ::Type,pUnitsModule,"Unit");
+
Py_INCREF(pUnitsModule);
PyModule_AddObject(pAppModule, "Units", pUnitsModule);
diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py
index 9eeb633b0..315e036b0 100644
--- a/src/App/FreeCADInit.py
+++ b/src/App/FreeCADInit.py
@@ -135,6 +135,81 @@ FreeCAD.EndingAdd("FreeCAD document (*.FCStd)","FreeCAD")
# set to no gui, is overwritten by InitGui
App.GuiUp = 0
+# fill up unit definitions
+App.Units.NanoMeter = App.Units.Quantity('nm')
+App.Units.MicroMeter = App.Units.Quantity('ym')
+App.Units.MilliMeter = App.Units.Quantity('mm')
+App.Units.CentiMeter = App.Units.Quantity('cm')
+App.Units.DeciMeter = App.Units.Quantity('dm')
+App.Units.Meter = App.Units.Quantity('m')
+App.Units.KiloMeter = App.Units.Quantity('km')
+
+App.Units.Liter = App.Units.Quantity('l')
+
+App.Units.MicroGram = App.Units.Quantity('yg')
+App.Units.MilliGram = App.Units.Quantity('mg')
+App.Units.Gram = App.Units.Quantity('g')
+App.Units.KiloGram = App.Units.Quantity('kg')
+App.Units.Ton = App.Units.Quantity('t')
+
+App.Units.Second = App.Units.Quantity('s')
+App.Units.Minut = App.Units.Quantity('min')
+App.Units.Hour = App.Units.Quantity('h')
+
+App.Units.Ampere = App.Units.Quantity('A')
+App.Units.MilliAmpere = App.Units.Quantity('mA')
+App.Units.KiloAmpere = App.Units.Quantity('kA')
+App.Units.MegaAmpere = App.Units.Quantity('MA')
+
+App.Units.Kelvin = App.Units.Quantity('K')
+App.Units.MilliKelvin = App.Units.Quantity('mK')
+App.Units.MicroKelvin = App.Units.Quantity('yK')
+
+App.Units.Mole = App.Units.Quantity('mol')
+
+App.Units.Candela = App.Units.Quantity('cd')
+
+App.Units.Inch = App.Units.Quantity('in')
+App.Units.Foot = App.Units.Quantity('fo')
+App.Units.Thou = App.Units.Quantity('th')
+App.Units.Yard = App.Units.Quantity('yr')
+App.Units.Mile = App.Units.Quantity('mile')
+
+App.Units.Pound = App.Units.Quantity('lb')
+App.Units.Ounce = App.Units.Quantity('oz')
+App.Units.Stone = App.Units.Quantity('st')
+App.Units.Hundredweights= App.Units.Quantity('cwt')
+
+App.Units.Newton = App.Units.Quantity('N')
+App.Units.KiloNewton = App.Units.Quantity('kN')
+App.Units.MegaNewton = App.Units.Quantity('MN')
+App.Units.MilliNewton = App.Units.Quantity('mN')
+
+App.Units.Pascal = App.Units.Quantity('Pa')
+App.Units.KiloPascal = App.Units.Quantity('kPa')
+App.Units.MegaPascal = App.Units.Quantity('MPa')
+App.Units.GigaPascal = App.Units.Quantity('GPa')
+
+App.Units.PSI = App.Units.Quantity('psi')
+
+App.Units.Watt = App.Units.Quantity('W')
+App.Units.VoltAmpere = App.Units.Quantity('VA')
+
+App.Units.Joul = App.Units.Quantity('J')
+App.Units.NewtonMeter = App.Units.Quantity('Nm')
+App.Units.VoltAmpereSecond = App.Units.Quantity('VAs')
+App.Units.WattSecond = App.Units.Quantity('Ws')
+
+App.Units.MPH = App.Units.Quantity('mile/h')
+App.Units.KMH = App.Units.Quantity('km/h')
+
+
+App.Units.Degree = App.Units.Quantity('deg')
+App.Units.Radian = App.Units.Quantity('rad')
+App.Units.Gon = App.Units.Quantity('gon')
+
+
+
# clean up namespace
del(InitApplications)
diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp
index 97073d44e..cbc3323a8 100644
--- a/src/Base/Quantity.cpp
+++ b/src/Base/Quantity.cpp
@@ -39,12 +39,6 @@
# pragma warning(disable : 4335) // disable MAC file format warning on VC
#endif
-#ifndef DOUBLE_MAX
-# define DOUBLE_MAX 1.7976931348623157E+308 /* max decimal value of a "double"*/
-#endif
-#ifndef DOUBLE_MIN
-# define DOUBLE_MIN 2.2250738585072014E-308 /* min decimal value of a "double"*/
-#endif
using namespace Base;
@@ -150,6 +144,82 @@ void Quantity::setInvalid(void)
_Value = DOUBLE_MIN ;
}
+// === Predefined types =====================================================
+
+Quantity Quantity::NanoMeter (1.0e-6 ,Unit(1));
+Quantity Quantity::MicroMeter (1.0e-3 ,Unit(1));
+Quantity Quantity::MilliMeter (1.0 ,Unit(1));
+Quantity Quantity::CentiMeter (10.0 ,Unit(1));
+Quantity Quantity::DeciMeter (100.0 ,Unit(1));
+Quantity Quantity::Meter (1.0e3 ,Unit(1));
+Quantity Quantity::KiloMeter (1.0e6 ,Unit(1));
+
+Quantity Quantity::Liter (1000000.0 ,Unit(3));
+
+Quantity Quantity::MicroGram (1.0e-9 ,Unit(0,1));
+Quantity Quantity::MilliGram (1.0e-6 ,Unit(0,1));
+Quantity Quantity::Gram (1.0e-3 ,Unit(0,1));
+Quantity Quantity::KiloGram (1.0 ,Unit(0,1));
+Quantity Quantity::Ton (1.0e3 ,Unit(0,1));
+
+Quantity Quantity::Second (1.0 ,Unit(0,0,1));
+Quantity Quantity::Minut (60.0 ,Unit(0,0,1));
+Quantity Quantity::Hour (3600.0 ,Unit(0,0,1));
+
+Quantity Quantity::Ampere (1.0 ,Unit(0,0,0,1));
+Quantity Quantity::MilliAmpere (0.001 ,Unit(0,0,0,1));
+Quantity Quantity::KiloAmpere (1000.0 ,Unit(0,0,0,1));
+Quantity Quantity::MegaAmpere (1.0e6 ,Unit(0,0,0,1));
+
+Quantity Quantity::Kelvin (1.0 ,Unit(0,0,0,0,1));
+Quantity Quantity::MilliKelvin (0.001 ,Unit(0,0,0,0,1));
+Quantity Quantity::MicroKelvin (0.000001 ,Unit(0,0,0,0,1));
+
+Quantity Quantity::Mole (1.0 ,Unit(0,0,0,0,0,1));
+
+Quantity Quantity::Candela (1.0 ,Unit(0,0,0,0,0,0,1));
+
+Quantity Quantity::Inch (25.4 ,Unit(1));
+Quantity Quantity::Foot (304.8 ,Unit(1));
+Quantity Quantity::Thou (0.0254 ,Unit(1));
+Quantity Quantity::Yard (914.4 ,Unit(1));
+Quantity Quantity::Mile (1609344.0 ,Unit(1));
+
+Quantity Quantity::Pound (0.45359237 ,Unit(0,1));
+Quantity Quantity::Ounce (0.45359237 ,Unit(0,1));
+Quantity Quantity::Stone (6.35029318 ,Unit(0,1));
+Quantity Quantity::Hundredweights (50.80234544 ,Unit(0,1));
+
+Quantity Quantity::Newton (1000.0 ,Unit(1,1,-2)); // Newton (kg*m/s^2)
+Quantity Quantity::KiloNewton (1e+6 ,Unit(1,1,-2));
+Quantity Quantity::MegaNewton (1e+9 ,Unit(1,1,-2));
+Quantity Quantity::MilliNewton (1.0 ,Unit(1,1,-2));
+
+Quantity Quantity::Pascal (0.001 ,Unit(-1,1,-2)); // Pascal (kg/m*s^2 or N/m^2)
+Quantity Quantity::KiloPascal (1.00 ,Unit(-1,1,-2));
+Quantity Quantity::MegaPascal (1000.0 ,Unit(-1,1,-2));
+Quantity Quantity::GigaPascal (1e+6 ,Unit(-1,1,-2));
+
+Quantity Quantity::PSI (0.145038 ,Unit(-1,1,-2)); // pounds/in^2
+
+Quantity Quantity::Watt (1e+6 ,Unit(2,1,-3)); // Watt (kg*m^2/s^3)
+Quantity Quantity::VoltAmpere (1e+6 ,Unit(2,1,-3)); // VoltAmpere (kg*m^2/s^3)
+
+Quantity Quantity::Joul (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2)
+Quantity Quantity::NewtonMeter (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2)
+Quantity Quantity::VoltAmpereSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2)
+Quantity Quantity::WattSecond (1e+6 ,Unit(2,1,-2)); // Joule (kg*m^2/s^2)
+
+Quantity Quantity::KMH (277.778 ,Unit(1,0,-1)); // km/h
+Quantity Quantity::MPH (447.04 ,Unit(1,0,-1)); // Mile/h
+
+Quantity Quantity::Degree (1.0 ,Unit(0,0,0,0,0,0,0,1)); // degree (internal standard angle)
+Quantity Quantity::Radian (180/M_PI ,Unit(0,0,0,0,0,0,0,1)); // radian
+Quantity Quantity::Gon (360.0/400.0 ,Unit(0,0,0,0,0,0,0,1)); // gon
+
+
+
+
// === Parser & Scanner stuff ===============================================
// include the Scanner and the Parser for the Quantitys
diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h
index c64d2f74b..86454c520 100644
--- a/src/Base/Quantity.h
+++ b/src/Base/Quantity.h
@@ -27,6 +27,13 @@
#include "Unit.h"
#include
+#ifndef DOUBLE_MAX
+# define DOUBLE_MAX 1.7976931348623157E+308 /* max decimal value of a "double"*/
+#endif
+#ifndef DOUBLE_MIN
+# define DOUBLE_MIN 2.2250738585072014E-308 /* min decimal value of a "double"*/
+#endif
+
namespace Base {
/**
@@ -76,6 +83,83 @@ public:
void setInvalid(void);
+ /** Predefined Unit types. */
+ //@{
+ static Quantity NanoMeter;
+ static Quantity MicroMeter;
+ static Quantity CentiMeter;
+ static Quantity DeciMeter;
+ static Quantity Meter;
+ static Quantity MilliMeter;
+ static Quantity KiloMeter;
+
+ static Quantity Liter;
+
+ static Quantity MicroGram;
+ static Quantity MilliGram;
+ static Quantity Gram;
+ static Quantity KiloGram;
+ static Quantity Ton;
+
+ static Quantity Second;
+ static Quantity Minut;
+ static Quantity Hour;
+
+ static Quantity Ampere;
+ static Quantity MilliAmpere;
+ static Quantity KiloAmpere;
+ static Quantity MegaAmpere;
+
+ static Quantity Kelvin;
+ static Quantity MilliKelvin;
+ static Quantity MicroKelvin;
+
+ static Quantity Mole;
+
+ static Quantity Candela;
+
+ static Quantity Inch;
+ static Quantity Foot;
+ static Quantity Thou;
+ static Quantity Yard;
+
+ static Quantity Pound;
+ static Quantity Ounce;
+ static Quantity Stone;
+ static Quantity Hundredweights;
+ static Quantity Mile;
+
+ static Quantity Newton;
+ static Quantity KiloNewton;
+ static Quantity MegaNewton;
+ static Quantity MilliNewton;
+
+ static Quantity Pascal;
+ static Quantity KiloPascal;
+ static Quantity MegaPascal;
+ static Quantity GigaPascal;
+
+ static Quantity PSI;
+
+ static Quantity Watt;
+ static Quantity VoltAmpere;
+
+ static Quantity Joul;
+ static Quantity NewtonMeter;
+ static Quantity VoltAmpereSecond;
+ static Quantity WattSecond;
+
+ static Quantity KMH;
+ static Quantity MPH;
+
+ static Quantity Degree;
+ static Quantity Radian;
+ static Quantity Gon;
+
+
+ //@}
+
+
protected:
double _Value;
Unit _Unit;
diff --git a/src/Base/QuantityLexer.c b/src/Base/QuantityLexer.c
index cc3939bfc..c5b93964d 100644
--- a/src/Base/QuantityLexer.c
+++ b/src/Base/QuantityLexer.c
@@ -361,8 +361,8 @@ static void yy_fatal_error (yyconst char msg[] );
*yy_cp = '\0'; \
(yy_c_buf_p) = yy_cp;
-#define YY_NUM_RULES 76
-#define YY_END_OF_BUFFER 77
+#define YY_NUM_RULES 83
+#define YY_END_OF_BUFFER 84
/* This struct is not used in this scanner,
but its presence is necessary. */
struct yy_trans_info
@@ -370,22 +370,23 @@ struct yy_trans_info
flex_int32_t yy_verify;
flex_int32_t yy_nxt;
};
-static yyconst flex_int16_t yy_accept[126] =
+static yyconst flex_int16_t yy_accept[138] =
{ 0,
- 0, 0, 0, 0, 77, 76, 4, 5, 36, 38,
- 6, 57, 23, 76, 50, 27, 76, 45, 76, 76,
- 48, 1, 76, 76, 76, 59, 76, 17, 22, 76,
- 76, 14, 12, 76, 76, 76, 76, 20, 19, 76,
- 3, 2, 5, 56, 57, 53, 26, 51, 46, 49,
- 54, 0, 0, 0, 0, 31, 10, 0, 0, 0,
- 11, 0, 37, 0, 35, 25, 18, 13, 41, 0,
- 24, 28, 16, 0, 9, 0, 7, 42, 58, 0,
- 0, 0, 0, 0, 43, 0, 39, 29, 15, 8,
- 40, 56, 0, 52, 66, 0, 0, 0, 64, 44,
+ 0, 0, 0, 0, 84, 83, 4, 5, 33, 35,
+ 6, 64, 23, 83, 83, 54, 27, 83, 43, 83,
+ 83, 52, 1, 83, 83, 83, 66, 83, 17, 22,
+ 83, 83, 14, 12, 83, 83, 83, 83, 20, 19,
+ 83, 3, 2, 5, 63, 64, 57, 0, 26, 45,
+ 0, 55, 47, 53, 58, 0, 0, 0, 0, 31,
+ 10, 0, 0, 0, 11, 0, 34, 0, 32, 25,
+ 44, 0, 18, 13, 39, 0, 24, 28, 46, 16,
+ 0, 9, 0, 7, 40, 65, 0, 0, 0, 0,
+ 0, 41, 0, 36, 29, 15, 8, 37, 63, 0,
- 32, 65, 34, 68, 21, 67, 30, 70, 47, 33,
- 71, 0, 73, 0, 55, 60, 61, 62, 0, 72,
- 75, 74, 63, 69, 0
+ 50, 49, 56, 73, 0, 0, 0, 71, 42, 59,
+ 72, 61, 48, 75, 0, 21, 74, 30, 77, 51,
+ 60, 78, 0, 80, 0, 62, 67, 68, 69, 0,
+ 38, 79, 82, 81, 70, 76, 0
} ;
static yyconst flex_int32_t yy_ec[256] =
@@ -397,13 +398,13 @@ static yyconst flex_int32_t yy_ec[256] =
6, 6, 7, 8, 7, 8, 6, 9, 10, 11,
12, 12, 12, 12, 12, 12, 12, 1, 1, 1,
6, 1, 1, 1, 13, 1, 14, 1, 15, 1,
- 1, 1, 1, 16, 17, 1, 18, 19, 1, 20,
- 1, 1, 1, 1, 1, 21, 22, 1, 1, 1,
- 23, 1, 24, 6, 1, 1, 25, 26, 27, 28,
+ 16, 1, 1, 17, 18, 1, 19, 20, 1, 21,
+ 1, 1, 1, 1, 1, 22, 23, 1, 1, 1,
+ 24, 1, 25, 6, 1, 1, 26, 27, 28, 29,
- 29, 30, 31, 32, 33, 1, 34, 35, 36, 37,
- 38, 39, 40, 41, 42, 43, 1, 1, 44, 45,
- 46, 47, 1, 1, 1, 1, 1, 1, 1, 1,
+ 30, 31, 32, 33, 34, 1, 35, 36, 37, 38,
+ 39, 40, 41, 42, 43, 44, 1, 1, 45, 46,
+ 47, 48, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -420,105 +421,109 @@ static yyconst flex_int32_t yy_ec[256] =
1, 1, 1, 1, 1
} ;
-static yyconst flex_int32_t yy_meta[48] =
+static yyconst flex_int32_t yy_meta[49] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1
+ 1, 1, 1, 1, 1, 1, 1, 1
} ;
-static yyconst flex_int16_t yy_base[127] =
+static yyconst flex_int16_t yy_base[139] =
{ 0,
- 0, 0, 45, 46, 167, 168, 168, 163, 168, 168,
- 168, 46, 168, 144, 168, 168, 151, 127, 137, 148,
- 118, 168, 25, 35, 24, 114, 120, 119, 168, 119,
- 46, 36, 59, 119, 107, 42, 128, 45, 61, 70,
- 168, 168, 149, 93, 105, 168, 168, 168, 168, 109,
- 168, 108, 111, 115, 122, 168, 168, 104, 102, 113,
- 168, 104, 168, 105, 168, 168, 168, 168, 168, 110,
- 168, 168, 168, 103, 168, 61, 168, 168, 168, 95,
- 104, 84, 73, 66, 168, 63, 168, 168, 168, 168,
- 168, 109, 116, 168, 168, 57, 61, 57, 168, 168,
+ 0, 0, 46, 47, 179, 180, 180, 175, 180, 180,
+ 180, 47, 180, 155, 155, 180, 180, 40, 138, 148,
+ 160, 129, 180, 35, 36, 37, 125, 131, 130, 180,
+ 130, 56, 25, 67, 130, 118, 52, 139, 48, 57,
+ 66, 180, 180, 161, 100, 109, 180, 137, 180, 180,
+ 136, 180, 180, 118, 180, 117, 120, 124, 131, 180,
+ 180, 113, 111, 122, 180, 113, 180, 114, 180, 180,
+ 180, 125, 180, 180, 180, 118, 180, 180, 180, 180,
+ 30, 180, 71, 180, 180, 180, 104, 114, 118, 108,
+ 103, 180, 106, 180, 180, 180, 180, 180, 113, 122,
- 168, 168, 168, 81, 168, 168, 168, 168, 168, 168,
- 51, 38, 34, 120, 124, 168, 168, 54, 55, 168,
- 168, 168, 168, 168, 168, 60
+ 180, 180, 180, 180, 84, 88, 78, 180, 180, 180,
+ 180, 180, 180, 104, 75, 180, 180, 180, 180, 180,
+ 180, 69, 53, 63, 126, 130, 180, 180, 83, 61,
+ 180, 180, 180, 180, 180, 180, 180, 53
} ;
-static yyconst flex_int16_t yy_def[127] =
+static yyconst flex_int16_t yy_def[139] =
{ 0,
- 125, 1, 126, 126, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 137, 1, 138, 138, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 0, 125
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 0, 137
} ;
-static yyconst flex_int16_t yy_nxt[216] =
+static yyconst flex_int16_t yy_nxt[229] =
{ 0,
6, 7, 8, 9, 10, 11, 11, 6, 12, 12,
12, 12, 13, 14, 6, 15, 16, 17, 18, 19,
- 20, 21, 22, 6, 23, 6, 24, 25, 26, 27,
- 28, 29, 30, 31, 32, 33, 34, 35, 36, 6,
- 37, 38, 39, 6, 6, 40, 6, 6, 6, 44,
- 52, 53, 60, 44, 45, 45, 45, 45, 66, 61,
- 41, 69, 56, 124, 123, 122, 54, 55, 42, 42,
- 57, 71, 58, 70, 79, 72, 67, 83, 59, 80,
- 121, 68, 120, 81, 84, 86, 88, 85, 106, 73,
- 119, 74, 87, 118, 75, 107, 76, 117, 116, 113,
+ 20, 21, 22, 23, 6, 24, 6, 25, 26, 27,
+ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
+ 6, 38, 39, 40, 6, 6, 41, 6, 6, 6,
+ 45, 75, 49, 42, 45, 46, 46, 46, 46, 50,
+ 51, 56, 57, 76, 60, 115, 64, 116, 70, 136,
+ 43, 43, 61, 65, 62, 71, 72, 58, 59, 77,
+ 63, 90, 93, 95, 78, 86, 79, 73, 91, 94,
+ 87, 92, 74, 135, 88, 134, 133, 96, 80, 117,
- 89, 92, 92, 92, 92, 90, 112, 93, 44, 111,
- 91, 110, 44, 45, 45, 45, 45, 92, 92, 92,
- 92, 93, 114, 93, 115, 115, 115, 115, 115, 115,
- 115, 115, 115, 115, 115, 115, 109, 93, 108, 105,
- 104, 103, 102, 101, 100, 99, 98, 97, 96, 95,
- 94, 43, 82, 78, 77, 65, 64, 63, 62, 51,
- 50, 49, 48, 47, 46, 43, 125, 5, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 81, 132, 97, 82, 131, 83, 118, 98, 99, 99,
+ 99, 99, 45, 130, 100, 129, 45, 46, 46, 46,
+ 46, 99, 99, 99, 99, 128, 127, 100, 125, 100,
+ 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
+ 126, 126, 100, 124, 123, 122, 121, 120, 119, 114,
+ 113, 112, 111, 110, 109, 108, 107, 106, 105, 104,
+ 103, 102, 101, 44, 89, 85, 84, 69, 68, 67,
+ 66, 55, 54, 53, 52, 48, 47, 44, 137, 5,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137
} ;
-static yyconst flex_int16_t yy_chk[216] =
+static yyconst flex_int16_t yy_chk[229] =
{ 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 3, 4, 12,
- 23, 23, 25, 12, 12, 12, 12, 12, 31, 25,
- 126, 32, 24, 119, 118, 113, 23, 23, 3, 4,
- 24, 33, 24, 32, 36, 33, 31, 38, 24, 36,
- 112, 31, 111, 36, 38, 39, 40, 38, 76, 33,
- 104, 33, 39, 98, 33, 76, 33, 97, 96, 86,
+ 1, 1, 1, 1, 1, 1, 1, 1, 3, 4,
+ 12, 33, 18, 138, 12, 12, 12, 12, 12, 18,
+ 18, 24, 24, 33, 25, 81, 26, 81, 32, 130,
+ 3, 4, 25, 26, 25, 32, 32, 24, 24, 34,
+ 25, 39, 40, 41, 34, 37, 34, 32, 39, 40,
+ 37, 39, 32, 129, 37, 124, 123, 41, 34, 83,
- 40, 44, 44, 44, 44, 40, 84, 44, 45, 83,
- 40, 82, 45, 45, 45, 45, 45, 92, 92, 92,
- 92, 44, 93, 92, 93, 93, 93, 93, 114, 114,
- 114, 114, 115, 115, 115, 115, 81, 92, 80, 74,
- 70, 64, 62, 60, 59, 58, 55, 54, 53, 52,
- 50, 43, 37, 35, 34, 30, 28, 27, 26, 21,
- 20, 19, 18, 17, 14, 8, 5, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
+ 34, 122, 41, 34, 115, 34, 83, 41, 45, 45,
+ 45, 45, 46, 114, 45, 107, 46, 46, 46, 46,
+ 46, 99, 99, 99, 99, 106, 105, 99, 100, 45,
+ 100, 100, 100, 100, 125, 125, 125, 125, 126, 126,
+ 126, 126, 99, 93, 91, 90, 89, 88, 87, 76,
+ 72, 68, 66, 64, 63, 62, 59, 58, 57, 56,
+ 54, 51, 48, 44, 38, 36, 35, 31, 29, 28,
+ 27, 22, 21, 20, 19, 15, 14, 8, 5, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
- 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
- 125, 125, 125, 125, 125
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137, 137, 137,
+ 137, 137, 137, 137, 137, 137, 137, 137
} ;
static yy_state_type yy_last_accepting_state;
@@ -549,7 +554,7 @@ char *yytext;
/* the manual says "somewhat more optimized" */
/* no support for include files is planned */
-#line 553 "QuantityLexer.c"
+#line 558 "QuantityLexer.c"
#define INITIAL 0
#define C_COMMENT 1
@@ -733,7 +738,7 @@ YY_DECL
#line 28 "QuantityParser.l"
-#line 737 "QuantityLexer.c"
+#line 742 "QuantityLexer.c"
if ( !(yy_init) )
{
@@ -786,13 +791,13 @@ yy_match:
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
+ if ( yy_current_state >= 138 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
++yy_cp;
}
- while ( yy_current_state != 125 );
+ while ( yy_current_state != 137 );
yy_cp = (yy_last_accepting_cpos);
yy_current_state = (yy_last_accepting_state);
@@ -846,354 +851,389 @@ YY_RULE_SETUP
case 7:
YY_RULE_SETUP
#line 40 "QuantityParser.l"
-yylval = Quantity(1.0e-6 ,Unit(1)); return UNIT; // nano meter
+yylval = Quantity::NanoMeter; return UNIT; // nano meter
YY_BREAK
case 8:
YY_RULE_SETUP
#line 41 "QuantityParser.l"
-yylval = Quantity(1.0e-3 ,Unit(1)); return UNIT; // micro meter
+yylval = Quantity::MicroMeter; return UNIT; // micro meter
YY_BREAK
case 9:
YY_RULE_SETUP
#line 42 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(1)); return UNIT; // milli meter
+yylval = Quantity::MilliMeter; return UNIT; // milli meter (internal standard length)
YY_BREAK
case 10:
YY_RULE_SETUP
#line 43 "QuantityParser.l"
-yylval = Quantity(10.0 ,Unit(1)); return UNIT; // centi meter
+yylval = Quantity::CentiMeter; return UNIT; // centi meter
YY_BREAK
case 11:
YY_RULE_SETUP
#line 44 "QuantityParser.l"
-yylval = Quantity(100.0 ,Unit(1)); return UNIT; // deci meter
+yylval = Quantity::DeciMeter; return UNIT; // deci meter
YY_BREAK
case 12:
YY_RULE_SETUP
#line 45 "QuantityParser.l"
-yylval = Quantity(1.0e3 ,Unit(1)); return UNIT; // meter
+yylval = Quantity::Meter; return UNIT; // meter
YY_BREAK
case 13:
YY_RULE_SETUP
#line 46 "QuantityParser.l"
-yylval = Quantity(1.0e6 ,Unit(1)); return UNIT; // kilo meter
+yylval = Quantity::KiloMeter; return UNIT; // kilo meter
YY_BREAK
case 14:
YY_RULE_SETUP
-#line 47 "QuantityParser.l"
-yylval = Quantity(1000000.0 ,Unit(3)); return UNIT; // Liter dm^3
+#line 48 "QuantityParser.l"
+yylval = Quantity::Liter; return UNIT; // Liter dm^3
YY_BREAK
case 15:
YY_RULE_SETUP
-#line 49 "QuantityParser.l"
-yylval = Quantity(1.0e-9 ,Unit(0,1)); return UNIT; // milli gram
+#line 50 "QuantityParser.l"
+yylval = Quantity::MicroGram; return UNIT; // micro gram
YY_BREAK
case 16:
YY_RULE_SETUP
-#line 50 "QuantityParser.l"
-yylval = Quantity(1.0e-6 ,Unit(0,1)); return UNIT; // milli gram
+#line 51 "QuantityParser.l"
+yylval = Quantity::MilliGram; return UNIT; // milli gram
YY_BREAK
case 17:
YY_RULE_SETUP
-#line 51 "QuantityParser.l"
-yylval = Quantity(1.0e-3 ,Unit(0,1)); return UNIT; // gram
+#line 52 "QuantityParser.l"
+yylval = Quantity::Gram; return UNIT; // gram
YY_BREAK
case 18:
YY_RULE_SETUP
-#line 52 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,1)); return UNIT; // kilo gram (internal standard for mass)
+#line 53 "QuantityParser.l"
+yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass)
YY_BREAK
case 19:
YY_RULE_SETUP
-#line 53 "QuantityParser.l"
-yylval = Quantity(1000.0 ,Unit(0,1)); return UNIT; // ton
+#line 54 "QuantityParser.l"
+yylval = Quantity::Ton; return UNIT; // ton
YY_BREAK
case 20:
YY_RULE_SETUP
-#line 55 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,1)); return UNIT; // second (internal standard time)
+#line 56 "QuantityParser.l"
+yylval = Quantity::Second; return UNIT; // second (internal standard time)
YY_BREAK
case 21:
YY_RULE_SETUP
-#line 56 "QuantityParser.l"
-yylval = Quantity(60.0 ,Unit(0,0,1)); return UNIT; // minute
+#line 57 "QuantityParser.l"
+yylval = Quantity::Minut; return UNIT; // minute
YY_BREAK
case 22:
YY_RULE_SETUP
-#line 57 "QuantityParser.l"
-yylval = Quantity(3600.0 ,Unit(0,0,1)); return UNIT; // hour
+#line 58 "QuantityParser.l"
+yylval = Quantity::Hour; return UNIT; // hour
YY_BREAK
case 23:
YY_RULE_SETUP
-#line 59 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,0,1)); return UNIT; // Ampere (internal standard electric current)
+#line 60 "QuantityParser.l"
+yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current)
YY_BREAK
case 24:
YY_RULE_SETUP
-#line 60 "QuantityParser.l"
-yylval = Quantity(0.001 ,Unit(0,0,0,1)); return UNIT; // milli Ampere
+#line 61 "QuantityParser.l"
+yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere
YY_BREAK
case 25:
YY_RULE_SETUP
-#line 61 "QuantityParser.l"
-yylval = Quantity(1000.0 ,Unit(0,0,0,1)); return UNIT; // kilo Ampere
+#line 62 "QuantityParser.l"
+yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere
YY_BREAK
case 26:
YY_RULE_SETUP
-#line 62 "QuantityParser.l"
-yylval = Quantity(1.0e6 ,Unit(0,0,0,1)); return UNIT; // Mega Ampere
+#line 63 "QuantityParser.l"
+yylval = Quantity::MegaAmpere; return UNIT; // Mega Ampere
YY_BREAK
case 27:
YY_RULE_SETUP
-#line 64 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin (internal standard thermodynamic temperature)
+#line 65 "QuantityParser.l"
+yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature)
YY_BREAK
case 28:
YY_RULE_SETUP
-#line 65 "QuantityParser.l"
-yylval = Quantity(0.001 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin
+#line 66 "QuantityParser.l"
+yylval = Quantity::MilliKelvin; return UNIT; // Kelvin
YY_BREAK
case 29:
YY_RULE_SETUP
-#line 66 "QuantityParser.l"
-yylval = Quantity(0.000001 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin
+#line 67 "QuantityParser.l"
+yylval = Quantity::MicroKelvin; return UNIT; // Kelvin
YY_BREAK
case 30:
YY_RULE_SETUP
-#line 68 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,0,0,0,1)); return UNIT; // Mole (internal standard amount of substance)
+#line 69 "QuantityParser.l"
+yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance)
YY_BREAK
case 31:
YY_RULE_SETUP
-#line 70 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,0,0,0,0,1)); return UNIT; // Candela (internal standard luminous intensity)
+#line 71 "QuantityParser.l"
+yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity)
YY_BREAK
case 32:
YY_RULE_SETUP
-#line 72 "QuantityParser.l"
-yylval = Quantity(1.0 ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // degree (internal standard angle)
+#line 73 "QuantityParser.l"
+yylval = Quantity::Inch; return UNIT; // inch
YY_BREAK
case 33:
YY_RULE_SETUP
-#line 73 "QuantityParser.l"
-yylval = Quantity(180/M_PI ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // radian
+#line 74 "QuantityParser.l"
+yylval = Quantity::Inch; return UNIT; // inch
YY_BREAK
case 34:
YY_RULE_SETUP
-#line 74 "QuantityParser.l"
-yylval = Quantity(360.0/400.0 ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // gon
+#line 75 "QuantityParser.l"
+yylval = Quantity::Foot; return UNIT; // foot
YY_BREAK
case 35:
YY_RULE_SETUP
#line 76 "QuantityParser.l"
-yylval = Quantity(25.4 ,Unit(1)); return UNIT; // inch
+yylval = Quantity::Foot; return UNIT; // foot
YY_BREAK
case 36:
YY_RULE_SETUP
#line 77 "QuantityParser.l"
-yylval = Quantity(25.4 ,Unit(1)); return UNIT; // inch
+yylval = Quantity::Thou; return UNIT; // thou
YY_BREAK
case 37:
YY_RULE_SETUP
#line 78 "QuantityParser.l"
-yylval = Quantity(304.8 ,Unit(1)); return UNIT; // foot
+yylval = Quantity::Yard; return UNIT; // yard
YY_BREAK
case 38:
YY_RULE_SETUP
#line 79 "QuantityParser.l"
-yylval = Quantity(304.8 ,Unit(1)); return UNIT; // foot
+yylval = Quantity::Mile; return UNIT; // mile
YY_BREAK
case 39:
YY_RULE_SETUP
-#line 80 "QuantityParser.l"
-yylval = Quantity(0.0254 ,Unit(1)); return UNIT; // thou
+#line 82 "QuantityParser.l"
+yylval = Quantity::Pound; return UNIT; // pound
YY_BREAK
case 40:
YY_RULE_SETUP
-#line 81 "QuantityParser.l"
-yylval = Quantity(914.4 ,Unit(1)); return UNIT; // yard
+#line 83 "QuantityParser.l"
+yylval = Quantity::Ounce; return UNIT; // ounce
YY_BREAK
case 41:
YY_RULE_SETUP
#line 84 "QuantityParser.l"
-yylval = Quantity(0.45359237 ,Unit(0,1)); return UNIT; // pound
+yylval = Quantity::Stone; return UNIT; // Stone
YY_BREAK
case 42:
YY_RULE_SETUP
#line 85 "QuantityParser.l"
-yylval = Quantity(0.45359237 ,Unit(0,1)); return UNIT; // ounce
+yylval = Quantity::Hundredweights; return UNIT; // hundredweights
YY_BREAK
case 43:
YY_RULE_SETUP
-#line 86 "QuantityParser.l"
-yylval = Quantity(6.35029318 ,Unit(0,1)); return UNIT; // Stone
+#line 87 "QuantityParser.l"
+yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2)
YY_BREAK
case 44:
YY_RULE_SETUP
-#line 87 "QuantityParser.l"
-yylval = Quantity(50.80234544 ,Unit(0,1)); return UNIT; // hundredweights
+#line 88 "QuantityParser.l"
+yylval = Quantity::KiloNewton; return UNIT; // Newton
YY_BREAK
case 45:
YY_RULE_SETUP
#line 89 "QuantityParser.l"
-yylval = Quantity(1000.0 ,Unit(1,1,-2)); return UNIT; // Newton (kg*m/s^2)
+yylval = Quantity::MegaNewton; return UNIT; // Newton
YY_BREAK
case 46:
YY_RULE_SETUP
-#line 91 "QuantityParser.l"
-yylval = Quantity(0.001 ,Unit(-1,1,-2)); return UNIT; // Pascal (kg/m*s^2)
+#line 90 "QuantityParser.l"
+yylval = Quantity::MilliNewton; return UNIT; // Newton
YY_BREAK
case 47:
YY_RULE_SETUP
#line 92 "QuantityParser.l"
-yylval = Quantity(0.145038 ,Unit(-1,1,-2)); return UNIT; // pounds/in^2
+yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m*s^2 or N/m^2)
YY_BREAK
case 48:
YY_RULE_SETUP
-#line 94 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-3)); return UNIT; // Watt (kg*m^2/s^3)
+#line 93 "QuantityParser.l"
+yylval = Quantity::KiloPascal; return UNIT; // Pascal
YY_BREAK
case 49:
YY_RULE_SETUP
-#line 95 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-3)); return UNIT; // VoltAmpere (kg*m^2/s^3)
+#line 94 "QuantityParser.l"
+yylval = Quantity::MegaPascal; return UNIT; // Pascal
YY_BREAK
case 50:
YY_RULE_SETUP
-#line 97 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+#line 95 "QuantityParser.l"
+yylval = Quantity::GigaPascal; return UNIT; // Pascal
YY_BREAK
case 51:
YY_RULE_SETUP
-#line 98 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+#line 97 "QuantityParser.l"
+yylval = Quantity::PSI; return UNIT; // pounds/in^2
YY_BREAK
case 52:
YY_RULE_SETUP
#line 99 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3)
YY_BREAK
case 53:
YY_RULE_SETUP
#line 100 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3)
YY_BREAK
case 54:
YY_RULE_SETUP
-#line 101 "QuantityParser.l"
-yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+#line 102 "QuantityParser.l"
+yylval = Quantity::Joul; return UNIT; // Joule (kg*m^2/s^2)
YY_BREAK
case 55:
YY_RULE_SETUP
#line 103 "QuantityParser.l"
-{for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
+yylval = Quantity::NewtonMeter; return UNIT; // Joule (kg*m^2/s^2)
YY_BREAK
case 56:
YY_RULE_SETUP
#line 104 "QuantityParser.l"
-{for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
+yylval = Quantity::VoltAmpereSecond; return UNIT; // Joule (kg*m^2/s^2)
YY_BREAK
case 57:
YY_RULE_SETUP
#line 105 "QuantityParser.l"
-{yylval = atof( yytext ); return NUM;}
+yylval = Quantity::WattSecond; return UNIT; // Joule (kg*m^2/s^2)
YY_BREAK
case 58:
YY_RULE_SETUP
-#line 107 "QuantityParser.l"
-{yylval = M_PI ; return NUM;} // constant pi
+#line 106 "QuantityParser.l"
+yylval = Quantity::WattSecond; return UNIT; // Joule (kg*m^2/s^2)
YY_BREAK
case 59:
YY_RULE_SETUP
#line 108 "QuantityParser.l"
-{yylval = M_E ; return NUM;} // constant e
+yylval = Quantity::Degree; return UNIT; // degree (internal standard angle)
YY_BREAK
case 60:
YY_RULE_SETUP
-#line 110 "QuantityParser.l"
-return ACOS;
+#line 109 "QuantityParser.l"
+yylval = Quantity::Radian; return UNIT; // radian
YY_BREAK
case 61:
YY_RULE_SETUP
-#line 111 "QuantityParser.l"
-return ASIN;
+#line 110 "QuantityParser.l"
+yylval = Quantity::Gon; return UNIT; // gon
YY_BREAK
case 62:
YY_RULE_SETUP
#line 112 "QuantityParser.l"
-return ATAN;
+{for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
YY_BREAK
case 63:
YY_RULE_SETUP
#line 113 "QuantityParser.l"
-return ATAN2;
+{for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
YY_BREAK
case 64:
YY_RULE_SETUP
#line 114 "QuantityParser.l"
-return COS;
+{yylval = atof( yytext ); return NUM;}
YY_BREAK
case 65:
YY_RULE_SETUP
-#line 115 "QuantityParser.l"
-return EXP;
+#line 116 "QuantityParser.l"
+{yylval = M_PI ; return NUM;} // constant pi
YY_BREAK
case 66:
YY_RULE_SETUP
-#line 116 "QuantityParser.l"
-return ABS;
+#line 117 "QuantityParser.l"
+{yylval = M_E ; return NUM;} // constant e
YY_BREAK
case 67:
YY_RULE_SETUP
-#line 117 "QuantityParser.l"
-return MOD;
+#line 119 "QuantityParser.l"
+return ACOS;
YY_BREAK
case 68:
YY_RULE_SETUP
-#line 118 "QuantityParser.l"
-return LOG;
+#line 120 "QuantityParser.l"
+return ASIN;
YY_BREAK
case 69:
YY_RULE_SETUP
-#line 119 "QuantityParser.l"
-return LOG10;
+#line 121 "QuantityParser.l"
+return ATAN;
YY_BREAK
case 70:
YY_RULE_SETUP
-#line 120 "QuantityParser.l"
-return POW;
+#line 122 "QuantityParser.l"
+return ATAN2;
YY_BREAK
case 71:
YY_RULE_SETUP
-#line 121 "QuantityParser.l"
-return SIN;
+#line 123 "QuantityParser.l"
+return COS;
YY_BREAK
case 72:
YY_RULE_SETUP
-#line 122 "QuantityParser.l"
-return SINH;
+#line 124 "QuantityParser.l"
+return EXP;
YY_BREAK
case 73:
YY_RULE_SETUP
-#line 123 "QuantityParser.l"
-return TAN;
+#line 125 "QuantityParser.l"
+return ABS;
YY_BREAK
case 74:
YY_RULE_SETUP
-#line 124 "QuantityParser.l"
-return TANH;
+#line 126 "QuantityParser.l"
+return MOD;
YY_BREAK
case 75:
YY_RULE_SETUP
-#line 125 "QuantityParser.l"
-return SQRT;
+#line 127 "QuantityParser.l"
+return LOG;
YY_BREAK
case 76:
YY_RULE_SETUP
-#line 127 "QuantityParser.l"
+#line 128 "QuantityParser.l"
+return LOG10;
+ YY_BREAK
+case 77:
+YY_RULE_SETUP
+#line 129 "QuantityParser.l"
+return POW;
+ YY_BREAK
+case 78:
+YY_RULE_SETUP
+#line 130 "QuantityParser.l"
+return SIN;
+ YY_BREAK
+case 79:
+YY_RULE_SETUP
+#line 131 "QuantityParser.l"
+return SINH;
+ YY_BREAK
+case 80:
+YY_RULE_SETUP
+#line 132 "QuantityParser.l"
+return TAN;
+ YY_BREAK
+case 81:
+YY_RULE_SETUP
+#line 133 "QuantityParser.l"
+return TANH;
+ YY_BREAK
+case 82:
+YY_RULE_SETUP
+#line 134 "QuantityParser.l"
+return SQRT;
+ YY_BREAK
+case 83:
+YY_RULE_SETUP
+#line 136 "QuantityParser.l"
ECHO;
YY_BREAK
-#line 1197 "QuantityLexer.c"
+#line 1237 "QuantityLexer.c"
case YY_STATE_EOF(INITIAL):
case YY_STATE_EOF(C_COMMENT):
yyterminate();
@@ -1487,7 +1527,7 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
+ if ( yy_current_state >= 138 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1515,11 +1555,11 @@ static int yy_get_next_buffer (void)
while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
{
yy_current_state = (int) yy_def[yy_current_state];
- if ( yy_current_state >= 126 )
+ if ( yy_current_state >= 138 )
yy_c = yy_meta[(unsigned int) yy_c];
}
yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
- yy_is_jam = (yy_current_state == 125);
+ yy_is_jam = (yy_current_state == 137);
return yy_is_jam ? 0 : yy_current_state;
}
@@ -2152,4 +2192,4 @@ void yyfree (void * ptr )
#define YYTABLES_NAME "yytables"
-#line 127 "QuantityParser.l"
+#line 136 "QuantityParser.l"
diff --git a/src/Base/QuantityParser.l b/src/Base/QuantityParser.l
index 365a8a7bb..f1dfddf77 100644
--- a/src/Base/QuantityParser.l
+++ b/src/Base/QuantityParser.l
@@ -37,68 +37,77 @@ ID [a-z][a-z0-9]*
[-+()=/*^] { return *yytext; }
-"nm" yylval = Quantity(1.0e-6 ,Unit(1)); return UNIT; // nano meter
-"ym" yylval = Quantity(1.0e-3 ,Unit(1)); return UNIT; // micro meter
-"mm" yylval = Quantity(1.0 ,Unit(1)); return UNIT; // milli meter
-"cm" yylval = Quantity(10.0 ,Unit(1)); return UNIT; // centi meter
-"dm" yylval = Quantity(100.0 ,Unit(1)); return UNIT; // deci meter
-"m" yylval = Quantity(1.0e3 ,Unit(1)); return UNIT; // meter
-"km" yylval = Quantity(1.0e6 ,Unit(1)); return UNIT; // kilo meter
-"l" yylval = Quantity(1000000.0 ,Unit(3)); return UNIT; // Liter dm^3
+ "nm" yylval = Quantity::NanoMeter; return UNIT; // nano meter
+ "ym" yylval = Quantity::MicroMeter; return UNIT; // micro meter
+ "mm" yylval = Quantity::MilliMeter; return UNIT; // milli meter (internal standard length)
+ "cm" yylval = Quantity::CentiMeter; return UNIT; // centi meter
+ "dm" yylval = Quantity::DeciMeter; return UNIT; // deci meter
+ "m" yylval = Quantity::Meter; return UNIT; // meter
+ "km" yylval = Quantity::KiloMeter; return UNIT; // kilo meter
- "yg" yylval = Quantity(1.0e-9 ,Unit(0,1)); return UNIT; // milli gram
- "mg" yylval = Quantity(1.0e-6 ,Unit(0,1)); return UNIT; // milli gram
- "g" yylval = Quantity(1.0e-3 ,Unit(0,1)); return UNIT; // gram
- "kg" yylval = Quantity(1.0 ,Unit(0,1)); return UNIT; // kilo gram (internal standard for mass)
- "t" yylval = Quantity(1000.0 ,Unit(0,1)); return UNIT; // ton
-
- "s" yylval = Quantity(1.0 ,Unit(0,0,1)); return UNIT; // second (internal standard time)
- "min" yylval = Quantity(60.0 ,Unit(0,0,1)); return UNIT; // minute
- "h" yylval = Quantity(3600.0 ,Unit(0,0,1)); return UNIT; // hour
-
- "A" yylval = Quantity(1.0 ,Unit(0,0,0,1)); return UNIT; // Ampere (internal standard electric current)
- "mA" yylval = Quantity(0.001 ,Unit(0,0,0,1)); return UNIT; // milli Ampere
- "kA" yylval = Quantity(1000.0 ,Unit(0,0,0,1)); return UNIT; // kilo Ampere
- "MA" yylval = Quantity(1.0e6 ,Unit(0,0,0,1)); return UNIT; // Mega Ampere
-
- "K" yylval = Quantity(1.0 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin (internal standard thermodynamic temperature)
- "mK" yylval = Quantity(0.001 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin
- "yK" yylval = Quantity(0.000001 ,Unit(0,0,0,0,1)); return UNIT; // Kelvin
-
- "mol" yylval = Quantity(1.0 ,Unit(0,0,0,0,0,1)); return UNIT; // Mole (internal standard amount of substance)
-
- "cd" yylval = Quantity(1.0 ,Unit(0,0,0,0,0,0,1)); return UNIT; // Candela (internal standard luminous intensity)
-
- "deg" yylval = Quantity(1.0 ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // degree (internal standard angle)
- "rad" yylval = Quantity(180/M_PI ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // radian
- "gon" yylval = Quantity(360.0/400.0 ,Unit(0,0,0,0,0,0,0,1)); return UNIT; // gon
-
- "in" yylval = Quantity(25.4 ,Unit(1)); return UNIT; // inch
- "\"" yylval = Quantity(25.4 ,Unit(1)); return UNIT; // inch
- "fo" yylval = Quantity(304.8 ,Unit(1)); return UNIT; // foot
- "'" yylval = Quantity(304.8 ,Unit(1)); return UNIT; // foot
- "th" yylval = Quantity(0.0254 ,Unit(1)); return UNIT; // thou
- "yr" yylval = Quantity(914.4 ,Unit(1)); return UNIT; // yard
-
-
- "lb" yylval = Quantity(0.45359237 ,Unit(0,1)); return UNIT; // pound
- "oz" yylval = Quantity(0.45359237 ,Unit(0,1)); return UNIT; // ounce
- "st" yylval = Quantity(6.35029318 ,Unit(0,1)); return UNIT; // Stone
- "cwt" yylval = Quantity(50.80234544 ,Unit(0,1)); return UNIT; // hundredweights
-
- "N" yylval = Quantity(1000.0 ,Unit(1,1,-2)); return UNIT; // Newton (kg*m/s^2)
+ "l" yylval = Quantity::Liter; return UNIT; // Liter dm^3
- "Pa" yylval = Quantity(0.001 ,Unit(-1,1,-2)); return UNIT; // Pascal (kg/m*s^2)
- "psi" yylval = Quantity(0.145038 ,Unit(-1,1,-2)); return UNIT; // pounds/in^2
-
- "W" yylval = Quantity(1e+6 ,Unit(2,1,-3)); return UNIT; // Watt (kg*m^2/s^3)
- "VA" yylval = Quantity(1e+6 ,Unit(2,1,-3)); return UNIT; // VoltAmpere (kg*m^2/s^3)
-
- "J" yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
- "Nm" yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
- "VAs" yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
- "CV" yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
- "Ws" yylval = Quantity(1e+6 ,Unit(2,1,-2)); return UNIT; // Joule (kg*m^2/s^2)
+ "yg" yylval = Quantity::MicroGram; return UNIT; // micro gram
+ "mg" yylval = Quantity::MilliGram; return UNIT; // milli gram
+ "g" yylval = Quantity::Gram; return UNIT; // gram
+ "kg" yylval = Quantity::KiloGram; return UNIT; // kilo gram (internal standard for mass)
+ "t" yylval = Quantity::Ton; return UNIT; // ton
+
+ "s" yylval = Quantity::Second; return UNIT; // second (internal standard time)
+ "min" yylval = Quantity::Minut; return UNIT; // minute
+ "h" yylval = Quantity::Hour; return UNIT; // hour
+
+ "A" yylval = Quantity::Ampere; return UNIT; // Ampere (internal standard electric current)
+ "mA" yylval = Quantity::MilliAmpere; return UNIT; // milli Ampere
+ "kA" yylval = Quantity::KiloAmpere; return UNIT; // kilo Ampere
+ "MA" yylval = Quantity::MegaAmpere; return UNIT; // Mega Ampere
+
+ "K" yylval = Quantity::Kelvin; return UNIT; // Kelvin (internal standard thermodynamic temperature)
+ "mK" yylval = Quantity::MilliKelvin; return UNIT; // Kelvin
+ "yK" yylval = Quantity::MicroKelvin; return UNIT; // Kelvin
+
+ "mol" yylval = Quantity::Mole; return UNIT; // Mole (internal standard amount of substance)
+
+ "cd" yylval = Quantity::Candela; return UNIT; // Candela (internal standard luminous intensity)
+
+ "in" yylval = Quantity::Inch; return UNIT; // inch
+ "\"" yylval = Quantity::Inch; return UNIT; // inch
+ "fo" yylval = Quantity::Foot; return UNIT; // foot
+ "'" yylval = Quantity::Foot; return UNIT; // foot
+ "th" yylval = Quantity::Thou; return UNIT; // thou
+ "yr" yylval = Quantity::Yard; return UNIT; // yard
+ "mile" yylval = Quantity::Mile; return UNIT; // mile
+
+
+ "lb" yylval = Quantity::Pound; return UNIT; // pound
+ "oz" yylval = Quantity::Ounce; return UNIT; // ounce
+ "st" yylval = Quantity::Stone; return UNIT; // Stone
+ "cwt" yylval = Quantity::Hundredweights; return UNIT; // hundredweights
+
+ "N" yylval = Quantity::Newton; return UNIT; // Newton (kg*m/s^2)
+ "kN" yylval = Quantity::KiloNewton; return UNIT; // Newton
+ "MN" yylval = Quantity::MegaNewton; return UNIT; // Newton
+ "mN" yylval = Quantity::MilliNewton; return UNIT; // Newton
+
+ "Pa" yylval = Quantity::Pascal; return UNIT; // Pascal (kg/m*s^2 or N/m^2)
+ "kPa" yylval = Quantity::KiloPascal; return UNIT; // Pascal
+ "MPa" yylval = Quantity::MegaPascal; return UNIT; // Pascal
+ "GPa" yylval = Quantity::GigaPascal; return UNIT; // Pascal
+
+ "psi" yylval = Quantity::PSI; return UNIT; // pounds/in^2
+
+ "W" yylval = Quantity::Watt; return UNIT; // Watt (kg*m^2/s^3)
+ "VA" yylval = Quantity::VoltAmpere; return UNIT; // VoltAmpere (kg*m^2/s^3)
+
+ "J" yylval = Quantity::Joul; return UNIT; // Joule (kg*m^2/s^2)
+ "Nm" yylval = Quantity::NewtonMeter; return UNIT; // Joule (kg*m^2/s^2)
+ "VAs" yylval = Quantity::VoltAmpereSecond; return UNIT; // Joule (kg*m^2/s^2)
+ "CV" yylval = Quantity::WattSecond; return UNIT; // Joule (kg*m^2/s^2)
+ "Ws" yylval = Quantity::WattSecond; return UNIT; // Joule (kg*m^2/s^2)
+
+ "deg" yylval = Quantity::Degree; return UNIT; // degree (internal standard angle)
+ "rad" yylval = Quantity::Radian; return UNIT; // radian
+ "gon" yylval = Quantity::Gon; return UNIT; // gon
{DIGIT}+["."","]{DIGIT}*[eE][-+]?[0-9]+ {for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
{DIGIT}+["."","]{DIGIT}* {for(char* c=yytext;*c!='\0';c++)if(*c==',')*c='.'; yylval = atof( yytext ); return NUM;}
diff --git a/src/Base/QuantityPy.xml b/src/Base/QuantityPy.xml
index 7dfeaefc3..7f56971e9 100644
--- a/src/Base/QuantityPy.xml
+++ b/src/Base/QuantityPy.xml
@@ -58,5 +58,15 @@ Quantity(string) -- arbitrary mixture of numbers and chars defining a Quantity
-
+
+
+
+
+ Definition of NanoMeter
+
+
+
+
+
+
diff --git a/src/Base/QuantityPyImp.cpp b/src/Base/QuantityPyImp.cpp
index d0ccf2370..d4bfe96b4 100644
--- a/src/Base/QuantityPyImp.cpp
+++ b/src/Base/QuantityPyImp.cpp
@@ -33,10 +33,17 @@ int QuantityPy::PyInit(PyObject* args, PyObject* kwd)
Quantity *self = getQuantityPtr();
double f = DOUBLE_MAX;
-
- if (PyArg_ParseTuple(args, "|d", &f)) {
+ int i1=0;
+ int i2=0;
+ int i3=0;
+ int i4=0;
+ int i5=0;
+ int i6=0;
+ int i7=0;
+ int i8=0;
+ if (PyArg_ParseTuple(args, "|diiiiiiii", &f,&i1,&i2,&i3,&i4,&i5,&i6,&i7,&i8)) {
if(f!=DOUBLE_MAX)
- *self = Quantity(f);
+ *self = Quantity(f,Unit(i1,i2,i3,i4,i5,i6,i7,i8));
return 0;
}
PyErr_Clear(); // set by PyArg_ParseTuple()
@@ -170,4 +177,14 @@ int QuantityPy::setCustomAttributes(const char* /*attr*/, PyObject* /*obj*/)
return 0;
}
+// All the standard unit definitions ===============================
+
+Py::Object QuantityPy::getNanoMeter(void) const
+{
+ return Py::Object(new QuantityPy(new Quantity(Quantity::NanoMeter)));
+}
+
+
+
+
diff --git a/src/Base/Unit.h b/src/Base/Unit.h
index a011c4658..5c72a47ac 100644
--- a/src/Base/Unit.h
+++ b/src/Base/Unit.h
@@ -94,7 +94,7 @@ public:
static Unit ElectricCurrent;
static Unit AmountOfSubstance;
static Unit LuminoseIntensity;
-
+ //@}
protected:
UnitSignature Sig;
};
diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp
index 3f16158e0..7cd7389ca 100644
--- a/src/Gui/DlgUnitsCalculatorImp.cpp
+++ b/src/Gui/DlgUnitsCalculatorImp.cpp
@@ -48,7 +48,9 @@ DlgUnitsCalculator::DlgUnitsCalculator( QWidget* parent, Qt::WFlags fl )
this->setAttribute(Qt::WA_DeleteOnClose);
connect(this->ValueInput, SIGNAL(valueChanged(Base::Quantity)), this, SLOT(valueChanged(Base::Quantity)));
+ connect(this->ValueInput, SIGNAL(returnPressed () ), this, SLOT(returnPressed()));
connect(this->UnitInput, SIGNAL(valueChanged(Base::Quantity)), this, SLOT(unitValueChanged(Base::Quantity)));
+ connect(this->UnitInput, SIGNAL(returnPressed()), this, SLOT(returnPressed()));
connect(this->pushButton_Help, SIGNAL(clicked()), this, SLOT(help()));
connect(this->pushButton_Close, SIGNAL(clicked()), this, SLOT(accept()));
@@ -131,6 +133,10 @@ void DlgUnitsCalculator::help(void)
//TODO: call help page Std_UnitsCalculator
}
+void DlgUnitsCalculator::returnPressed(void)
+{
+ this->textEdit->append(this->ValueInput->text() + QString::fromAscii(" = ") + this->ValueOutput->text());
+}
diff --git a/src/Gui/DlgUnitsCalculatorImp.h b/src/Gui/DlgUnitsCalculatorImp.h
index fbe3cfe93..70090bd8c 100644
--- a/src/Gui/DlgUnitsCalculatorImp.h
+++ b/src/Gui/DlgUnitsCalculatorImp.h
@@ -51,6 +51,7 @@ protected Q_SLOTS:
void copy(void);
void help(void);
+ void returnPressed(void);
void parseError(const QString& errorText);
@@ -58,6 +59,7 @@ private:
Base::Quantity actValue;
Base::Quantity actUnit;
+
};
} // namespace Dialog
diff --git a/src/Gui/Icons/Document.svg b/src/Gui/Icons/Document.svg
index b5f1d7f24..28cc05918 100644
--- a/src/Gui/Icons/Document.svg
+++ b/src/Gui/Icons/Document.svg
@@ -545,8 +545,8 @@
guidetolerance="1px"
stroke="#729fcf"
inkscape:window-width="1280"
- inkscape:window-height="964"
- inkscape:window-x="-2"
+ inkscape:window-height="1004"
+ inkscape:window-x="1278"
inkscape:window-y="-3"
showborder="true"
inkscape:showpageshadow="false"
@@ -647,7 +647,7 @@
image/svg+xml
-
+
Lapo Calamandrei
@@ -695,13 +695,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -705,13 +705,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -701,13 +701,6 @@
id="path4222-5"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -695,13 +695,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -695,13 +695,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -702,13 +702,6 @@
d="m 36.083267,30.538509 -7.032696,-0.03137 0.02385,4.684398 -4.218964,0.146053 7.829105,7.842237 7.795073,-7.632419 -4.220336,-0.164137 z"
style="fill:#6dff00;fill-opacity:0.99215686;stroke:#31d900;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
inkscape:transform-center-y="-2.3443223" />
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -652,13 +652,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
diff --git a/src/Gui/Icons/breakpoint.svg b/src/Gui/Icons/breakpoint.svg
index 1b05573f4..01c73ebe0 100644
--- a/src/Gui/Icons/breakpoint.svg
+++ b/src/Gui/Icons/breakpoint.svg
@@ -478,9 +478,9 @@
borderopacity="0.19607843"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="6.3984375"
- inkscape:cx="21.496455"
- inkscape:cy="12.062993"
+ inkscape:zoom="13"
+ inkscape:cx="32"
+ inkscape:cy="32"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:grid-bbox="true"
@@ -492,8 +492,8 @@
guidetolerance="1px"
stroke="#729fcf"
inkscape:window-width="1280"
- inkscape:window-height="964"
- inkscape:window-x="-2"
+ inkscape:window-height="1004"
+ inkscape:window-x="1278"
inkscape:window-y="-3"
showborder="true"
inkscape:showpageshadow="false"
@@ -642,13 +642,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -741,13 +741,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -662,13 +662,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -652,13 +652,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -652,13 +652,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -652,13 +652,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
-
-
image/svg+xml
-
+
Lapo Calamandrei
@@ -695,13 +695,6 @@
inkscape:r_cx="true"
inkscape:r_cy="true"
transform="translate(0,16)">
-
-
diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp
index 3a106b7cd..588ce4820 100644
--- a/src/Gui/InputField.cpp
+++ b/src/Gui/InputField.cpp
@@ -40,7 +40,7 @@ using namespace Base;
// --------------------------------------------------------------------
InputField::InputField ( QWidget * parent )
- : QLineEdit(parent)
+ : QLineEdit(parent), StepSize(1.0), Maximum(DOUBLE_MAX),Minimum(-DOUBLE_MAX)
{
this->setContextMenuPolicy(Qt::DefaultContextMenu);
@@ -149,37 +149,37 @@ void InputField::setUnit(const Base::Unit& unit)
/// get the value of the singleStep property
double InputField::singleStep(void)const
{
- return 0.0;
+ return StepSize;
}
/// set the value of the singleStep property
-void InputField::setSingleStep(double)
+void InputField::setSingleStep(double s)
{
-
+ StepSize = s;
}
/// get the value of the maximum property
double InputField::maximum(void)const
{
- return 0.0;
+ return Maximum;
}
/// set the value of the maximum property
-void InputField::setMaximum(double)
+void InputField::setMaximum(double m)
{
-
+ Maximum = m;
}
/// get the value of the minimum property
double InputField::minimum(void)const
{
- return 0.0;
+ return Minimum;
}
/// set the value of the minimum property
-void InputField::setMinimum(double)
+void InputField::setMinimum(double m)
{
-
+ Minimum = m;
}
diff --git a/src/Gui/InputField.h b/src/Gui/InputField.h
index f0274028f..8ac314a6e 100644
--- a/src/Gui/InputField.h
+++ b/src/Gui/InputField.h
@@ -128,6 +128,10 @@ private:
Base::Quantity actQuantity;
Base::Unit actUnit;
+
+ double Maximum;
+ double Minimum;
+ double StepSize;
};