110 year = down_cast<WORD>(i / 10000);
111 month = down_cast<BYTE>((i / 100) % 100);
112 day = down_cast<BYTE>(i % 100);
131 m_records.RemoveAll();
132 m_fields.RemoveAll();
141 return m_fields.GetSize();
150 return m_records.GetSize();
161 loop ( i, m_fields.GetSize() )
163 if ( m_fields[i].name.IsEqual(lpszFieldName) )
168 return INVALID_INDEX;
180 if ( m_fields.IsInRange(field) )
182 _fi = m_fields[field];
183 return m_ToKind(_fi);
200 return m_fields.Add(fi);
202 return INVALID_INDEX;
234 if ( width >= dec + 1 )
238 return INVALID_INDEX;
255 if ( width >= dec + 1 )
259 return INVALID_INDEX;
287 return m_fields.Remove(field);
299 return m_records.RemoveAll();
315 return m_records.Add(dv);
317 return INVALID_INDEX;
334 return m_records.Insert(record, dv);
347 return m_records.Remove(record);
359 TData* D = m_Ref(record, field);
362 D->SetString(_T(
""));
379 TData* D = m_Ref(record, field);
382 D->SetString(lpszString);
401 TData* D = m_Ref(record, field);
424 TData* D = m_Ref(record, field);
445 if ( m_ToKind(field) ==
EK_Date )
447 TData* D = m_Ref(record, field);
450 D->SetFloat(date.
Get());
466 const TData* D = m_Ref(record, field);
469 return (D->hasString && D->string.IsEmpty());
484 const TData* D = m_Ref(record, field);
516 int v =
ToInt(D->value);
559 const TData* D = m_Ref(record, field);
564 r = D->string.ToInt();
583 const TData* D = m_Ref(record, field);
588 r = D->string.ToDouble();
650 TRACE1(
"%4d|", j + 1);
663 EFieldKind m_ToKind(
const TFieldInfo& info)
const
675 if ( info.decimals == 0 )
689 if ( m_fields.IsInRange(field) )
691 return m_ToKind(m_fields[field]);
702 TData(
void) : hasString(true)
706 void SetString(LPCTSTR lpsz)
712 void SetFloat(
double v)
719 ds >> hasString >>
string >> value;
723 _sr << hasString <<
string << value;
727 const TData* m_Ref(INDEX record, INDEX field)
const
729 if ( m_fields.IsInRange(field) && m_records.IsInRange(record) )
731 const CDataVector& v = m_records[record];
732 ASSERT( v.IsInRange(field) );
738 TData* m_Ref(INDEX record, INDEX field)
740 if ( m_fields.IsInRange(field) && m_records.IsInRange(record) )
742 CDataVector& v = m_records[record];
743 ASSERT( v.IsInRange(field) );
752 friend class CGridTest;
#define loop(VAR, CNT)
loop構文.
bool SetNullRecord(INDEX record, INDEX field)
[設定] レコードNULL設定.
size_t GetFieldCount(void) const
[取得] フィールド数取得
INDEX FindFieldName(LPCTSTR lpszFieldName) const
[検索] フィールド名検索
INDEX AddDateField(LPCTSTR lpszFieldName)
[追加] 日付フィールド追加.
bool SetDateRecord(INDEX record, INDEX field, const TDate &date)
[設定] レコード日付設定.
bool DeleteRecord(INDEX record)
[削除] レコード削除.
bool AllDeleteRecord(void)
[削除] レコード全削除.
bool SetStringRecord(INDEX record, INDEX field, LPCTSTR lpszString)
[設定] レコード文字列設定.
CStr GetStringRecord(INDEX record, INDEX field, bool isAdjust=false) const
[取得] レコード文字列取得.
INDEX AddCharacterField(LPCTSTR lpszFieldName, size_t width)
[追加] 文字フィールド追加.
double GetFloatRecord(INDEX record, INDEX field) const
[取得] レコード実数取得.
bool SetIntegerRecord(INDEX record, INDEX field, int value)
[設定] レコード数値設定.
INDEX AddFloatingField(LPCTSTR lpszFieldName, size_t width, size_t dec=0)
[追加] 数値フィールド追加.
bool InsertRecord(INDEX record)
[挿入] レコード挿入.
@ ET_Logical
論理(?,Y,N,T,F)
EFieldKind GetFieldInfo(TFieldInfo &_fi, INDEX field) const
[取得] フィールド情報取得
INDEX AddNumericField(LPCTSTR lpszFieldName, size_t width, size_t dec=0)
[追加] 数値フィールド追加.
bool DeleteField(INDEX field)
[削除] フィールド削除.
INDEX AddField(const TFieldInfo &fi)
[追加] フィールド追加.
bool IsNullRecord(INDEX record, INDEX field) const
[確認] レコードNULL確認
bool SetFloatRecord(INDEX record, INDEX field, double value)
[設定] レコード実数設定.
TDate GetDateRecord(INDEX record, INDEX field) const
[取得] レコード日付取得.
void AllDelete(void)
[削除] 全削除.
INDEX AddRecord(void)
[追加] レコード追加.
size_t GetRecordCount(void) const
[取得] レコード数取得
int GetIntegerRecord(INDEX record, INDEX field) const
[取得] レコード数値取得.
bool IsEmpty(void) const
[確認] 空チェック
CStrT Left(size_t iSize) const
[作成] 範囲取得.
size_t GetLength(void) const
[取得] 文字列長
CStrT Right(INT_PTR iSize) const
[作成] 範囲取得.
static CStrT Fmt(const TCHAR *lpszFormat,...)
[作成] 書式付き文字列作成
void Format(const TYP *lpszFormat,...)
[代入] 書式付き文字列代入.
static CStrT Lineup(TCHAR t, size_t length)
[作成] 指定文字を並べた文字列作成
virtual bool SetSize(size_t size)
[操作] サイズ指定
int ToInt(LPCSTR lpsz, int iBase=10)
[変換] INT変換(ASCII/SJIS用).
void Set(int i)
[設定] INT型設定
TDate(WORD y=2000, BYTE m=1, BYTE d=1)
コンストラクタ
int Get(void) const
[取得] INT型取得
virtual void Deserialize(const IDeserializer &ds)
デシリアライズ
TFieldInfo(LPCTSTR lpsz=NULL, size_t w=0, size_t d=0, EFieldType t=ET_Character)
コンストラクタ
virtual void Serialize(ISerializer &_sr) const
シリアライズ