Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 83a62b1

Browse files
committed
Merge branch 'dev'
# Conflicts: # example/main.cpp
2 parents 07e989a + 76164a2 commit 83a62b1

37 files changed

+11906
-5016
lines changed

c/CMakeLists.txt

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,16 @@ add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
1212
add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
1313
ENDIF()
1414

15-
file(GLOB SRC_FILES "*.cpp" )
16-
add_library(sxtwl_c SHARED ${SRC_FILES})
15+
file(GLOB SRC_FILES *.cpp *.c )
16+
17+
IF (EMSCRIPTEN)
18+
add_executable(sxtwl_c ${SRC_FILES})
19+
target_link_libraries(sxtwl_c
20+
sxtwl)
21+
ELSE(EMSCRIPTEN)
22+
add_library(sxtwl_c STATIC ${SRC_FILES})
1723
target_link_libraries(sxtwl_c
1824
sxtwl)
25+
ENDIF(EMSCRIPTEN)
26+
27+

c/sxtwl_c.cpp

Lines changed: 188 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,127 +1,130 @@
11
#include "sxtwl_c.h"
2-
32
#include "sxtwl.h"
43

5-
64
extern "C"
75
{
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)
97
{
10-
ret->ptr = (Day*)((Day*)day->ptr)->after(day_num);
8+
ret->ptr = (Day *)((Day *)day->ptr)->after(day_num);
119
return ret;
1210
}
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)
1513
{
16-
ret->ptr = (Day*)((Day*)day->ptr)->before(day_num);
14+
ret->ptr = (Day *)((Day *)day->ptr)->before(day_num);
1715
return ret;
1816
}
1917

20-
int sxtwl_getLunarDay(sxtwl_Day* day)
18+
int sxtwl_getLunarDay(sxtwl_Day *day)
2119
{
22-
return ((Day*)day->ptr)->getLunarDay();
20+
return ((Day *)day->ptr)->getLunarDay();
2321
}
2422

25-
int sxtwl_getLunarYear(sxtwl_Day* day, bool chineseNewYearBoundary)
23+
int sxtwl_getLunarYear(sxtwl_Day *day, bool chineseNewYearBoundary)
2624
{
27-
return ((Day*)day->ptr)->getLunarYear(chineseNewYearBoundary);
25+
return ((Day *)day->ptr)->getLunarYear(chineseNewYearBoundary);
2826
}
2927

30-
sxtwl_GZ sxtwl_getYearGZ(sxtwl_Day* day, bool chineseNewYearBoundary)
28+
sxtwl_GZ *sxtwl_getYearGZ(sxtwl_Day *day, sxtwl_GZ *ret, bool chineseNewYearBoundary)
3129
{
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;
3433
return ret;
3534
}
3635

37-
sxtwl_GZ sxtwl_getMonthGZ(sxtwl_Day* day)
36+
sxtwl_GZ *sxtwl_getMonthGZ(sxtwl_Day *day, sxtwl_GZ *ret)
3837
{
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;
4141
return ret;
4242
}
4343

44-
sxtwl_GZ sxtwl_getDayGZ(sxtwl_Day* day)
44+
sxtwl_GZ *sxtwl_getDayGZ(sxtwl_Day *day, sxtwl_GZ *ret)
4545
{
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;
4849
return ret;
4950
}
5051

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)
5253
{
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;
5557
return ret;
5658
}
5759

58-
bool sxtwl_isLunarLeap(sxtwl_Day* day)
60+
bool sxtwl_isLunarLeap(sxtwl_Day *day)
5961
{
60-
return ((Day*)day->ptr)->isLunarLeap();
62+
return ((Day *)day->ptr)->isLunarLeap();
6163
}
6264

63-
int sxtwl_getSolarYear(sxtwl_Day* day)
65+
int sxtwl_getSolarYear(sxtwl_Day *day)
6466
{
65-
return ((Day*)day->ptr)->getSolarYear();
67+
return ((Day *)day->ptr)->getSolarYear();
6668
}
6769

68-
uint8_t sxtwl_getSolarMonth(sxtwl_Day* day)
70+
uint8_t sxtwl_getSolarMonth(sxtwl_Day *day)
6971
{
70-
return ((Day*)day->ptr)->getSolarMonth();
72+
return ((Day *)day->ptr)->getSolarMonth();
7173
}
7274

