TNB Library
TnbValueParUnit.h
[詳解]
1#pragma once
25#include "TnbValueUnit.h"
26
27
28
29//TNB Library
30namespace TNB
31{
32
33
34
54template<typename U1, typename U2, typename EX>
55class CValueParUnitT : public U1, public U2, public EX, public CPfUnit
56{
57 DEFSUPER(CPfUnit);
58protected:
59
60 #ifndef _TnbDOXYGEN //Document作成用シンボル
61
66 class CExCode
67 {
68 int m_code;
69 public:
70 typedef typename EX::EUnitCode EExCode;
71 CExCode(void) : m_code(0) {}
72 CExCode(EExCode code) : m_code(code) {}
73 int ToInt(void) const { return m_code; };
74 };
75
80 class CNumeCode
81 {
82 int m_code;
83 public:
84 typedef typename U1::EUnitCode EU1Code;
85 typedef typename EX::EUnitCode EExCode;
86 typedef typename CValueUnitT<U1>::CCode CVuU1Code;
87 CNumeCode(void) : m_code(0) {}
88 CNumeCode(EU1Code code) : m_code(code) {}
89 CNumeCode(EPfUnitCode code) : m_code(code) {}
90 CNumeCode(CVuU1Code code) : m_code(code.ToInt()) {}
91 explicit CNumeCode(CExCode code) : m_code(code.ToInt()) {}
92 operator EU1Code(void) const { return EU1Code(HasPfCode() ? 0 : m_code); }
93 operator EPfUnitCode(void) const { return EPfUnitCode(HasPfCode() ? m_code : 0); }
94 operator EExCode(void) const { return EExCode(HasExCode() ? m_code : 0); }
95 bool operator==(const CNumeCode& c) const { return m_code == c.m_code; }
96 bool operator!=(const CNumeCode& c) const { return m_code != c.m_code; }
97 bool HasPfCode(void) const { return (m_code & PFCODE) != 0; }
98 bool HasExCode(void) const { return (m_code & U1::EXCODE) != 0; }
99 int ToInt(void) const { return m_code; };
100 EU1Code GetU1Code(void) const { return EU1Code(m_code); };
101 EExCode GetExCode(void) const { return EExCode(m_code); };
102 CVuU1Code GetCode(void) const
103 {
104 CVuU1Code c;
105 c.SetInt(m_code);
106 return c;
107 };
108 };
109
114 class CDenoCode
115 {
116 int m_code;
117 public:
118 typedef typename U2::EUnitCode EU2Code;
119 typedef typename CValueUnitT<U2>::CCode CVuU2Code;
120 CDenoCode(void) : m_code(0) {}
121 CDenoCode(EU2Code code) : m_code(code) {}
122 CDenoCode(EPfUnitCode code) : m_code(code) {}
123 CDenoCode(CVuU2Code code) : m_code(code.ToInt()) {}
124 operator EU2Code(void) const { return EU2Code(HasPfCode() ? 0 : m_code); }
125 operator EPfUnitCode(void) const { return EPfUnitCode(HasPfCode() ? m_code : 0); }
126 bool operator==(const CDenoCode& c) const { return m_code == c.m_code; }
127 bool operator!=(const CDenoCode& c) const { return m_code != c.m_code; }
128 bool HasPfCode(void) const { return (m_code & U2::PFCODE) != 0; }
129 int ToInt(void) const { return m_code; };
130 EU2Code GetU2Code(void) const { return EU2Code(m_code); };
131 CVuU2Code GetCode(void) const
132 {
133 CVuU2Code c;
134 c.SetInt(m_code);
135 return c;
136 };
137 };
138
139 #endif //_TnbDOXYGEN
140
141private:
142
143 CRealNumber m_value;
144 CNumeCode m_numeCode;
145 CDenoCode m_denoCode;
146
148 void m_ToUnit(CNumeCode code)
149 {
150 if ( m_numeCode != code )
151 {
152 ToNormalUnit();
153 if ( code.HasExCode() )
154 {
155 if ( m_numeCode.ToInt() != 0 )
156 {
158 u1.Set(m_value, m_numeCode.GetU1Code());
159 m_value = u1.GetValue(U1::EUnitCode(0));
160 }
161 if ( m_denoCode.ToInt() != 0 )
162 {
164 u2.Set(1, U2::EUnitCode(0));
165 m_value *= u2.GetValue(m_denoCode.GetU2Code());
166 m_denoCode = U2::EUnitCode(0);
167 }
168 const TUnitParam* P = EX::GetParam(code.GetExCode());
169 m_value *= P->doCoefficient;
170 m_value += P->doRevise;
171 }
172 else
173 {
175 u.Set(m_value, m_numeCode.GetU1Code());
176 u.ToUnit(code.GetU1Code());
177 m_value = u.GetValue();
178 }
179 m_numeCode = code;
180 }
181 }
182
183public:
184
186 enum { KINDCODE = EX::KINDCODE };
187
192 CValueParUnitT(void) : _super(), m_value(), m_numeCode(), m_denoCode()
193 {
194 }
195
202 : _super(), m_value(v), m_numeCode(), m_denoCode()
203 {
204 }
205
212 CValueParUnitT(const CRealNumber& v, CExCode code)
213 : _super(), m_value(v), m_numeCode(code), m_denoCode()
214 {
215 }
216
224 CValueParUnitT(const CRealNumber& v, CNumeCode c1, CDenoCode c2)
225 : _super(), m_value(v), m_numeCode(c1), m_denoCode(c2)
226 {
227 }
228
234 void Set(const CRealNumber& v)
235 {
236 m_value = v;
237 }
238
245 void Set(const CRealNumber& v, CExCode code)
246 {
247 m_value = v;
248 m_numeCode = CNumeCode(code);
249 m_denoCode = CDenoCode();
250 }
251
259 void Set(const CRealNumber& v, CNumeCode c1, CDenoCode c2)
260 {
261 m_value = v;
262 m_numeCode = c1;
263 m_denoCode = c2;
264 }
265
273 CStr ToString(LPCTSTR lpszFormat = NULL) const
274 {
275 return m_value.ToString(lpszFormat) + GetUnitMarkString();
276 }
277
286 CStr ToString(CExCode code, LPCTSTR lpszFormat = NULL) const
287 {
288 CValueParUnitT u = *this;
289 u.ToUnit(code);
290 return u.ToString(lpszFormat);
291 }
292
302 CStr ToString(CNumeCode c1, CDenoCode c2, LPCTSTR lpszFormat = NULL) const
303 {
304 CValueParUnitT u = *this;
305 u.ToUnit(c1, c2);
306 return u.ToString(lpszFormat);
307 }
308
315 bool HasExCode(void) const
316 {
317 return m_numeCode.HasExCode();
318 }
319
325 CNumeCode GetUnitCode(void) const
326 {
327 return m_numeCode;
328 }
329
336 CDenoCode GetDenoUnitCode(void) const
337 {
338 return m_denoCode;
339 }
340
347 {
348 CStr s;
349 if ( m_numeCode.HasExCode() )
350 {
351 s = CValueUnitT<EX>::GetUnitMarkString(m_numeCode.GetExCode());
352 }
353 else
354 {
355 s = CValueUnitT<U1>::GetUnitMarkString(m_numeCode.GetU1Code());
356 s += _T("/") + CValueUnitT<U2>::GetUnitMarkString(m_denoCode.GetU2Code());
357 }
358 return s;
359 }
360
367 {
368 CStr s;
369 if ( m_numeCode.HasExCode() )
370 {
371 s = CValueUnitT<EX>::GetUnitJapanString(m_numeCode.GetExCode());
372 }
373 else
374 {
375 s = CValueUnitT<U1>::GetUnitJapanString(m_numeCode.GetU1Code());
376 s += _T(" 毎 ") + CValueUnitT<U2>::GetUnitJapanString(m_denoCode.GetU2Code());
377 }
378 return s;
379 }
380
385 void ToNormalUnit(void)
386 {
387 if ( m_numeCode.HasExCode() )
388 {
389 //今、EXコードなら基本単位に変換
390 const TUnitParam* P = EX::GetParam(m_numeCode.GetExCode());
391 m_value -= P->doRevise;
392 m_value /= P->doCoefficient;
393 m_numeCode = U1::EUnitCode(0);
394 m_denoCode = U2::EUnitCode(0);
395 }
396 }
397
404 CValueParUnitT& ToUnit(CExCode code)
405 {
406 m_ToUnit(CNumeCode(code));
407 return *this;
408 }
409
417 CValueParUnitT& ToUnit(CNumeCode c1, CDenoCode c2)
418 {
419 m_ToUnit(c1);
420 return ToDenoUnit(c2);
421 }
422
429 CValueParUnitT& ToDenoUnit(CDenoCode code)
430 {
431 if ( m_numeCode.HasExCode() )
432 {
433 const TUnitParam* P = EX::GetParam(m_numeCode.GetExCode());
434 m_value -= P->doRevise;
435 m_value /= P->doCoefficient;
436 m_numeCode = U1::EUnitCode(0);
437 m_denoCode = U2::EUnitCode(0);
438 }
439 if ( m_denoCode != code )
440 {
442 u.Set(1, code.GetU2Code());
443 u.ToUnit(m_denoCode.GetU2Code());
444 m_value *= u.GetValue();
445 m_denoCode = code;
446 }
447 return *this;
448 }
449
456 {
457 return m_value;
458 }
459
466 CRealNumber GetValue(CExCode code) const
467 {
468 CValueParUnitT r = *this;
469 r.ToUnit(code);
470 return r.GetValue();
471 }
472
480 CRealNumber GetValue(CNumeCode c1, CDenoCode c2) const
481 {
482 CValueParUnitT r = *this;
483 r.ToUnit(c1, c2);
484 return r.GetValue();
485 }
486
494 {
495 m_value += u.GetValue(m_numeCode, m_denoCode);
496 return *this;
497 }
498
506 {
507 CValueParUnitT r = *this;
508 return r += u;
509 }
510
517 {
518 m_value += v;
519 return *this;
520 }
521
528 {
529 CValueParUnitT r = *this;
530 return r += v;
531 }
532
540 {
541 return u + v;
542 }
543
551 {
552 m_value -= u.GetValue(m_numeCode, m_denoCode);
553 return *this;
554 }
555
563 {
564 CValueParUnitT r = *this;
565 return r -= u;
566 }
567
574 {
575 m_value -= v;
576 return *this;
577 }
578
585 {
586 CValueParUnitT r = *this;
587 return r -= v;
588 }
589
597 {
598 CValueParUnitT r = u;
599 u.m_value = v - u.m_value;
600 return *this;
601 }
602
609 {
610 m_value *= v;
611 return *this;
612 }
613
620 {
621 CValueParUnitT r = *this;
622 return r *= v;
623 }
624
632 {
633 return u * v;
634 }
635
642 {
643 CValueParUnitT v = *this;
644 v.ToNormalUnit();
645 v.ToDenoUnit(t.GetUnitCode());
647 r.Set(v.GetValue() * t.GetValue(), v.GetUnitCode().GetCode());
648 return r;
649 }
650
658 {
659 return s * t;
660 }
661
668 {
669 m_value /= v;
670 return *this;
671 }
672
679 {
680 CValueParUnitT r = *this;
681 return r /= v;
682 }
683
692 {
693 CValueUnitT<U2>::CCode tu = s.GetDenoUnitCode().GetCode();
695 r.Set(d.GetValue() / s.GetValue(d.GetUnitCode(), tu), tu);
696 return r;
697 }
698
706 {
707 return m_value / u.GetValue(m_numeCode, m_denoCode);
708 }
709
717 bool operator==(const CValueParUnitT& t) const { return m_value == t.GetValue(m_numeCode, m_denoCode); }
718
726 bool operator!=(const CValueParUnitT& t) const { return m_value != t.GetValue(m_numeCode, m_denoCode); }
727
735 bool operator<(const CValueParUnitT& t) const { return m_value < t.GetValue(m_numeCode, m_denoCode); }
736
744 bool operator<=(const CValueParUnitT& t) const { return m_value <= t.GetValue(m_numeCode, m_denoCode); }
745
753 bool operator>(const CValueParUnitT& t) const { return m_value > t.GetValue(m_numeCode, m_denoCode); }
754
762 bool operator>=(const CValueParUnitT& t) const { return m_value >= t.GetValue(m_numeCode, m_denoCode); }
763
764
765 //-----------------------
766
767
773 {
774 return EX::GetKindString();
775 }
776
781 static DWORD GetUnitKindCode(void)
782 {
783 return EX::KINDCODE;
784 }
785};
786
787
788
800{
801public:
802
807 static LPCTSTR GetKindString(void) { return _T("速度"); }
808
810 enum { KINDCODE = 'SP' };
811
814 {
815 KPH = EXCODE,
818 };
819
826 static const TUnitParam* GetParam(EUnitCode code)
827 {
828 const static TUnitParam A[] =
829 {
830 // 単位文字列 日本語 係数
831 { _T("kph"), _T("時速"), 3600.0 * 1.0E-3 }, // km/h
832 { _T("fpm"), _T("fpm"), 60.0 * 3.28084 }, // ft/min
833 { _T("kt"), _T("ノット"), 3600.0 / 1852.0 }, // kt
834 };
835 int c = code - EXCODE;
836 if ( c >= 0 && c < countof(A) )
837 {
838 return &A[c];
839 }
840 throw CNoSuchTypeException();
841 }
842};
843
877
885{
886 return CValueSpeed(d.GetValue() / t.GetValue(), d.GetUnitCode(), t.GetUnitCode());
887}
888
896{
897 CRealNumber one(1.0);
898 return s * (one / f);
899}
900
901
902
914{
915public:
916
921 static LPCTSTR GetKindString(void) { return _T("加速度"); }
922
924 enum { KINDCODE = 'AC' };
925
928 {
929 GAL = EXCODE,
930 G
931 };
932
939 static const TUnitParam* GetParam(EUnitCode code)
940 {
941 const static TUnitParam A[] =
942 {
943 // 単位文字列 日本語 係数
944 { _T("Gal"), _T("ガル"), 100 }, // Gal
945 { _T("G"), _T("重力加速度"), 1.0 / 9.80665 }, // G
946 };
947 int c = code - EXCODE;
948 if ( c >= 0 && c < countof(A) )
949 {
950 return &A[c];
951 }
952 throw CNoSuchTypeException();
953 }
954};
955
989
997{
998 return CValueAcceleration(s.GetValue(s.M, s.SEC) * f.GetValue(f.HZ), CValueSpeed::M, CValueTime2::SEC2);
999}
1000
1008{
1009 return s * f;
1010}
1011
1019{
1020 return CValueAcceleration(d.GetValue() / t.GetValue(), d.GetUnitCode(), t.GetUnitCode());
1021}
1022
1030{
1031 return CValueAcceleration(s.GetValue(s.M, s.SEC) / t.GetValue(t.SEC), CValueSpeed::M, CValueTime2::SEC2);
1032}
1033
1041{
1042 return CValueSpeed(a.GetValue(a.M, a.SEC2) * t.GetValue(t.SEC), a.M, t.SEC);
1043}
1044
1052{
1053 return a * t;
1054}
1055
1063{
1064 return CValueSpeed(a.GetValue(a.M, a.SEC2) / f.GetValue(f.HZ), a.M, CValueSpeed::SEC);
1065}
1066
1067
1068
1080{
1081public:
1082
1087 static LPCTSTR GetKindString(void) { return _T("面積"); }
1088
1090 enum { KINDCODE = '2D' };
1091
1093 enum EUnitCode {};
1094
1101 static const TUnitParam* GetParam(EUnitCode code)
1102 {
1103 throw CNoSuchTypeException();
1104 }
1105};
1106
1133
1141{
1142 return CValueDensity2(d.GetValue() / a.GetValue(), d.GetUnitCode(), a.GetUnitCode());
1143}
1144
1145
1146
1158{
1159public:
1160
1165 static LPCTSTR GetKindString(void) { return _T("体積密度"); }
1166
1168 enum { KINDCODE = 'DE' };
1169
1171 enum EUnitCode {};
1172
1179 static const TUnitParam* GetParam(EUnitCode code)
1180 {
1181 throw CNoSuchTypeException();
1182 }
1183};
1184
1211
1219{
1220 return CValueDensity3(d.GetValue() / t.GetValue(), d.GetUnitCode(), t.GetUnitCode());
1221}
1222
1223
1224
1236{
1237public:
1238
1243 static LPCTSTR GetKindString(void) { return _T("流量"); }
1244
1246 enum { KINDCODE = 'FL' };
1247
1249 enum EUnitCode {};
1250
1257 static const TUnitParam* GetParam(EUnitCode code)
1258 {
1259 throw CNoSuchTypeException();
1260 }
1261};
1262
1288
1296{
1297 return CValueFlux(c.GetValue() / t.GetValue(), c.GetUnitCode(), t.GetUnitCode());
1298}
1299
1300
1301
1302//-------------------
1303
1304
1305
1317{
1318public:
1319
1321 enum { KINDCODE = 0 };
1322
1324 enum EUnitCode {};
1325
1332 static const TUnitParam* GetParam(EUnitCode code)
1333 {
1334 throw CNoSuchTypeException();
1335 }
1336};
1337
1346template <typename U1, typename U2>
1347class CValueParT : public CValueParUnitT<U1, U2, CUnitParDummy>
1348{
1350 DEFSUPER(_super);
1351public:
1352
1354 enum { KINDCODE = U1::KINDCODE * 0x1000 + U2::KINDCODE };
1355
1360 static CStr GetKindString(void)
1361 {
1362 CStr s;
1363 s.Format(_T("%s 毎 %s"), U1::GetKindString(), U2::GetKindString());
1364 return s;
1365 }
1366
1372 {
1373 }
1374
1382 CValueParT(const CRealNumber& v, CNumeCode c1, CDenoCode c2)
1383 : _super(v, c1, c2)
1384 {
1385 }
1386
1394 {
1395 return CValueParT(u1.GetValue() / u2.GetValue(), u1.GetUnitCode(), u2.GetUnitCode());
1396 }
1397};
1398
1399
1400
1401}; // TNB
単位付値管理関係のヘッダ
単位管理抽象クラス
Definition: TnbValueUnit.h:68
タイプ相違例外
Definition: TnbException.h:146
接頭単位管理クラス
Definition: TnbValueUnit.h:111
EPfUnitCode
接頭単位コード.
Definition: TnbValueUnit.h:115
実数管理クラス
Definition: TnbRealNumber.h:78
CStr ToString(LPCTSTR lpszFormat=NULL) const
[取得] 文字列作成
void Format(const TYP *lpszFormat,...)
[代入] 書式付き文字列代入.
Definition: TnbStr.h:359
単位管理(加速度)クラス
EUnitCode
加速度拡張単位コード
@ GAL
Gal 1 Gal = 1 cm/s2 = 0.01 m/s2
@ G
重力加速度 1 G = 9.80665 m/s2
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
static LPCTSTR GetKindString(void)
[取得] 単位種文字列取得
単位管理(面積密度)クラス
EUnitCode
面積密度拡張単位コード
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
static LPCTSTR GetKindString(void)
[取得] 単位種文字列取得
単位管理(体積密度)クラス
EUnitCode
体積密度拡張単位コード
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
static LPCTSTR GetKindString(void)
[取得] 単位種文字列取得
単位管理(流量)クラス
EUnitCode
密度拡張単位コード
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
static LPCTSTR GetKindString(void)
[取得] 単位種文字列取得
単位管理(Par用ダミー)クラス
EUnitCode
ダミー拡張単位コード
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
単位管理(速度)クラス
EUnitCode
速度拡張単位コード
static const TUnitParam * GetParam(EUnitCode code)
[取得] コードパラメータ取得
static LPCTSTR GetKindString(void)
[取得] 単位種文字列取得
汎用管理クラス
CValueParT(void)
コンストラクタ.
friend CValueParT operator/(const CValueUnitT< U1 > &u1, const CValueUnitT< U2 > &u2)
[計算] 割算 (本クラス = 分子単位 ÷ 分母単位).
CValueParT(const CRealNumber &v, CNumeCode c1, CDenoCode c2)
コンストラクタ.
static CStr GetKindString(void)
[取得] 単位種文字列取得
単位付値管理テンプレートクラス
void Set(const CRealNumber &v, CNumeCode c1, CDenoCode c2)
[代入] 値、単位設定 指定の値、単位を記憶します。
friend CValueParUnitT operator-(const CRealNumber &v, const CValueParUnitT &u)
[計算] 減算.
CValueParUnitT & operator+=(const CRealNumber &v)
[計算] 加算代入.
friend CValueUnitT< U1 > operator*(const CValueUnitT< U2 > &t, const CValueParUnitT &s)
[計算] 掛算 (分子単位 = 分母単位 × 本クラス)
CValueParUnitT operator-(const CValueParUnitT &u) const
[計算] 単位付値減算.
CDenoCode GetDenoUnitCode(void) const
[取得] 分母単位コード取得.
void Set(const CRealNumber &v)
[代入] 値、単位設定 指定の値を記憶します。単位は変化しません。
CValueParUnitT(void)
コンストラクタ.
bool operator!=(const CValueParUnitT &t) const
[確認] 比較
CStr GetUnitJapanString(void) const
[取得] 単位マーク文字列取得.
CValueParUnitT operator*(const CRealNumber &v) const
[計算] 掛算.
CValueParUnitT operator-(const CRealNumber &v) const
[計算] 減算.
bool operator<(const CValueParUnitT &t) const
[確認] 比較
bool operator>=(const CValueParUnitT &t) const
[確認] 比較
CValueParUnitT operator/(const CRealNumber &v) const
[計算] 割算.
CValueParUnitT & operator+=(const CValueParUnitT &u)
[計算] 単位付値加算代入.
CValueParUnitT & operator*=(const CRealNumber &v)
[計算] 掛算代入.
friend CValueUnitT< U2 > operator/(const CValueUnitT< U1 > &d, const CValueParUnitT &s)
[計算] 割算 (分母単位 = 分子単位 ÷ 本クラス).
CRealNumber GetValue(void) const
[取得] 値取得.
bool operator==(const CValueParUnitT &t) const
[確認] 比較
friend CValueParUnitT operator*(const CRealNumber &v, const CValueParUnitT &u)
[計算] 掛算.
bool HasExCode(void) const
[確認] 単位コード確認.
CNumeCode GetUnitCode(void) const
[取得] 単位コード取得.
CValueParUnitT operator+(const CValueParUnitT &u) const
[計算] 加算.
bool operator>(const CValueParUnitT &t) const
[確認] 比較
CValueParUnitT & operator/=(const CRealNumber &v)
[計算] 割算代入.
CStr ToString(CExCode code, LPCTSTR lpszFormat=NULL) const
[取得] 文字列で取得 (拡張単位指定あり)
static DWORD GetUnitKindCode(void)
[取得] 単位種コード取得
CStr GetUnitMarkString(void) const
[取得] 単位マーク文字列取得.
static CStr GetUnitKindString(void)
[取得] 単位種文字列取得
void ToNormalUnit(void)
[変換] 単位変更 (基本単位へ).
CValueParUnitT & ToUnit(CExCode code)
[変換] 単位変更.
CRealNumber operator/(const CValueParUnitT &u) const
[計算] 割算 (値 = 本クラス ÷ 本クラス).
CStr ToString(CNumeCode c1, CDenoCode c2, LPCTSTR lpszFormat=NULL) const
[取得] 文字列で取得 (拡張単位指定あり)
CValueParUnitT operator+(const CRealNumber &v) const
[計算] 加算.
CValueUnitT< U1 > operator*(const CValueUnitT< U2 > &t) const
[計算] 掛算 (分子単位 = 本クラス × 分母単位).
CValueParUnitT(const CRealNumber &v, CExCode code)
コンストラクタ.
CValueParUnitT & operator-=(const CValueParUnitT &u)
[計算] 単位付値減算代入.
CValueParUnitT(const CRealNumber &v, CNumeCode c1, CDenoCode c2)
コンストラクタ.
bool operator<=(const CValueParUnitT &t) const
[確認] 比較
void Set(const CRealNumber &v, CExCode code)
[代入] 値、単位設定 指定の値、単位を記憶します。
CRealNumber GetValue(CExCode code) const
[取得] 値取得 (単位指定).
CStr ToString(LPCTSTR lpszFormat=NULL) const
[取得] 文字列で取得
CValueParUnitT(const CRealNumber &v)
コンストラクタ.
CValueParUnitT & ToUnit(CNumeCode c1, CDenoCode c2)
[変換] 単位変更.
CRealNumber GetValue(CNumeCode c1, CDenoCode c2) const
[取得] 値取得 (単位指定).
CValueParUnitT & operator-=(const CRealNumber &v)
[計算] 減算代入.
CValueParUnitT & ToDenoUnit(CDenoCode code)
[変換] 単位変更.
friend CValueParUnitT operator+(const CRealNumber &v, const CValueParUnitT &u)
[計算] 加算.
単位コード管理クラス
Definition: TnbValueUnit.h:227
単位付値管理テンプレートクラス
Definition: TnbValueUnit.h:215
void Set(const CRealNumber &v)
[代入] 値設定 指定の値を設定します。単位は変化しません。
Definition: TnbValueUnit.h:357
CStr GetUnitJapanString(void) const
[取得] 単位意味文字列取得.
Definition: TnbValueUnit.h:426
CCode GetUnitCode(void) const
[取得] 単位コード取得.
Definition: TnbValueUnit.h:406
CRealNumber GetValue(void) const
[取得] 値取得.
Definition: TnbValueUnit.h:454
CStr GetUnitMarkString(void) const
[取得] 単位マーク文字列取得.
Definition: TnbValueUnit.h:416
CValueUnitT & ToUnit(CCode code)
[変換] 単位変更.
Definition: TnbValueUnit.h:437
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
Definition: TnbStrLib.h:367
CValueAcceleration operator*(const CValueSpeed &s, const CValueFrequency &f)
[計算] 掛算 (加速度 = 速度 × 周波数) .
CValueParUnitT< CUnitCubic, CUnitTime, CUnitFlux > CValueFlux
流量管理クラス
CValueParUnitT< CUnitWeight, CUnitArea, CUnitDensity2 > CValueDensity2
面積密度管理クラス
CValueParUnitT< CUnitWeight, CUnitCubic, CUnitDensity3 > CValueDensity3
体積密度管理クラス
CValueParUnitT< CUnitDistance, CUnitTime, CUnitSpeed > CValueSpeed
速度管理クラス
CValueSpeed operator/(const CValueDistance &d, const CValueTime &t)
[計算] 割算 (速度 = 距離 ÷ 時間).
CValueParUnitT< CUnitDistance, CUnitTime2, CUnitAcceleration > CValueAcceleration
加速度管理クラス
TNB Library
Definition: TnbDoxyTitle.txt:2
単位情報テーブル型
Definition: TnbValueUnit.h:90
double doCoefficient
変換係数
Definition: TnbValueUnit.h:93
double doRevise
誤差係数
Definition: TnbValueUnit.h:94