27 void operator delete(
void* ptr,
size_t size);
28 void*
operator new(
size_t size);
45 static comms::cStr& LastTag();
46 static comms::cStr& defTab();
75 TagsList* AddSubTag(
const char* quotename, DWORD body);
76 TagsList* AddSubTag(
const char* quotename,
short body);
77 TagsList* AddSubTag(
const char* quotename, WORD body);
78 TagsList* AddSubTag(
const char* quotename,
char body);
90 TagsList& operator << (
const comms::cVec2& value);
91 TagsList& operator << (
const comms::cVec3& value);
92 TagsList& operator << (
const comms::cVec4& value);
93 TagsList& operator << (
const comms::cMat3& value);
94 TagsList& operator << (
const comms::cMat4& value);
113 template <
typename X,
typename TYPE>
114 void StoreField(
const char* tagname,
const cList<X>& array, TYPE X::* member);
117 void operator >> (comms::cStr& string_value);
118 void operator >> (
int& value);
119 void operator >> (
float& value);
120 void operator >> (
bool& value);
121 void operator >> (comms::cVec2& value);
122 void operator >> (comms::cVec3& value);
123 void operator >> (comms::cVec4& value);
124 void operator >> (comms::cMat3& value);
125 void operator >> (comms::cMat4& value);
132 template <
typename X,
typename TYPE>
133 void RestoreField(
cList<X>& array, TYPE X::* member);
153 int GetSubTagIndex(
const char* SubQuoteName);
163 comms::cStr string(
const char* SubQuoteName);
164 int integer(
const char* SubQuoteName,
int Default = 0);
165 float floating(
const char* SubQuoteName,
float Default = 0.0f);
166 bool boolean(
const char* SubQuoteName,
bool Default =
false);
185 static int& GetConstantLocationValueRef(
const char* str);
189 void setAsArray(
bool isArray);
190 bool isArray()
const;
192 const char* _tagname;
193 const char* _tag(
const char* tag);
194 comms::cList<TagsList*> SubTags;
205 const char* s = body().ToCharPtr();
206 if (body().Length()) {
207 cPtrDiff num = *((
int*)s);
208 cPtrDiff sz = *((
int*)(s + 4));
209 if (sz ==
sizeof(X)) {
212 memcpy(array.ToPtr(), s + 8, num * sz);
218template <
typename X,
typename TYPE>
221 const char* s = body().ToCharPtr();
222 if (body().Length()) {
223 cPtrDiff num = *((
int*)s);
224 cPtrDiff sz = *((
int*)(s + 4));
225 if (sz ==
sizeof(TYPE)) {
227 if (array.Count() < num) {
229 array.Add(ref, num - array.Count());
231 TYPE* TL = (TYPE*)(s + 8);
232 for (
int i = 0; i < num; i++) {
233 array[i].*member = *TL;
245 T->body().SetLength(4 + 4 + array.Count() *
sizeof(X));
246 char* s = T->body().ToNonConstCharPtr();
247 *((
int*)s) = array.Count();
248 *((
int*)(s + 4)) =
sizeof(X);
249 memcpy(s + 8, array.ToPtr(), cPtrDiff(array.Count()) *
sizeof(X));
255template <
typename X,
typename TYPE>
259 T->body().SetLength(4 + 4 + array.Count() *
sizeof(TYPE));
260 char* s = T->body().ToNonConstCharPtr();
261 *((
int*)s) = array.Count();
262 *((
int*)(s + 4)) =
sizeof(TYPE);
263 TYPE* TL = (TYPE*)(s + 8);
264 for (
int i = 0; i < array.Count();i++) {
265 *TL = array[i].*member;
271void ToBase64(BYTE* buf,
int Len, comms::cStr& dest);
272void ToBase64(BYTE* buf,
int Len, std::string& dest);
273int ReadBase64(
const char* src, BYTE* buf,
int MaxLen);
276inline TagsList* new_TagsList(
const char* s){
282inline void TagsList::operator
delete(
void* ptr,
size_t size) {
285inline void* TagsList::operator
new(
size_t size) {
286 return new_TagsList();
289inline comms::cStr& TagsList::body() {
293inline comms::cStr TagsList::string(
const char* SubQuoteName) {
298 return comms::cStr::Empty;
301inline int TagsList::integer(
const char* SubQuoteName,
int Default) {
309inline float TagsList::floating(
const char* SubQuoteName,
float Default) {
317inline bool TagsList::boolean(
const char* SubQuoteName,
bool Default) {
325inline void TagsList::setAsArray(
bool isArray) {
326 this->_isArray = isArray;
329inline bool TagsList::isArray()
const {
Use this class for build a class for UI or serialization. see class_reg.h for details about the class...
Definition BaseClass.h:94
The array template, refer it as coat::list <...> if you are using the Core API.
Definition cList.h:136