@@ -58,18 +58,6 @@ npy_int64 unix_date_from_ymd(int year, int month, int day) {
58
58
return unix_date ;
59
59
}
60
60
61
- /* Sets the date part of the date_info struct
62
- Assumes GREGORIAN_CALENDAR */
63
- static int dInfoCalc_SetFromAbsDate (register struct date_info * dinfo ,
64
- npy_int64 unix_date ) {
65
- pandas_datetimestruct dts ;
66
-
67
- pandas_datetime_to_datetimestruct (unix_date , PANDAS_FR_D , & dts );
68
- dinfo -> year = dts .year ;
69
- dinfo -> month = dts .month ;
70
- dinfo -> day = dts .day ;
71
- return 0 ;
72
- }
73
61
74
62
///////////////////////////////////////////////
75
63
@@ -139,9 +127,9 @@ static npy_int64 DtoB_weekday(npy_int64 unix_date) {
139
127
return floordiv (unix_date + 4 , 7 ) * 5 + mod_compat (unix_date + 4 , 7 ) - 4 ;
140
128
}
141
129
142
- static npy_int64 DtoB (struct date_info * dinfo ,
130
+ static npy_int64 DtoB (pandas_datetimestruct * dts ,
143
131
int roll_back , npy_int64 unix_date ) {
144
- int day_of_week = dayofweek (dinfo -> year , dinfo -> month , dinfo -> day );
132
+ int day_of_week = dayofweek (dts -> year , dts -> month , dts -> day );
145
133
146
134
if (roll_back == 1 ) {
147
135
if (day_of_week > 4 ) {
@@ -161,32 +149,32 @@ static npy_int64 DtoB(struct date_info *dinfo,
161
149
//************ FROM DAILY ***************
162
150
163
151
static npy_int64 asfreq_DTtoA (npy_int64 ordinal , asfreq_info * af_info ) {
164
- struct date_info dinfo ;
152
+ pandas_datetimestruct dts ;
165
153
ordinal = downsample_daytime (ordinal , af_info );
166
- dInfoCalc_SetFromAbsDate ( & dinfo , ordinal );
167
- if (dinfo .month > af_info -> to_a_year_end ) {
168
- return (npy_int64 )(dinfo .year + 1 - 1970 );
154
+ pandas_datetime_to_datetimestruct ( ordinal , PANDAS_FR_D , & dts );
155
+ if (dts .month > af_info -> to_end ) {
156
+ return (npy_int64 )(dts .year + 1 - 1970 );
169
157
} else {
170
- return (npy_int64 )(dinfo .year - 1970 );
158
+ return (npy_int64 )(dts .year - 1970 );
171
159
}
172
160
}
173
161
174
162
static int DtoQ_yq (npy_int64 ordinal , asfreq_info * af_info , int * year ) {
175
- struct date_info dinfo ;
163
+ pandas_datetimestruct dts ;
176
164
int quarter ;
177
165
178
- dInfoCalc_SetFromAbsDate ( & dinfo , ordinal );
179
- if (af_info -> to_q_year_end != 12 ) {
180
- dinfo .month -= af_info -> to_q_year_end ;
181
- if (dinfo .month <= 0 ) {
182
- dinfo .month += 12 ;
166
+ pandas_datetime_to_datetimestruct ( ordinal , PANDAS_FR_D , & dts );
167
+ if (af_info -> to_end != 12 ) {
168
+ dts .month -= af_info -> to_end ;
169
+ if (dts .month <= 0 ) {
170
+ dts .month += 12 ;
183
171
} else {
184
- dinfo .year += 1 ;
172
+ dts .year += 1 ;
185
173
}
186
174
}
187
175
188
- * year = dinfo .year ;
189
- quarter = monthToQuarter (dinfo .month );
176
+ * year = dts .year ;
177
+ quarter = monthToQuarter (dts .month );
190
178
return quarter ;
191
179
}
192
180
@@ -200,29 +188,28 @@ static npy_int64 asfreq_DTtoQ(npy_int64 ordinal, asfreq_info *af_info) {
200
188
}
201
189
202
190
static npy_int64 asfreq_DTtoM (npy_int64 ordinal , asfreq_info * af_info ) {
203
- struct date_info dinfo ;
191
+ pandas_datetimestruct dts ;
204
192
205
193
ordinal = downsample_daytime (ordinal , af_info );
206
194
207
- dInfoCalc_SetFromAbsDate ( & dinfo , ordinal );
208
- return (npy_int64 )((dinfo .year - 1970 ) * 12 + dinfo .month - 1 );
195
+ pandas_datetime_to_datetimestruct ( ordinal , PANDAS_FR_D , & dts );
196
+ return (npy_int64 )((dts .year - 1970 ) * 12 + dts .month - 1 );
209
197
}
210
198
211
199
static npy_int64 asfreq_DTtoW (npy_int64 ordinal , asfreq_info * af_info ) {
212
200
ordinal = downsample_daytime (ordinal , af_info );
213
- return floordiv (ordinal + 3 - af_info -> to_week_end , 7 ) + 1 ;
201
+ return floordiv (ordinal + 3 - af_info -> to_end , 7 ) + 1 ;
214
202
}
215
203
216
204
static npy_int64 asfreq_DTtoB (npy_int64 ordinal , asfreq_info * af_info ) {
217
- struct date_info dinfo ;
218
205
int roll_back ;
219
-
220
- ordinal = downsample_daytime (ordinal , af_info );
221
- dInfoCalc_SetFromAbsDate ( & dinfo , ordinal );
206
+ pandas_datetimestruct dts ;
207
+ npy_int64 unix_date = downsample_daytime (ordinal , af_info );
208
+ pandas_datetime_to_datetimestruct ( unix_date , PANDAS_FR_D , & dts );
222
209
223
210
// This usage defines roll_back the opposite way from the others
224
211
roll_back = 1 - af_info -> is_end ;
225
- return DtoB (& dinfo , roll_back , ordinal );
212
+ return DtoB (& dts , roll_back , unix_date );
226
213
}
227
214
228
215
//************ FROM BUSINESS ***************
@@ -252,7 +239,7 @@ static npy_int64 asfreq_BtoW(npy_int64 ordinal, asfreq_info *af_info) {
252
239
//************ FROM WEEKLY ***************
253
240
254
241
static npy_int64 asfreq_WtoDT (npy_int64 ordinal , asfreq_info * af_info ) {
255
- ordinal = ordinal * 7 + af_info -> from_week_end - 4 +
242
+ ordinal = ordinal * 7 + af_info -> from_end - 4 +
256
243
(7 - 1 ) * (af_info -> is_end - 1 );
257
244
return upsample_daytime (ordinal , af_info );
258
245
}
@@ -274,12 +261,13 @@ static npy_int64 asfreq_WtoW(npy_int64 ordinal, asfreq_info *af_info) {
274
261
}
275
262
276
263
static npy_int64 asfreq_WtoB (npy_int64 ordinal , asfreq_info * af_info ) {
277
- struct date_info dinfo ;
264
+ int roll_back ;
265
+ pandas_datetimestruct dts ;
278
266
npy_int64 unix_date = asfreq_WtoDT (ordinal , af_info );
279
267
280
- int roll_back = af_info -> is_end ;
281
- dInfoCalc_SetFromAbsDate ( & dinfo , unix_date ) ;
282
- return DtoB (& dinfo , roll_back , unix_date );
268
+ pandas_datetime_to_datetimestruct ( unix_date , PANDAS_FR_D , & dts ) ;
269
+ roll_back = af_info -> is_end ;
270
+ return DtoB (& dts , roll_back , unix_date );
283
271
}
284
272
285
273
//************ FROM MONTHLY ***************
@@ -313,12 +301,13 @@ static npy_int64 asfreq_MtoW(npy_int64 ordinal, asfreq_info *af_info) {
313
301
}
314
302
315
303
static npy_int64 asfreq_MtoB (npy_int64 ordinal , asfreq_info * af_info ) {
316
- struct date_info dinfo ;
304
+ int roll_back ;
305
+ pandas_datetimestruct dts ;
317
306
npy_int64 unix_date = asfreq_MtoDT (ordinal , af_info );
318
307
319
- int roll_back = af_info -> is_end ;
320
- dInfoCalc_SetFromAbsDate ( & dinfo , unix_date ) ;
321
- return DtoB (& dinfo , roll_back , unix_date );
308
+ pandas_datetime_to_datetimestruct ( unix_date , PANDAS_FR_D , & dts ) ;
309
+ roll_back = af_info -> is_end ;
310
+ return DtoB (& dts , roll_back , unix_date );
322
311
}
323
312
324
313
//************ FROM QUARTERLY ***************
@@ -328,8 +317,8 @@ static void QtoD_ym(npy_int64 ordinal, int *year, int *month,
328
317
* year = floordiv (ordinal , 4 ) + 1970 ;
329
318
* month = mod_compat (ordinal , 4 ) * 3 + 1 ;
330
319
331
- if (af_info -> from_q_year_end != 12 ) {
332
- * month += af_info -> from_q_year_end ;
320
+ if (af_info -> from_end != 12 ) {
321
+ * month += af_info -> from_end ;
333
322
if (* month > 12 ) {
334
323
* month -= 12 ;
335
324
} else {
@@ -367,23 +356,24 @@ static npy_int64 asfreq_QtoW(npy_int64 ordinal, asfreq_info *af_info) {
367
356
}
368
357
369
358
static npy_int64 asfreq_QtoB (npy_int64 ordinal , asfreq_info * af_info ) {
370
- struct date_info dinfo ;
359
+ int roll_back ;
360
+ pandas_datetimestruct dts ;
371
361
npy_int64 unix_date = asfreq_QtoDT (ordinal , af_info );
372
362
373
- int roll_back = af_info -> is_end ;
374
- dInfoCalc_SetFromAbsDate ( & dinfo , unix_date ) ;
375
- return DtoB (& dinfo , roll_back , unix_date );
363
+ pandas_datetime_to_datetimestruct ( unix_date , PANDAS_FR_D , & dts ) ;
364
+ roll_back = af_info -> is_end ;
365
+ return DtoB (& dts , roll_back , unix_date );
376
366
}
377
367
378
368
//************ FROM ANNUAL ***************
379
369
380
- static void AtoD_ym (npy_int64 ordinal , int * year , int * month ,
370
+ static void AtoD_ym (npy_int64 ordinal , npy_int64 * year , int * month ,
381
371
asfreq_info * af_info ) {
382
372
* year = ordinal + 1970 ;
383
373
* month = 1 ;
384
374
385
- if (af_info -> from_a_year_end != 12 ) {
386
- * month += af_info -> from_a_year_end ;
375
+ if (af_info -> from_end != 12 ) {
376
+ * month += af_info -> from_end ;
387
377
if (* month > 12 ) {
388
378
// This case is never reached, but is kept for symmetry
389
379
// with QtoD_ym
@@ -395,8 +385,8 @@ static void AtoD_ym(npy_int64 ordinal, int *year, int *month,
395
385
}
396
386
397
387
static npy_int64 asfreq_AtoDT (npy_int64 ordinal , asfreq_info * af_info ) {
398
- npy_int64 unix_date ;
399
- int year , month ;
388
+ npy_int64 unix_date , year ;
389
+ int month ;
400
390
401
391
ordinal += af_info -> is_end ;
402
392
AtoD_ym (ordinal , & year , & month , af_info );
@@ -423,12 +413,13 @@ static npy_int64 asfreq_AtoW(npy_int64 ordinal, asfreq_info *af_info) {
423
413
}
424
414
425
415
static npy_int64 asfreq_AtoB (npy_int64 ordinal , asfreq_info * af_info ) {
426
- struct date_info dinfo ;
416
+ int roll_back ;
417
+ pandas_datetimestruct dts ;
427
418
npy_int64 unix_date = asfreq_AtoDT (ordinal , af_info );
428
419
429
- int roll_back = af_info -> is_end ;
430
- dInfoCalc_SetFromAbsDate ( & dinfo , unix_date ) ;
431
- return DtoB (& dinfo , roll_back , unix_date );
420
+ pandas_datetime_to_datetimestruct ( unix_date , PANDAS_FR_D , & dts ) ;
421
+ roll_back = af_info -> is_end ;
422
+ return DtoB (& dts , roll_back , unix_date );
432
423
}
433
424
434
425
static npy_int64 nofunc (npy_int64 ordinal , asfreq_info * af_info ) {
0 commit comments