Skip to content

Commit 3b2329d

Browse files
simPodnikic
authored andcommitted
Add Calendar ext PHP stubs
Closes GH-4552.
1 parent 9c0c20b commit 3b2329d

File tree

3 files changed

+120
-94
lines changed

3 files changed

+120
-94
lines changed

ext/calendar/calendar.c

Lines changed: 1 addition & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
#include "php.h"
2727
#include "ext/standard/info.h"
28+
#include "calendar_arginfo.h"
2829
#include "php_calendar.h"
2930
#include "sdncal.h"
3031

@@ -36,100 +37,6 @@
3637
#undef CAL_GREGORIAN
3738
#endif
3839

39-
/* {{{ arginfo */
40-
ZEND_BEGIN_ARG_INFO_EX(arginfo_unixtojd, 0, 0, 0)
41-
ZEND_ARG_INFO(0, timestamp)
42-
ZEND_END_ARG_INFO()
43-
44-
ZEND_BEGIN_ARG_INFO(arginfo_jdtounix, 0)
45-
ZEND_ARG_INFO(0, jday)
46-
ZEND_END_ARG_INFO()
47-
48-
ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_info, 0, 0, 0)
49-
ZEND_ARG_INFO(0, calendar)
50-
ZEND_END_ARG_INFO()
51-
52-
ZEND_BEGIN_ARG_INFO(arginfo_cal_days_in_month, 0)
53-
ZEND_ARG_INFO(0, calendar)
54-
ZEND_ARG_INFO(0, month)
55-
ZEND_ARG_INFO(0, year)
56-
ZEND_END_ARG_INFO()
57-
58-
ZEND_BEGIN_ARG_INFO(arginfo_cal_to_jd, 0)
59-
ZEND_ARG_INFO(0, calendar)
60-
ZEND_ARG_INFO(0, month)
61-
ZEND_ARG_INFO(0, day)
62-
ZEND_ARG_INFO(0, year)
63-
ZEND_END_ARG_INFO()
64-
65-
ZEND_BEGIN_ARG_INFO(arginfo_cal_from_jd, 0)
66-
ZEND_ARG_INFO(0, jd)
67-
ZEND_ARG_INFO(0, calendar)
68-
ZEND_END_ARG_INFO()
69-
70-
ZEND_BEGIN_ARG_INFO(arginfo_jdtogregorian, 0)
71-
ZEND_ARG_INFO(0, juliandaycount)
72-
ZEND_END_ARG_INFO()
73-
74-
ZEND_BEGIN_ARG_INFO(arginfo_gregoriantojd, 0)
75-
ZEND_ARG_INFO(0, month)
76-
ZEND_ARG_INFO(0, day)
77-
ZEND_ARG_INFO(0, year)
78-
ZEND_END_ARG_INFO()
79-
80-
ZEND_BEGIN_ARG_INFO(arginfo_jdtojulian, 0)
81-
ZEND_ARG_INFO(0, juliandaycount)
82-
ZEND_END_ARG_INFO()
83-
84-
ZEND_BEGIN_ARG_INFO(arginfo_juliantojd, 0)
85-
ZEND_ARG_INFO(0, month)
86-
ZEND_ARG_INFO(0, day)
87-
ZEND_ARG_INFO(0, year)
88-
ZEND_END_ARG_INFO()
89-
90-
ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtojewish, 0, 0, 1)
91-
ZEND_ARG_INFO(0, juliandaycount)
92-
ZEND_ARG_INFO(0, hebrew)
93-
ZEND_ARG_INFO(0, fl)
94-
ZEND_END_ARG_INFO()
95-
96-
ZEND_BEGIN_ARG_INFO(arginfo_jewishtojd, 0)
97-
ZEND_ARG_INFO(0, month)
98-
ZEND_ARG_INFO(0, day)
99-
ZEND_ARG_INFO(0, year)
100-
ZEND_END_ARG_INFO()
101-
102-
ZEND_BEGIN_ARG_INFO(arginfo_jdtofrench, 0)
103-
ZEND_ARG_INFO(0, juliandaycount)
104-
ZEND_END_ARG_INFO()
105-
106-
ZEND_BEGIN_ARG_INFO(arginfo_frenchtojd, 0)
107-
ZEND_ARG_INFO(0, month)
108-
ZEND_ARG_INFO(0, day)
109-
ZEND_ARG_INFO(0, year)
110-
ZEND_END_ARG_INFO()
111-
112-
ZEND_BEGIN_ARG_INFO_EX(arginfo_jddayofweek, 0, 0, 1)
113-
ZEND_ARG_INFO(0, juliandaycount)
114-
ZEND_ARG_INFO(0, mode)
115-
ZEND_END_ARG_INFO()
116-
117-
ZEND_BEGIN_ARG_INFO(arginfo_jdmonthname, 0)
118-
ZEND_ARG_INFO(0, juliandaycount)
119-
ZEND_ARG_INFO(0, mode)
120-
ZEND_END_ARG_INFO()
121-
122-
ZEND_BEGIN_ARG_INFO_EX(arginfo_easter_date, 0, 0, 0)
123-
ZEND_ARG_INFO(0, year)
124-
ZEND_END_ARG_INFO()
125-
126-
ZEND_BEGIN_ARG_INFO_EX(arginfo_easter_days, 0, 0, 0)
127-
ZEND_ARG_INFO(0, year)
128-
ZEND_ARG_INFO(0, method)
129-
ZEND_END_ARG_INFO()
130-
131-
/* }}} */
132-
13340
static const zend_function_entry calendar_functions[] = {
13441
PHP_FE(jdtogregorian, arginfo_jdtogregorian)
13542
PHP_FE(gregoriantojd, arginfo_gregoriantojd)

ext/calendar/calendar.stub.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
/** @return int|false */
4+
function cal_days_in_month(int $calendar, int $month, int $year) {}
5+
6+
/** @return array<string, array<int, string>&int&string>|false */
7+
function cal_from_jd(int $jd, int $calendar) {}
8+
9+
/** @return array|false */
10+
function cal_info(?int $calendar = UNKNOWN) {}
11+
12+
/** @return int|false */
13+
function cal_to_jd(int $calendar, int $month, int $day, int $year) {}
14+
15+
function easter_date(int $year = UNKNOWN, int $method = CAL_EASTER_DEFAULT): int {}
16+
17+
function easter_days(int $year = UNKNOWN, int $method = CAL_EASTER_DEFAULT): int {}
18+
19+
function frenchtojd(int $month, int $day, int $year): int {}
20+
21+
function gregoriantojd(int $month, int $day, int $year): int {}
22+
23+
/** @return int|string */
24+
function jddayofweek(int $juliandaycount, int $mode = CAL_DOW_DAYNO) {}
25+
26+
function jdmonthname(int $juliandaycount, int $mode): string {}
27+
28+
function jdtofrench(int $juliandaycount): string {}
29+
30+
function jdtogregorian(int $juliandaycount): string {}
31+
32+
/** @return string|false */
33+
function jdtojewish(int $juliandaycount, bool $hebrew = false, int $fl = 0) {}
34+
35+
function jdtojulian(int $juliandaycount): string {}
36+
37+
/** @return int|false */
38+
function jdtounix(int $jday) {}
39+
40+
function jewishtojd(int $month, int $day, int $year): int {}
41+
42+
function juliantojd(int $month, int $day, int $year): int {}
43+
44+
/** @return int|false */
45+
function unixtojd(int $timestamp = UNKNOWN) {}

ext/calendar/calendar_arginfo.h

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/* This is a generated file, edit the .stub.php file instead. */
2+
3+
ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_days_in_month, 0, 0, 3)
4+
ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
5+
ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
6+
ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
7+
ZEND_END_ARG_INFO()
8+
9+
ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_from_jd, 0, 0, 2)
10+
ZEND_ARG_TYPE_INFO(0, jd, IS_LONG, 0)
11+
ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
12+
ZEND_END_ARG_INFO()
13+
14+
ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_info, 0, 0, 0)
15+
ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 1)
16+
ZEND_END_ARG_INFO()
17+
18+
ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_to_jd, 0, 0, 4)
19+
ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
20+
ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
21+
ZEND_ARG_TYPE_INFO(0, day, IS_LONG, 0)
22+
ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
23+
ZEND_END_ARG_INFO()
24+
25+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_easter_date, 0, 0, IS_LONG, 0)
26+
ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
27+
ZEND_ARG_TYPE_INFO(0, method, IS_LONG, 0)
28+
ZEND_END_ARG_INFO()
29+
30+
#define arginfo_easter_days arginfo_easter_date
31+
32+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_frenchtojd, 0, 3, IS_LONG, 0)
33+
ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
34+
ZEND_ARG_TYPE_INFO(0, day, IS_LONG, 0)
35+
ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
36+
ZEND_END_ARG_INFO()
37+
38+
#define arginfo_gregoriantojd arginfo_frenchtojd
39+
40+
ZEND_BEGIN_ARG_INFO_EX(arginfo_jddayofweek, 0, 0, 1)
41+
ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
42+
ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
43+
ZEND_END_ARG_INFO()
44+
45+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_jdmonthname, 0, 2, IS_STRING, 0)
46+
ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
47+
ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
48+
ZEND_END_ARG_INFO()
49+
50+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_jdtofrench, 0, 1, IS_STRING, 0)
51+
ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
52+
ZEND_END_ARG_INFO()
53+
54+
#define arginfo_jdtogregorian arginfo_jdtofrench
55+
56+
ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtojewish, 0, 0, 1)
57+
ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
58+
ZEND_ARG_TYPE_INFO(0, hebrew, _IS_BOOL, 0)
59+
ZEND_ARG_TYPE_INFO(0, fl, IS_LONG, 0)
60+
ZEND_END_ARG_INFO()
61+
62+
#define arginfo_jdtojulian arginfo_jdtofrench
63+
64+
ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtounix, 0, 0, 1)
65+
ZEND_ARG_TYPE_INFO(0, jday, IS_LONG, 0)
66+
ZEND_END_ARG_INFO()
67+
68+
#define arginfo_jewishtojd arginfo_frenchtojd
69+
70+
#define arginfo_juliantojd arginfo_frenchtojd
71+
72+
ZEND_BEGIN_ARG_INFO_EX(arginfo_unixtojd, 0, 0, 0)
73+
ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0)
74+
ZEND_END_ARG_INFO()

0 commit comments

Comments
 (0)