1
1
#include " sxtwl_c.h"
2
-
3
2
#include " sxtwl.h"
4
3
5
-
6
4
extern " C"
7
5
{
8
- sxtwl_Day* sxtwl_after (sxtwl_Day* day, sxtwl_Day* ret, int day_num)
6
+ sxtwl_Day * sxtwl_after (sxtwl_Day * day, sxtwl_Day * ret, int day_num)
9
7
{
10
- ret->ptr = (Day*)((Day*)day->ptr )->after (day_num);
8
+ ret->ptr = (Day *)((Day *)day->ptr )->after (day_num);
11
9
return ret;
12
10
}
13
-
14
- sxtwl_Day* sxtwl_before (sxtwl_Day* day, sxtwl_Day* ret, int day_num)
11
+
12
+ sxtwl_Day * sxtwl_before (sxtwl_Day * day, sxtwl_Day * ret, int day_num)
15
13
{
16
- ret->ptr = (Day*)((Day*)day->ptr )->before (day_num);
14
+ ret->ptr = (Day *)((Day *)day->ptr )->before (day_num);
17
15
return ret;
18
16
}
19
17
20
- int sxtwl_getLunarDay (sxtwl_Day* day)
18
+ int sxtwl_getLunarDay (sxtwl_Day * day)
21
19
{
22
- return ((Day*)day->ptr )->getLunarDay ();
20
+ return ((Day *)day->ptr )->getLunarDay ();
23
21
}
24
22
25
- int sxtwl_getLunarYear (sxtwl_Day* day, bool chineseNewYearBoundary)
23
+ int sxtwl_getLunarYear (sxtwl_Day * day, bool chineseNewYearBoundary)
26
24
{
27
- return ((Day*)day->ptr )->getLunarYear (chineseNewYearBoundary);
25
+ return ((Day *)day->ptr )->getLunarYear (chineseNewYearBoundary);
28
26
}
29
27
30
- sxtwl_GZ sxtwl_getYearGZ (sxtwl_Day* day, bool chineseNewYearBoundary)
28
+ sxtwl_GZ * sxtwl_getYearGZ (sxtwl_Day * day, sxtwl_GZ *ret , bool chineseNewYearBoundary)
31
29
{
32
- GZ gz = ((Day*)day->ptr )->getYearGZ (chineseNewYearBoundary);
33
- sxtwl_GZ ret{gz.tg , gz.dz };
30
+ GZ gz = ((Day *)day->ptr )->getYearGZ (chineseNewYearBoundary);
31
+ ret->dz = gz.dz ;
32
+ ret->tg = gz.tg ;
34
33
return ret;
35
34
}
36
35
37
- sxtwl_GZ sxtwl_getMonthGZ (sxtwl_Day* day)
36
+ sxtwl_GZ * sxtwl_getMonthGZ (sxtwl_Day * day, sxtwl_GZ *ret )
38
37
{
39
- GZ gz = ((Day*)day->ptr )->getMonthGZ ();
40
- sxtwl_GZ ret{ gz.tg , gz.dz };
38
+ GZ gz = ((Day *)day->ptr )->getMonthGZ ();
39
+ ret->dz = gz.dz ;
40
+ ret->tg = gz.tg ;
41
41
return ret;
42
42
}
43
43
44
- sxtwl_GZ sxtwl_getDayGZ (sxtwl_Day* day)
44
+ sxtwl_GZ * sxtwl_getDayGZ (sxtwl_Day * day, sxtwl_GZ *ret )
45
45
{
46
- GZ gz = ((Day*)day->ptr )->getDayGZ ();
47
- sxtwl_GZ ret{ gz.tg , gz.dz };
46
+ GZ gz = ((Day *)day->ptr )->getDayGZ ();
47
+ ret->dz = gz.dz ;
48
+ ret->tg = gz.tg ;
48
49
return ret;
49
50
}
50
51
51
- sxtwl_GZ sxtwl_getHourGZ (sxtwl_Day* day, uint8_t hour, bool isZaoWanZiShi)
52
+ sxtwl_GZ * sxtwl_getHourGZ (sxtwl_Day * day, sxtwl_GZ *ret , uint8_t hour, bool isZaoWanZiShi)
52
53
{
53
- GZ gz = ((Day*)day->ptr )->getHourGZ (hour, isZaoWanZiShi);
54
- sxtwl_GZ ret{ gz.tg , gz.dz };
54
+ GZ gz = ((Day *)day->ptr )->getHourGZ (hour, isZaoWanZiShi);
55
+ ret->dz = gz.dz ;
56
+ ret->tg = gz.tg ;
55
57
return ret;
56
58
}
57
59
58
- bool sxtwl_isLunarLeap (sxtwl_Day* day)
60
+ bool sxtwl_isLunarLeap (sxtwl_Day * day)
59
61
{
60
- return ((Day*)day->ptr )->isLunarLeap ();
62
+ return ((Day *)day->ptr )->isLunarLeap ();
61
63
}
62
64
63
- int sxtwl_getSolarYear (sxtwl_Day* day)
65
+ int sxtwl_getSolarYear (sxtwl_Day * day)
64
66
{
65
- return ((Day*)day->ptr )->getSolarYear ();
67
+ return ((Day *)day->ptr )->getSolarYear ();
66
68
}
67
69
68
- uint8_t sxtwl_getSolarMonth (sxtwl_Day* day)
70
+ uint8_t sxtwl_getSolarMonth (sxtwl_Day * day)
69
71
{
70
- return ((Day*)day->ptr )->getSolarMonth ();
72
+ return ((Day *)day->ptr )->getSolarMonth ();
71
73
}
72
74
73
- int sxtwl_getSolarDay (sxtwl_Day* day)
75
+ int sxtwl_getSolarDay (sxtwl_Day * day)
74
76
{
75
- return ((Day*)day->ptr )->getSolarDay ();
77
+ return ((Day *)day->ptr )->getSolarDay ();
76
78
}
77
79
78
- uint8_t sxtwl_getWeek (sxtwl_Day* day)
80
+ uint8_t sxtwl_getWeek (sxtwl_Day * day)
79
81
{
80
- return ((Day*)day->ptr )->getWeek ();
82
+ return ((Day *)day->ptr )->getWeek ();
81
83
}
82
84
83
85
// 处于该月的第几周
84
- uint8_t sxtwl_getWeekIndex (sxtwl_Day* day)
86
+ uint8_t sxtwl_getWeekIndex (sxtwl_Day * day)
85
87
{
86
- return ((Day*)day->ptr )->getWeekIndex ();
88
+ return ((Day *)day->ptr )->getWeekIndex ();
87
89
}
88
90
89
91
// 是否有节气
90
- bool sxtwl_hasJieQi (sxtwl_Day* day)
92
+ bool sxtwl_hasJieQi (sxtwl_Day * day)
91
93
{
92
- return ((Day*)day->ptr )->hasJieQi ();
94
+ return ((Day *)day->ptr )->hasJieQi ();
93
95
}
94
96
95
97
// 获取节气
96
- uint8_t sxtwl_getJieQi (sxtwl_Day* day)
98
+ uint8_t sxtwl_getJieQi (sxtwl_Day * day)
97
99
{
98
- return ((Day*)day->ptr )->getJieQi ();
100
+ return ((Day *)day->ptr )->getJieQi ();
99
101
}
100
102
101
- double sxtwl_getJieQiJD (sxtwl_Day* day)
103
+ double sxtwl_getJieQiJD (sxtwl_Day * day)
102
104
{
103
- return ((Day*)day->ptr )->getJieQiJD ();
105
+ return ((Day *)day->ptr )->getJieQiJD ();
104
106
}
105
107
106
108
// 获取星座
107
- uint8_t sxtwl_getConstellation (sxtwl_Day* day)
109
+ uint8_t sxtwl_getConstellation (sxtwl_Day * day)
108
110
{
109
- return ((Day*)day->ptr )->getConstellation ();
111
+ return ((Day *)day->ptr )->getConstellation ();
110
112
}
111
113
112
- void sxtwl_freeDay (sxtwl_Day* day)
114
+ void sxtwl_freeDay (sxtwl_Day * day)
113
115
{
114
- delete ((Day*)day->ptr );
116
+ delete ((Day *)day->ptr );
115
117
}
116
118
117
- sxtwl_GZ sxtwl_getShiGz (uint8_t dayTg, uint8_t hour, bool isZaoWanZiShi)
119
+ sxtwl_GZ * sxtwl_getShiGz (uint8_t dayTg, sxtwl_GZ *ret , uint8_t hour, bool isZaoWanZiShi)
118
120
{
119
121
GZ gz = sxtwl::getShiGz (dayTg, hour, isZaoWanZiShi);
120
- sxtwl_GZ ret{ gz.tg , gz.dz };
122
+ ret->dz = gz.dz ;
123
+ ret->tg = gz.tg ;
121
124
return ret;
122
125
}
123
126
124
- uint8_t sxtwl_getRunMonth (int By)
127
+ uint8_t sxtwl_getRunMonth (int By)
125
128
{
126
129
return sxtwl::getRunMonth (By);
127
130
}
@@ -131,43 +134,160 @@ extern "C"
131
134
return sxtwl::getLunarMonthNum (By, month, isRun);
132
135
}
133
136
134
- sxtwl_Time sxtwl_JD2DD (double jd)
137
+ sxtwl_Time * sxtwl_JD2DD (double jd, sxtwl_Time *ret )
135
138
{
136
139
Time t = sxtwl::JD2DD (jd);
137
- sxtwl_Time time;
138
- time.year = t.Y ;
139
- time.month = t.M ;
140
- time.day = t.D ;
141
140
142
- time.hour = t.h ;
143
- time.min = t.m ;
144
- time.sec = t.s ;
145
- return time;
141
+ ret->year = t.Y ;
142
+ ret->month = t.M ;
143
+ ret->day = t.D ;
144
+
145
+ ret->hour = t.h ;
146
+ ret->min = t.m ;
147
+ ret->sec = t.s ;
148
+ return ret;
146
149
}
147
150
148
- double sxtwl_toJD (sxtwl_Time& time)
149
- {
150
- Time t (time. year , time. month , time. day , time. hour , time. min , time. sec );
151
+ double sxtwl_toJD (sxtwl_Time * time)
152
+ {
153
+ Time t (time-> year , time-> month , time-> day , time-> hour , time-> min , time-> sec );
151
154
return sxtwl::toJD (t);
152
155
}
153
156
154
- sxtwl_Day* sxtwl_fromSolar (sxtwl_Day* ret, int year, uint8_t month, int day)
157
+ sxtwl_Day * sxtwl_fromSolar (sxtwl_Day * ret, int year, uint8_t month, int day)
155
158
{
156
- ret->ptr = (void *) sxtwl::fromSolar (year, month, day);
159
+ ret->ptr = (void *) sxtwl::fromSolar (year, month, day);
157
160
return ret;
158
161
}
159
162
160
- sxtwl_Day* sxtwl_fromLunar (sxtwl_Day* ret, int year, uint8_t month, int day, bool isRun)
163
+ sxtwl_Day * sxtwl_fromLunar (sxtwl_Day * ret, int year, uint8_t month, int day, bool isRun)
161
164
{
162
- ret->ptr = (void *)sxtwl::fromLunar (year, month, day, isRun);
165
+ ret->ptr = (void *)sxtwl::fromLunar (year, month, day, isRun);
163
166
return ret;
164
167
}
165
168
166
- double * sxtwl_siZhu2Year (double ** list, int & ret_num, sxtwl_GZ year, sxtwl_GZ yue, sxtwl_GZ ri, sxtwl_GZ shi, int fromYear, int toYear)
169
+ double * sxtwl_siZhu2Year (double ** list, int & ret_num, sxtwl_GZ * year, sxtwl_GZ * yue, sxtwl_GZ * ri, sxtwl_GZ * shi, int fromYear, int toYear)
167
170
{
168
- auto ret = sxtwl::siZhu2Year (GZ (year. tg , year. dz ), GZ (yue. tg , yue. dz ), GZ (ri. tg , ri. dz ), GZ (shi. tg , shi. dz ), fromYear, toYear);
169
- *list = (double *)malloc (ret.size () * sizeof (double ));
171
+ auto ret = sxtwl::siZhu2Year (GZ (year-> tg , year-> dz ), GZ (yue-> tg , yue-> dz ), GZ (ri-> tg , ri-> dz ), GZ (shi-> tg , shi-> dz ), fromYear, toYear);
172
+ *list = (double *)malloc (ret.size () * sizeof (double ));
170
173
memcpy (*list, &(ret[0 ]), ret.size () * sizeof (double ));
171
174
return *list;
172
175
}
173
- }
176
+
177
+ sxtwl_GZ *sxtwl_newGZ ()
178
+ {
179
+ return (sxtwl_GZ *)struct_malloc (sizeof (sxtwl_GZ));
180
+ }
181
+
182
+ void sxtwl_freeGZ (sxtwl_GZ *gz)
183
+ {
184
+ struct_free (gz);
185
+ }
186
+
187
+ uint8_t sxtwl_GZ_getTg (sxtwl_GZ *gz)
188
+ {
189
+ return gz->tg ;
190
+ }
191
+
192
+ uint8_t sxtwl_GZ_getDz (sxtwl_GZ *gz)
193
+ {
194
+ return gz->dz ;
195
+ }
196
+
197
+ void sxtwl_GZ_setTg (sxtwl_GZ *gz, uint8_t tg)
198
+ {
199
+ gz->tg = tg;
200
+ }
201
+
202
+ void sxtwl_GZ_setDz (sxtwl_GZ *gz, uint8_t dz)
203
+ {
204
+ gz->dz = dz;
205
+ }
206
+
207
+ sxtwl_Time *sxtwl_newTime ()
208
+ {
209
+ return (sxtwl_Time *)struct_malloc (sizeof (sxtwl_Time));
210
+ }
211
+
212
+ void sxtwl_freeTime (sxtwl_Time *time)
213
+ {
214
+ struct_free (time);
215
+ }
216
+
217
+ int sxtwl_Time_getYear (sxtwl_Time *time)
218
+ {
219
+ return time->year ;
220
+ }
221
+
222
+ int sxtwl_Time_getMonth (sxtwl_Time *time)
223
+ {
224
+ return time->month ;
225
+ }
226
+
227
+ int sxtwl_Time_getDay (sxtwl_Time *time)
228
+ {
229
+ return time->day ;
230
+ }
231
+
232
+ void sxtwl_Time_setYear (sxtwl_Time *time, int value)
233
+ {
234
+ time->year = value;
235
+ }
236
+ void sxtwl_Time_setMonth (sxtwl_Time *time, int value)
237
+ {
238
+ time->month = value;
239
+ }
240
+ void sxtwl_Time_setDay (sxtwl_Time *time, int value)
241
+ {
242
+ time->day = value;
243
+ }
244
+
245
+ double sxtwl_Time_getHour (sxtwl_Time *time)
246
+ {
247
+ return time->hour ;
248
+ }
249
+
250
+ double sxtwl_Time_getMin (sxtwl_Time *time)
251
+ {
252
+ return time->min ;
253
+ }
254
+
255
+ double sxtwl_Time_getSec (sxtwl_Time *time)
256
+ {
257
+ return time->sec ;
258
+ }
259
+
260
+ void sxtwl_Time_setHour (sxtwl_Time *time, double value)
261
+ {
262
+ time->hour = value;
263
+ }
264
+
265
+ CC_EX_DLL void sxtwl_Time_setMin (sxtwl_Time *time, double value)
266
+ {
267
+ time->min = value;
268
+ }
269
+
270
+ CC_EX_DLL void sxtwl_Time_setSec (sxtwl_Time *time, double value)
271
+ {
272
+ time->sec = value;
273
+ }
274
+
275
+ // =====================================================
276
+ void *struct_malloc (int size)
277
+ {
278
+ return malloc ((size_t )size);
279
+ }
280
+
281
+ void struct_free (void *ptr)
282
+ {
283
+ free (ptr);
284
+ }
285
+ // =====================================================
286
+ }
287
+
288
+ #ifdef __EMSCRIPTEN__
289
+ int main ()
290
+ {
291
+ return 0 ;
292
+ }
293
+ #endif
0 commit comments