Skip to content

Commit 7af04e3

Browse files
author
huangxiyuan
committed
support msvc
1 parent d1fa3fd commit 7af04e3

File tree

7 files changed

+158
-8
lines changed

7 files changed

+158
-8
lines changed

config.h

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#ifndef __X_CONFIG_H
2+
#define __X_CONFIG_H
3+
4+
// default enable json/xml
5+
#define XTOSTRUCT_JSON
6+
#define XTOSTRUCT_XML
7+
8+
//#define XTOSTRUCT_LIBCONIFG
9+
//#define XTOSTRUCT_BSON
10+
11+
#if (defined _MSC_VER || defined WINNT)
12+
#define WINDOWS
13+
#endif
14+
15+
#endif

gen_msvc.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/python
2+
3+
def gen(prefix, count):
4+
line="#define X_STRUCT_L"+prefix+str(count)+"(ACT"
5+
for i in range(1, count+1):
6+
line+=",M"+str(i)
7+
line+=") X_STRUCT_L"+prefix+"DEF(ACT, M1)"
8+
if count > 1:
9+
line+=" X_STRUCT_L"+prefix+str(count-1)+"(ACT"
10+
for i in range(2, count+1):
11+
line+=",M"+str(i)
12+
line+=")"
13+
print line
14+
15+
for i in range(1,33):
16+
gen("1_", i)
17+
for i in range(1,33):
18+
gen("2_", i)

test/check.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
#include "gtest_stub.h"
2727

28-
#ifndef WINNT
28+
#ifndef WINDOWS
2929
#define XTOSTRUCT_LIBCONFIG
3030
#define XTOSTRUCT_BSON
3131
#include "bson_builder.h"
@@ -168,7 +168,7 @@ TEST(xml, marshal)
168168
base_check(y);
169169
}
170170

