142 return HasData() && m_param.dataBytes.SetAttribute(index, WILDCARD);
158 EKind kind = (m_param.eKind >= other.m_param.eKind) ? m_param.eKind : other.m_param.eKind;
161 return m_CompareNum(m_param, other.m_param);
163 const CDataBytes& leftData = m_param.GetData();
164 const CDataBytes& rightData = other.m_param.GetData();
168 size_t srcPosMax = leftData.
GetSize();
169 size_t wildPosMax = rightData.
GetSize();
173 if ( wildPos >= wildPosMax )
181 while ( wildPos < wildPosMax )
190 if ( wildPos >= wildPosMax )
195 if ( srcPos >= srcPosMax )
200 B = leftData.
Get(srcPos);
208 B = leftData.
Get(srcPos);
209 if ( B == rightData.
Get(wildPos) )
217 if ( srcPos >= srcPosMax )
223 if ( srcPos >= srcPosMax )
227 INT_PTR r = leftData.
Get(srcPos);
228 r -= rightData.
Get(wildPos);
235 if ( wildPos >= wildPosMax && srcPos >= srcPosMax )
264 EKind kind = (m_param.eKind >= other.m_param.eKind) ? m_param.eKind : other.m_param.eKind;
268 v = m_param.GetInteger() + other.m_param.GetInteger();
271 v = m_param.GetFloat() + other.m_param.GetFloat();
274 v.m_param.Set(m_param.GetData() + other.m_param.GetData());
291 EKind kind = (m_param.eKind >= other.m_param.eKind) ? m_param.eKind : other.m_param.eKind;
295 v = m_param.GetInteger() - other.m_param.GetInteger();
298 v = m_param.GetFloat() - other.m_param.GetFloat();
319 EKind kind = (m_param.eKind >= other.m_param.eKind) ? m_param.eKind : other.m_param.eKind;
323 v = m_param.GetInteger() * other.m_param.GetInteger();
326 v = m_param.GetFloat() * other.m_param.GetFloat();
330 if ( m_param.eKind ==
DATA )
332 v.m_param.dataBytes.RemoveAll();
333 loop ( i, other.m_param.GetInteger() )
335 v.m_param.dataBytes += m_param.dataBytes;
354 EKind kind = (m_param.eKind >= other.m_param.eKind) ? m_param.eKind : other.m_param.eKind;
358 v = m_param.GetInteger() / other.m_param.GetInteger();
361 v = m_param.GetFloat() / other.m_param.GetFloat();
382 loop ( i, m_param.dataBytes.GetSize() )
384 if ( m_param.dataBytes.GetAttribute(i) == WILDCARD )
400 return m_param.eKind ==
DATA;
410 return m_param.eKind;
420 return HasData() ? atoi(m_param.GetString()) : m_param.GetInteger();
430 return HasData() ? atof(m_param.GetString()) : m_param.GetFloat();
441 return m_param.GetString();
452 return m_param.GetData();
462 return m_param.GetData().GetSize();
481 CDataBytes dataBytes;
485 TParam(
void) : iValue(0), doValue(0.0), eKind(
EMPTY)
489 TParam(
const TParam& p) : eKind(p.eKind), dataBytes(p.dataBytes), iValue(p.iValue), doValue(p.doValue)
496 dataBytes = p.dataBytes;
502 void Set(
EKind e,
int i = 0,
double d = 0.0,
const CDataBytes* D = NULL)
507 dataBytes.RemoveAll();
532 void Set(
const CDataBytes& d)
534 Set(
DATA, 0, 0.0, &d);
537 void Set(
size_t l, LPCVOID P)
540 d.SetElements(l,
static_cast<const BYTE*
>(P));
551 return (eKind <=
INTEGER) ? iValue : doValue;
563 a.
Format(
"%.0f", doValue);
567 size_t l = dataBytes.GetSize();
571 dataBytes.GetElements(l,
reinterpret_cast<BYTE*
>(P));
595 d.SetElements(a.
GetLength(),
reinterpret_cast<const BYTE*
>(LPCSTR(a)));
608 INT_PTR m_CompareNum(
const TParam& p1,
const TParam& p2)
const
610 if ( p1.eKind ==
DATA || p2.eKind ==
DATA )
622 friend class CTmlValueTest;
667 : m_pValueRef(other.m_pValueRef), m_valueReal(other.m_valueReal), m_strExName(other.m_strExName)
678 m_pValueRef = other.m_pValueRef;
679 m_valueReal = other.m_valueReal;
680 m_strExName = other.m_strExName;
771 return (m_pValueRef == NULL) ? m_valueReal : *m_pValueRef;
781 return (m_pValueRef == NULL) ? m_valueReal : *m_pValueRef;
#define loop(VAR, CNT)
loop構文.
ATT GetAttribute(INDEX index) const
[取得] 要素の属性値、取得
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
size_t GetLength(void) const
[取得] 文字列長
void Format(const TYP *lpszFormat,...)
[代入] 書式付き文字列代入.
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
CTmlValueCarrier(void)
コンストラクタ
CTmlValue & operator()(void)
[取得] 値参照
void Set(LPCSTR lpsz)
[代入] 拡張ネーム指定.
LPCSTR GetExName(void) const
[取得] 拡張ネーム取得
CTmlValueCarrier & operator=(double i)
[代入] double代入.
const CTmlValue & operator()(void) const
[取得] 値参照
CTmlValueCarrier & operator=(const CTmlValue &v)
[代入] Valueを代入.
CTmlValueCarrier(const CTmlValueCarrier &other)
コピーコンストラクタ
void SetRef(CTmlValue &v)
[代入] Value参照指定.
CTmlValueCarrier & operator=(const CTmlValueCarrier &other)
コピーオペレータ
CTmlValueCarrier & operator=(int i)
[代入] int代入.
INT_PTR Compare(ICollectionT< CByteVector > &_vvbWild, const CTmlValue &other) const
[比較] 比較.
EKind Getkind(void) const
[確認] 保持型確認.
CTmlValue & SetString(LPCSTR lpszData)
[代入] データ代入.
CTmlValue(double i)
コンストラクタ
CTmlValue(const CTmlValue &other)
コピーコンストラクタ
double GetFloat(void) const
[取得] 数字取得.
CTmlValue & operator=(const CByteVector &v)
[代入] データ代入.
size_t GetDataSize(void) const
[取得] データ長取得.
CTmlValue operator+(const CTmlValue &other) const
[計算] 加算.
CTmlValue operator*(const CTmlValue &other) const
[計算] 掛け算.
CVectorT< INDEX > GetWildCardPositions(void) const
[取得] WildCard情報取得.
CTmlValue & SetData(size_t len, LPCVOID P)
[代入] データ代入.
CTmlValue & operator=(const CTmlValue &v)
[代入] コピーオペレータ.
CTmlValue operator/(const CTmlValue &other) const
[計算] 割り算.
int GetInteger(void) const
[取得] 数字取得.
CByteVector GetData(void) const
[取得] データ取得.
CAscii GetString(void) const
[取得] 文字列取得.
CTmlValue operator-(const CTmlValue &other) const
[計算] 引き算.
bool HasData(void) const
[確認] データ型保持確認.
virtual INT_PTR Compare(const CTmlValue &other) const
[確認] 比較.
bool AddWildPoint(INDEX index)
[設定] ワイルドカードポイント追加.
virtual size_t GetSize(void) const
[取得] サイズ取得
virtual TYP Get(INDEX index) const
[取得] 要素の取得.
virtual const TYP * ReferBuffer(void) const
[取得] データアドレス取得
virtual INDEX Add(const TYP &t)
[追加] 要素一つ追加.
size_t GetLen(LPCSTR lpsz)
[計算] 文字列長計算(ASCII/SJIS用)
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
CVectorT< CTmlValue > CTmlValuesVector
TinyMacroLang 値配列型.
virtual INDEX Add(const TYP &t)=0
[追加] 要素一つ追加.
virtual bool RemoveAll(void)
[削除] 全要素削除 .
virtual INT_PTR CompareTo(const TYP &t1, const TYP &t2) const =0
[確認] 比較
static IComparatorT & GetDefault(void)
[作成] 汎用コンパレータ取得.