73-
int sxtwl_getSolarDay(sxtwl_Day* day)
75+
int sxtwl_getSolarDay(sxtwl_Day *day)
7476
{
75-
return ((Day*)day->ptr)->getSolarDay();
77+
return ((Day *)day->ptr)->getSolarDay();
7678
}
7779

78-
uint8_t sxtwl_getWeek(sxtwl_Day* day)
80+
uint8_t sxtwl_getWeek(sxtwl_Day *day)
7981
{
80-
return ((Day*)day->ptr)->getWeek();
82+
return ((Day *)day->ptr)->getWeek();
8183
}
8284

8385
// 处于该月的第几周
84-
uint8_t sxtwl_getWeekIndex(sxtwl_Day* day)
86+
uint8_t sxtwl_getWeekIndex(sxtwl_Day *day)
8587
{
86-
return ((Day*)day->ptr)->getWeekIndex();
88+
return ((Day *)day->ptr)->getWeekIndex();
8789
}
8890

8991
//是否有节气
90-
bool sxtwl_hasJieQi(sxtwl_Day* day)
92+
bool sxtwl_hasJieQi(sxtwl_Day *day)
9193
{
92-
return ((Day*)day->ptr)->hasJieQi();
94+
return ((Day *)day->ptr)->hasJieQi();
9395
}
9496

9597
// 获取节气
96-
uint8_t sxtwl_getJieQi(sxtwl_Day* day)
98+
uint8_t sxtwl_getJieQi(sxtwl_Day *day)
9799
{
98-
return ((Day*)day->ptr)->getJieQi();
100+
return ((Day *)day->ptr)->getJieQi();
99101
}
100102

101-
double sxtwl_getJieQiJD(sxtwl_Day* day)
103+
double sxtwl_getJieQiJD(sxtwl_Day *day)
102104
{
103-
return ((Day*)day->ptr)->getJieQiJD();
105+
return ((Day *)day->ptr)->getJieQiJD();
104106
}
105107

106108
// 获取星座
107-
uint8_t sxtwl_getConstellation(sxtwl_Day* day)
109+
uint8_t sxtwl_getConstellation(sxtwl_Day *day)
108110
{
109-
return ((Day*)day->ptr)->getConstellation();
111+
return ((Day *)day->ptr)->getConstellation();
110112
}
111113

112-
void sxtwl_freeDay(sxtwl_Day* day)
114+
void sxtwl_freeDay(sxtwl_Day *day)
113115
{
114-
delete ((Day*)day->ptr);
116+
delete ((Day *)day->ptr);
115117
}
116118

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)
118120
{
119121
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;
121124
return ret;
122125
}
123126

124-
uint8_t sxtwl_getRunMonth(int By)
127+
uint8_t sxtwl_getRunMonth(int By)
125128
{
126129
return sxtwl::getRunMonth(By);
127130
}
@@ -131,43 +134,160 @@ extern "C"
131134
return sxtwl::getLunarMonthNum(By, month, isRun);
132135
}
133136

134-
sxtwl_Time sxtwl_JD2DD(double jd)
137+
sxtwl_Time *sxtwl_JD2DD(double jd, sxtwl_Time *ret)
135138
{
136139
Time t = sxtwl::JD2DD(jd);
137-
sxtwl_Time time;
138-
time.year = t.Y;
139-
time.month = t.M;
140-
time.day = t.D;
141140

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;
146149
}
147150

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);
151154
return sxtwl::toJD(t);
152155
}
153156

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)
155158
{
156-
ret->ptr = (void*) sxtwl::fromSolar(year, month, day);
159+
ret->ptr = (void *)sxtwl::fromSolar(year, month, day);
157160
return ret;
158161
}
159162

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)
161164
{
162-
ret->ptr = (void*)sxtwl::fromLunar(year, month, day, isRun);
165+
ret->ptr = (void *)sxtwl::fromLunar(year, month, day, isRun);
163166
return ret;
164167
}
165168

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)
167170
{
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));
170173
memcpy(*list, &(ret[0]), ret.size() * sizeof(double));
171174
return *list;
172175
}
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

Comments
 (0)