forked from yuangu/sxtwl_cpp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsxtwl_c.cpp
More file actions
173 lines (143 loc) · 3.69 KB
/
sxtwl_c.cpp
File metadata and controls
173 lines (143 loc) · 3.69 KB
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
#include "sxtwl_c.h"
#include "sxtwl.h"
extern "C"
{
sxtwl_Day* sxtwl_after(sxtwl_Day* day, sxtwl_Day* ret, int day_num)
{
ret->ptr = (Day*)((Day*)day->ptr)->after(day_num);
return ret;
}
sxtwl_Day* sxtwl_before(sxtwl_Day* day, sxtwl_Day* ret, int day_num)
{
ret->ptr = (Day*)((Day*)day->ptr)->before(day_num);
return ret;
}
int sxtwl_getLunarDay(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getLunarDay();
}
int sxtwl_getLunarYear(sxtwl_Day* day, bool chineseNewYearBoundary)
{
return ((Day*)day->ptr)->getLunarYear(chineseNewYearBoundary);
}
sxtwl_GZ sxtwl_getYearGZ(sxtwl_Day* day, bool chineseNewYearBoundary)
{
GZ gz = ((Day*)day->ptr)->getYearGZ(chineseNewYearBoundary);
sxtwl_GZ ret{gz.tg, gz.dz};
return ret;
}
sxtwl_GZ sxtwl_getMonthGZ(sxtwl_Day* day)
{
GZ gz = ((Day*)day->ptr)->getMonthGZ();
sxtwl_GZ ret{ gz.tg, gz.dz };
return ret;
}
sxtwl_GZ sxtwl_getDayGZ(sxtwl_Day* day)
{
GZ gz = ((Day*)day->ptr)->getDayGZ();
sxtwl_GZ ret{ gz.tg, gz.dz };
return ret;
}
sxtwl_GZ sxtwl_getHourGZ(sxtwl_Day* day, uint8_t hour, bool isZaoWanZiShi)
{
GZ gz = ((Day*)day->ptr)->getHourGZ(hour, isZaoWanZiShi);
sxtwl_GZ ret{ gz.tg, gz.dz };
return ret;
}
bool sxtwl_isLunarLeap(sxtwl_Day* day)
{
return ((Day*)day->ptr)->isLunarLeap();
}
int sxtwl_getSolarYear(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getSolarYear();
}
uint8_t sxtwl_getSolarMonth(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getSolarMonth();
}
int sxtwl_getSolarDay(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getSolarDay();
}
uint8_t sxtwl_getWeek(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getWeek();
}
// 处于该月的第几周
uint8_t sxtwl_getWeekIndex(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getWeekIndex();
}
//是否有节气
bool sxtwl_hasJieQi(sxtwl_Day* day)
{
return ((Day*)day->ptr)->hasJieQi();
}
// 获取节气
uint8_t sxtwl_getJieQi(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getJieQi();
}
double sxtwl_getJieQiJD(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getJieQiJD();
}
// 获取星座
uint8_t sxtwl_getConstellation(sxtwl_Day* day)
{
return ((Day*)day->ptr)->getConstellation();
}
void sxtwl_freeDay(sxtwl_Day* day)
{
delete ((Day*)day->ptr);
}
sxtwl_GZ sxtwl_getShiGz(uint8_t dayTg, uint8_t hour, bool isZaoWanZiShi)
{
GZ gz = sxtwl::getShiGz(dayTg, hour, isZaoWanZiShi);
sxtwl_GZ ret{ gz.tg, gz.dz };
return ret;
}
uint8_t sxtwl_getRunMonth(int By)
{
return sxtwl::getRunMonth(By);
}
uint8_t sxtwl_getLunarMonthNum(int By, uint8_t month, bool isRun)
{
return sxtwl::getLunarMonthNum(By, month, isRun);
}
sxtwl_Time sxtwl_JD2DD(double jd)
{
Time t = sxtwl::JD2DD(jd);
sxtwl_Time time;
time.year = t.Y;
time.month = t.M;
time.day = t.D;
time.hour = t.h;
time.min = t.m;
time.sec = t.s;
return time;
}
double sxtwl_toJD(sxtwl_Time& time)
{
Time t(time.year, time.month, time.day, time.hour, time.min, time.sec);
return sxtwl::toJD(t);
}
sxtwl_Day* sxtwl_fromSolar(sxtwl_Day* ret, int year, uint8_t month, int day)
{
ret->ptr = (void*) sxtwl::fromSolar(year, month, day);
return ret;
}
sxtwl_Day* sxtwl_fromLunar(sxtwl_Day* ret, int year, uint8_t month, int day, bool isRun)
{
ret->ptr = (void*)sxtwl::fromLunar(year, month, day, isRun);
return ret;
}
double* sxtwl_siZhu2Year(double** list, int& ret_num, sxtwl_GZ year, sxtwl_GZ yue, sxtwl_GZ ri, sxtwl_GZ shi, int fromYear, int toYear)
{
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);
*list = (double*)malloc(ret.size() * sizeof(double));
memcpy(*list, &(ret[0]), ret.size() * sizeof(double));
return *list;
}
}