OROCHI
 
Loading...
Searching...
No Matches
GxResCellSheet.h
Go to the documentation of this file.
1//===========================================================================
10//===========================================================================
11#pragma once
12
13GX_CORE_NAMESPACE_BEGIN()
14
15//===========================================================================
17//===========================================================================
19{
20 //-----------------------------------------------------------
22 //-----------------------------------------------------------
24public:
25 // RTTI定義
26 GX_RTTI_RESOURCE_NAME(GxResCellSheet, GxResBase, "セルシート")
27 // ClassBaseReference継承クラス用禁止宣言
29
30
31 static const u32 RESOURCE_VERSION;
33 static constexpr u32 BLOCK_SIZE = 4;
34
36 enum class CELL_DATA_TYPE : u32
37 {
38 STRING = 0,
39 LARGE_INTEGER,
40 INTEGER,
41 HEXADECIMAL,
42 FLOAT,
43 COMMENT,
44 NOTHING
45 };
46
49 {
50 u32 _isSjis : 1;
51 u32 _column;
52 u32 _row;
53 };
54
57 {
58 u32 _offset;
59#if GX_BITFIELD_LITTLEENDIAN
60 u32 _block : 29;
61 CELL_DATA_TYPE _type : 3;
62#else // GX_BITFIELD_LITTLEENDIAN
64 u32 _block : 29;
65#endif // !GX_BITFIELD_LITTLEENDIAN
66 };
67
73
75 //-----------------------------------------------------------
77 //-----------------------------------------------------------
79
80public:
82 GxResCellSheet(void);
84 void cleanup(void) override;
85
87 //-----------------------------------------------------------
89 //-----------------------------------------------------------
91public:
93 void createCallback(void* pUser);
95 b32 load(GxStream& stream, u32 dataSize);
96#if GX_DEVELOP
98 b32 save(GxStream& stream);
99#endif // GX_DEVELOP
100
102 u32 findColumnString(u32 row, GX_CSTR string) const;
104 u32 findColumnU64(u32 row, u64 value) const;
106 u32 findColumnU32(u32 row, u32 value) const;
108 u32 findColumnS32(u32 row, s32 value) const;
110 u32 findColumnF32(u32 row, f32 value) const;
111
113 u32 findRowString(u32 column, GX_CSTR string) const;
115 u32 findRowU64(u32 column, u64 value) const;
117 u32 findRowU32(u32 column, u32 value) const;
119 u32 findRowS32(u32 column, s32 value) const;
121 u32 findRowF32(u32 column, f32 value) const;
122
124 //-----------------------------------------------------------
126 //-----------------------------------------------------------
128public:
130 constexpr u32 getNumColumn(void) const { return _column; }
132 constexpr u32 getNumRow(void) const { return _row; }
134 constexpr u32 getIndex(u32 column, u32 row) const { return row * _column + column; }
136 constexpr u32 getIndexMax(void) const { return _row * _column; }
138 GX_FORCE_INLINE b32 isUseSpace(void) const { return _isUseSpace; }
140 GX_FORCE_INLINE b32 isSjis(void) const { return _isSjis; }
141
143 virtual CELL_DATA_TYPE getDataType(u32 column, u32 row) const;
145 virtual u32 getDataSize(u32 column, u32 row) const;
147 virtual GX_CSTR getString(u32 column, u32 row) const;
149 virtual u64 getValueU64(u32 column, u32 row) const;
151 virtual u32 getValueU32(u32 column, u32 row) const;
153 virtual s32 getValueS32(u32 column, u32 row) const;
155 virtual f32 getValueF32(u32 column, u32 row) const;
157 virtual b32 isExistValue(u32 column, u32 row) const;
159 virtual void covertStringToPlatformEncoding(GX_STR dst, u32 column, u32 row);
160
161protected:
163 const GxCellSheetOffset* getOffsetInformation(u32 column, u32 row) const;
164
166 //-----------------------------------------------------------
168 //-----------------------------------------------------------
170protected:
174 u32 _row;
177
179};
180
181#if GX_DEVELOP
182//===========================================================================
184//===========================================================================
185class GxResCellSheetCsv : public GxResCellSheet
186{
187 //-----------------------------------------------------------
189 //-----------------------------------------------------------
191public:
192 // RTTI定義
193 GX_RTTI_RESOURCE(GxResCellSheetCsv, GxResCellSheet)
194 // ClassBaseReference継承クラス用禁止宣言
195 GX_PROHIBIT_CLASS_BASE_REFERENCE(GxResCellSheetCsv)
196
197public:
199 struct GxCellData : public GxStructBase
200 {
201 //-----------------------------------------------------------
203 //-----------------------------------------------------------
205 public:
206 // RTTI定義
207 GX_RTTI_STRUCT(GxCellData)
208 // new, delete定義 (配列確保可能)
209 GX_OPERATOR_NEW_DELETE_USE_ARRAY(GxAllocatorList::ALLOCATOR_TYPE::RESOURCE)
210
211
212 static GX_CSTR ZERO_STRING;
213
215 //-----------------------------------------------------------
217 //-----------------------------------------------------------
219 public:
221 GxCellData(void);
222
224 void setCellString(GX_CSTR string, b32 isString = false);
225
227 //-----------------------------------------------------------
229 //-----------------------------------------------------------
231 public:
232 b32 _isString;
233 GxString _text;
234
236 };
237
239 //-----------------------------------------------------------
241 //-----------------------------------------------------------
243public:
245 GxResCellSheetCsv(void);
247 void cleanup(void) override;
248
250 //-----------------------------------------------------------
252 //-----------------------------------------------------------
254public:
256 b32 finalize(void);
257
259 b32 load(GxStream& stream, u32 dataSize);
261 b32 save(GxStream& stream);
262
263private:
265 CELL_DATA_TYPE analyseCellDataType(const GxCellData& cellData) const;
267 u32 getCellDataBinarySize(const GxCellData& cellData, CELL_DATA_TYPE cellDataType) const;
269 void copyCellDataBinary(void* pDst, const GxCellData& cellData, CELL_DATA_TYPE cellDataType) const;
270
272 static b32 isCommentData(GX_CSTR string);
274 static b32 isLargeIntegerData(GX_CSTR string);
276 static b32 isIntegerData(GX_CSTR string);
278 static b32 isFloatData(GX_CSTR string);
280 static b32 isHexadecimalData(GX_CSTR string);
282 static b32 isReturnCode(GX_CSTR string, u32& codeSize);
284 static void setReturnCode(GX_STR dst);
285
287 static b32 isEnterQuot(GX_CSTR sstringtr, u32& codeSize);
288
290 b32 trim(GxString& string);
291public:
293 GxCellData* getCellData(u32 column, u32 row);
295 const GxCellData* getCellData(u32 column, u32 row) const;
297 GxCellData* getCellData(u32 index);
299 const GxCellData* getCellData(u32 index) const;
300
302 //-----------------------------------------------------------
304 //-----------------------------------------------------------
306public:
308 void setCellSize(u32 column, u32 row);
309
311 CELL_DATA_TYPE getDataType(u32 column, u32 row) const override;
313 u32 getDataSize(u32 column, u32 row) const override;
315 GX_CSTR getString(u32 column, u32 row) const override;
317 u64 getValueU64(u32 column, u32 row) const override;
319 u32 getValueU32(u32 column, u32 row) const override;
321 f32 getValueF32(u32 column, u32 row) const override;
322
324 void setString(u32 column, u32 row, GX_CSTR string);
326 void setValueU32(u32 column, u32 row, u32 value);
328 void setValueU64(u32 column, u32 row, u64 value);
330 void setValueF32(u32 column, u32 row, f32 value);
331
333 b32 isExistValue(u32 column, u32 row) const override;
334
336 void setSjis(b32 sjis) { _isSjis = sjis; }
337
339 //-----------------------------------------------------------
341 //-----------------------------------------------------------
343private:
344 GxCellData* _pCellData;
345
347};
348#endif // GX_DEVELOP
349
350GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
リソース基底クラス
Definition GxResBase.h:23
セルシートリソースクラス
Definition GxResCellSheet.h:19
void * _pFinalizedData
ファイナライズデータバッファ
Definition GxResCellSheet.h:171
GX_FORCE_INLINE b32 isSjis(void) const
sjis を使用する (デフォルトは sjis)
Definition GxResCellSheet.h:140
virtual u32 getValueU32(u32 column, u32 row) const
整数取得 (u32)
Definition GxResCellSheet.cpp:575
constexpr u32 getNumRow(void) const
行(縦)の数取得
Definition GxResCellSheet.h:132
virtual f32 getValueF32(u32 column, u32 row) const
小数取得
Definition GxResCellSheet.cpp:625
virtual CELL_DATA_TYPE getDataType(u32 column, u32 row) const
セル値タイプ取得
Definition GxResCellSheet.cpp:447
virtual u32 getDataSize(u32 column, u32 row) const
セルデータサイズ取得
Definition GxResCellSheet.cpp:469
u32 _column
列(横)の数
Definition GxResCellSheet.h:173
u32 _finalizedDataSize
ファイナライズデータサイズ
Definition GxResCellSheet.h:172
b32 _isSjis
sjis 使用フラグ
Definition GxResCellSheet.h:176
CELL_DATA_TYPE
データタイプ (※追加の場合は _type のビット数に注意)
Definition GxResCellSheet.h:37
constexpr u32 getIndexMax(void) const
インデックス最大値取得
Definition GxResCellSheet.h:136
constexpr u32 getNumColumn(void) const
列(横)の数取得
Definition GxResCellSheet.h:130
virtual b32 isExistValue(u32 column, u32 row) const
セル値存在チェック
Definition GxResCellSheet.cpp:664
u32 _row
行(縦)の数
Definition GxResCellSheet.h:174
virtual u64 getValueU64(u32 column, u32 row) const
整数取得 (u64)
Definition GxResCellSheet.cpp:536
void cleanup(void) override
解放
Definition GxResCellSheet.cpp:56
b32 load(GxStream &stream, u32 dataSize)
リソース読み込み
Definition GxResCellSheet.cpp:85
GX_FORCE_INLINE b32 isUseSpace(void) const
半角スペース使用判定
Definition GxResCellSheet.h:138
constexpr u32 getIndex(u32 column, u32 row) const
インデックス取得
Definition GxResCellSheet.h:134
virtual GX_CSTR getString(u32 column, u32 row) const
文字列取得
Definition GxResCellSheet.cpp:491
b32 _isUseSpace
半角スペース使用フラグ
Definition GxResCellSheet.h:175
ストリーム基礎クラス
Definition GxStream.h:20
生成時情報
Definition GxResCellSheet.h:70
b32 _isUseSpace
半角スペース使用判定
Definition GxResCellSheet.h:71
ヘッダー
Definition GxResCellSheet.h:49
u32 _row
行(縦)
Definition GxResCellSheet.h:52
u32 _isSjis
sjis か
Definition GxResCellSheet.h:50
u32 _column
列(横)
Definition GxResCellSheet.h:51
バイナリオフセット情報
Definition GxResCellSheet.h:57
CELL_DATA_TYPE _type
タイプ
Definition GxResCellSheet.h:63
u32 _offset
オフセット位置
Definition GxResCellSheet.h:58
u32 _block
データブロックサイズ
Definition GxResCellSheet.h:64
文字列型クラス
Definition GxString.h:18
Definition GxBase.h:24
32bitブーリアン
Definition GxDefine.h:173