171-
#ifndef XTOSTRUCT_BSON
171+
#ifdef XTOSTRUCT_BSON
172172
TEST(bson, unmarshal)
173173
{
174174
bson_error_t err;

test/msvc_makefile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
INC=-I ../
2+
3+
json.exe:
4+
cl -o $@ /EHsc example_json.cpp $(INC)
5+
$@
6+
@-rm *.exe *.obj
7+
8+
xml.exe:
9+
cl -o $@ /EHsc example_xml.cpp $(INC)
10+
$@
11+
@-rm *.exe *.obj
12+
13+
check.exe:
14+
cl -o $@ /EHsc check.cpp $(INC) -DWINDOWS
15+
./$@
16+
@-rm *.exe *.obj

util.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
namespace x2struct {
2929

3030
struct cmp_str {
31-
bool operator()(char const *a, char const *b)
31+
bool operator()(char const *a, char const *b) const
3232
{
3333
return strcmp(a, b) < 0;
3434
}
@@ -47,7 +47,11 @@ class Util {
4747
if (sizeof(data) <= 4) {
4848
sprintf(buf, "%d", (int)data);
4949
} else {
50+
#ifndef _MSC_VER
5051
sprintf(buf, "%ld", (int64_t)data);
52+
#else
53+
sprintf(buf, "%lld", (int64_t)data);
54+
#endif
5155
}
5256
return buf;
5357
}
@@ -146,7 +150,11 @@ class Util {
146150
t = (T)tmp;
147151
} else {
148152
int64_t tmp;
153+
#ifndef _MSC_VER
149154
sscanf(str.c_str(), "%ld", &tmp);
155+
#else
156+
sscanf(str.c_str(), "%lld", &tmp);
157+
#endif
150158
t = (T)tmp;
151159
}
152160
return t;

x2struct.hpp

Lines changed: 96 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,24 @@
1818
#ifndef __X_TO_STRUCT_HPP
1919
#define __X_TO_STRUCT_HPP
2020

21+
#include "config.h"
22+
2123
#include <string>
2224
#include <set>
2325
#include <stdexcept>
2426

2527
#include "util.h"
2628
#include "xreader.h"
2729

30+
#ifdef XTOSTRUCT_JSON
2831
#include "json_reader.h"
2932
#include "json_writer.h"
33+
#endif
3034

35+
#ifdef XTOSTRUCT_XML
3136
#include "xml_reader.h"
3237
#include "xml_writer.h"
38+
#endif
3339

3440
#ifdef XTOSTRUCT_BSON
3541
#include "bson_reader.h"
@@ -55,6 +61,8 @@ namespace x2struct {
5561
class X {
5662
public:
5763
// string to struct
64+
65+
#ifdef XTOSTRUCT_JSON
5866
template <typename TYPE>
5967
static bool loadjson(const std::string&str, TYPE&t, bool isfile=true) {
6068
JsonReader reader(str, isfile);
@@ -72,7 +80,9 @@ class X {
7280
writer.convert(root.c_str(), t);
7381
return writer.toStr();
7482
}
83+
#endif
7584

85+
#ifdef XTOSTRUCT_XML
7686
template <typename TYPE>
7787
static bool loadxml(const std::string&str, TYPE&t, bool isfile=true) {
7888
XmlReader reader(str, isfile);
@@ -85,6 +95,7 @@ class X {
8595
writer.convert(root.c_str(), t);
8696
return writer.toStr();
8797
}
98+
#endif
8899

89100
// bson
90101
#ifdef XTOSTRUCT_BSON
@@ -148,7 +159,7 @@ public: \
148159
return __x_has_string.find(name)!=__x_has_string.end(); \
149160
} \
150161
template<typename DOC> \
151-
bool __x_condition(DOC& obj, const std::string&name) { \
162+
bool __x_condition(DOC& obj, const std::string&name) const { \
152163
(void)obj;(void)name; \
153164
return true; \
154165
} \
@@ -222,8 +233,6 @@ public: \
222233

223234
// lenght should equal X_STRUCT_N
224235
#define X_DEC_LIST _32,_31,_30,_29,_28,_27,_26,_25,_24,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1
225-
// expand macro depend on parameters number
226-
#define X_STRUCT_N(ACTION,_1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,N,...) ACTION##N
227236

228237
/*
229238
work with X_STRUCT_N to expand macro
@@ -240,9 +249,14 @@ public: \
240249
*/
241250

242251
// wrap X_STRUCT_N. so we can use X_DEC_LIST
252+
// expand macro depend on parameters number
253+
#ifndef _MSC_VER
254+
// thx https://stackoverflow.com/questions/5134523/msvc-doesnt-expand-va-args-correctly
255+
#define X_STRUCT_N(ACTION,_32,_31,_30,_29,_28,_27,_26,_25,_24,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1,N,...) ACTION##N
243256
#define X_STRUCT_WRAP_L1(ACT, LIST, ...) X_STRUCT_N(X_STRUCT_L1, __VA_ARGS__, LIST)(ACT, __VA_ARGS__)
244257
#define X_STRUCT_WRAP_L2(ACT, LIST, ...) X_STRUCT_N(X_STRUCT_L2, __VA_ARGS__, LIST)(ACT, __VA_ARGS__)
245258

259+
246260
#define X_STRUCT_L1_DEF(ACT, M) X_STRUCT_L1_##ACT##M
247261
#define X_STRUCT_L1_1(ACT, M) X_STRUCT_L1_DEF(ACT, M)
248262
#define X_STRUCT_L1_2(ACT, M,...) X_STRUCT_L1_DEF(ACT, M) X_STRUCT_L1_1(ACT, __VA_ARGS__)
@@ -311,6 +325,85 @@ public: \
311325
#define X_STRUCT_L2_31(ACT, M,...) X_STRUCT_L2_DEF(ACT, M) X_STRUCT_L2_30(ACT, __VA_ARGS__)
312326
#define X_STRUCT_L2_32(ACT, M,...) X_STRUCT_L2_DEF(ACT, M) X_STRUCT_L2_31(ACT, __VA_ARGS__)
313327

328+
329+
#else
330+
// MSVC .... too bad
331+
#define X_MSVC_COUNT_N(ACTION, _1,_2,_3,_4,_5,_6,_7,_8,_9,_10,_11,_12,_13,_14,_15,_16,_17,_18,_19,_20,_21,_22,_23,_24,_25,_26,_27,_28,_29,_30,_31,_32,N, ...) ACTION##N
332+
#define X_MSVC_EXPAND(...) __VA_ARGS__
333+
#define X_STRUCT_N(ACTION, ...) X_MSVC_EXPAND(X_MSVC_COUNT_N(ACTION, __VA_ARGS__,_32,_31,_30,_29,_28,_27,_26,_25,_24,_23,_22,_21,_20,_19,_18,_17,_16,_15,_14,_13,_12,_11,_10,_9,_8,_7,_6,_5,_4,_3,_2,_1))
334+
#define X_STRUCT_WRAP_L1(ACT, LIST, ...) X_STRUCT_N(X_STRUCT_L1, __VA_ARGS__, LIST)X_MSVC_EXPAND((ACT, __VA_ARGS__))
335+
#define X_STRUCT_WRAP_L2(ACT, LIST, ...) X_STRUCT_N(X_STRUCT_L2, __VA_ARGS__, LIST)X_MSVC_EXPAND((ACT, __VA_ARGS__))
336+
337+
#define X_STRUCT_L1_DEF(ACT, M) X_STRUCT_L1_##ACT##M
338+
#define X_STRUCT_L1_1(ACT,M1) X_STRUCT_L1_DEF(ACT, M1)
339+
#define X_STRUCT_L1_2(ACT,M1,M2) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_1(ACT,M2)
340+
#define X_STRUCT_L1_3(ACT,M1,M2,M3) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_2(ACT,M2,M3)
341+
#define X_STRUCT_L1_4(ACT,M1,M2,M3,M4) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_3(ACT,M2,M3,M4)
342+
#define X_STRUCT_L1_5(ACT,M1,M2,M3,M4,M5) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_4(ACT,M2,M3,M4,M5)
343+
#define X_STRUCT_L1_6(ACT,M1,M2,M3,M4,M5,M6) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_5(ACT,M2,M3,M4,M5,M6)
344+
#define X_STRUCT_L1_7(ACT,M1,M2,M3,M4,M5,M6,M7) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_6(ACT,M2,M3,M4,M5,M6,M7)
345+
#define X_STRUCT_L1_8(ACT,M1,M2,M3,M4,M5,M6,M7,M8) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_7(ACT,M2,M3,M4,M5,M6,M7,M8)
346+
#define X_STRUCT_L1_9(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_8(ACT,M2,M3,M4,M5,M6,M7,M8,M9)
347+
#define X_STRUCT_L1_10(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_9(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10)
348+
#define X_STRUCT_L1_11(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_10(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11)
349+
#define X_STRUCT_L1_12(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_11(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)
350+
#define X_STRUCT_L1_13(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_12(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13)
351+
#define X_STRUCT_L1_14(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_13(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14)
352+
#define X_STRUCT_L1_15(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_14(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15)
353+
#define X_STRUCT_L1_16(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_15(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16)
354+
#define X_STRUCT_L1_17(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_16(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17)
355+
#define X_STRUCT_L1_18(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_17(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18)
356+
#define X_STRUCT_L1_19(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_18(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19)
357+
#define X_STRUCT_L1_20(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_19(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20)
358+
#define X_STRUCT_L1_21(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_20(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21)
359+
#define X_STRUCT_L1_22(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_21(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22)
360+
#define X_STRUCT_L1_23(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_22(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23)
361+
#define X_STRUCT_L1_24(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_23(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24)
362+
#define X_STRUCT_L1_25(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_24(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25)
363+
#define X_STRUCT_L1_26(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_25(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26)
364+
#define X_STRUCT_L1_27(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_26(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27)
365+
#define X_STRUCT_L1_28(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_27(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28)
366+
#define X_STRUCT_L1_29(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_28(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29)
367+
#define X_STRUCT_L1_30(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_29(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30)
368+
#define X_STRUCT_L1_31(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_30(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31)
369+
#define X_STRUCT_L1_32(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,M32) X_STRUCT_L1_DEF(ACT, M1) X_STRUCT_L1_31(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,M32)
370+
371+
#define X_STRUCT_L2_DEF(ACT, M) X_STRUCT_ACT_##ACT(M)
372+
#define X_STRUCT_L2_1(ACT,M1) X_STRUCT_L2_DEF(ACT, M1)
373+
#define X_STRUCT_L2_2(ACT,M1,M2) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_1(ACT,M2)
374+
#define X_STRUCT_L2_3(ACT,M1,M2,M3) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_2(ACT,M2,M3)
375+
#define X_STRUCT_L2_4(ACT,M1,M2,M3,M4) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_3(ACT,M2,M3,M4)
376+
#define X_STRUCT_L2_5(ACT,M1,M2,M3,M4,M5) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_4(ACT,M2,M3,M4,M5)
377+
#define X_STRUCT_L2_6(ACT,M1,M2,M3,M4,M5,M6) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_5(ACT,M2,M3,M4,M5,M6)
378+
#define X_STRUCT_L2_7(ACT,M1,M2,M3,M4,M5,M6,M7) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_6(ACT,M2,M3,M4,M5,M6,M7)
379+
#define X_STRUCT_L2_8(ACT,M1,M2,M3,M4,M5,M6,M7,M8) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_7(ACT,M2,M3,M4,M5,M6,M7,M8)
380+
#define X_STRUCT_L2_9(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_8(ACT,M2,M3,M4,M5,M6,M7,M8,M9)
381+
#define X_STRUCT_L2_10(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_9(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10)
382+
#define X_STRUCT_L2_11(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_10(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11)
383+
#define X_STRUCT_L2_12(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_11(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12)
384+
#define X_STRUCT_L2_13(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_12(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13)
385+
#define X_STRUCT_L2_14(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_13(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14)
386+
#define X_STRUCT_L2_15(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_14(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15)
387+
#define X_STRUCT_L2_16(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_15(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16)
388+
#define X_STRUCT_L2_17(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_16(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17)
389+
#define X_STRUCT_L2_18(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_17(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18)
390+
#define X_STRUCT_L2_19(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_18(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19)
391+
#define X_STRUCT_L2_20(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_19(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20)
392+
#define X_STRUCT_L2_21(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_20(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21)
393+
#define X_STRUCT_L2_22(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_21(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22)
394+
#define X_STRUCT_L2_23(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_22(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23)
395+
#define X_STRUCT_L2_24(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_23(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24)
396+
#define X_STRUCT_L2_25(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_24(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25)
397+
#define X_STRUCT_L2_26(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_25(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26)
398+
#define X_STRUCT_L2_27(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_26(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27)
399+
#define X_STRUCT_L2_28(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_27(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28)
400+
#define X_STRUCT_L2_29(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_28(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29)
401+
#define X_STRUCT_L2_30(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_29(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30)
402+
#define X_STRUCT_L2_31(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_30(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31)
403+
#define X_STRUCT_L2_32(ACT,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,M32) X_STRUCT_L2_DEF(ACT, M1) X_STRUCT_L2_31(ACT,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,M13,M14,M15,M16,M17,M18,M19,M20,M21,M22,M23,M24,M25,M26,M27,M28,M29,M30,M31,M32)
404+
#endif
405+
406+
314407
// L1 action define. O M A
315408
// string to struct
316409
#define X_STRUCT_L1_TOX_O(...) X_STRUCT_WRAP_L2(TOX_O, X_DEC_LIST, __VA_ARGS__)

xtypes.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class _XDate {
6969
time_t tt = (time_t)unix_time;
7070
tm ttm;
7171

72-
#ifndef WINNT
72+
#ifndef WINDOWS
7373
localtime_r(&tt, &ttm);
7474
#else
7575
localtime_s(&ttm, &tt);
@@ -79,7 +79,7 @@ class _XDate {
7979
return buf;
8080
}
8181
void parse(const std::string&str) {
82-
#ifndef WINNT
82+
#ifndef WINDOWS
8383
tm ttm;
8484

8585
if (0 != strptime(str.c_str(), "%Y-%m-%d %H:%M:%S", &ttm)) {

0 commit comments

Comments
 (0)