]> granicus.if.org Git - php/commitdiff
Add Calendar ext PHP stubs
authorSimon Podlipsky <simon@podlipsky.net>
Sat, 17 Aug 2019 10:28:49 +0000 (12:28 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Tue, 20 Aug 2019 13:15:52 +0000 (15:15 +0200)
Closes GH-4552.

ext/calendar/calendar.c
ext/calendar/calendar.stub.php [new file with mode: 0644]
ext/calendar/calendar_arginfo.h [new file with mode: 0644]

index 3c84bc47b63e46670ca78156023a1d303db4a0ae..4f9b3a04f67a7c230547603a4a44b671bf387e00 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "php.h"
 #include "ext/standard/info.h"
+#include "calendar_arginfo.h"
 #include "php_calendar.h"
 #include "sdncal.h"
 
 #undef CAL_GREGORIAN
 #endif
 
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_unixtojd, 0, 0, 0)
-       ZEND_ARG_INFO(0, timestamp)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jdtounix, 0)
-       ZEND_ARG_INFO(0, jday)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_info, 0, 0, 0)
-       ZEND_ARG_INFO(0, calendar)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_cal_days_in_month, 0)
-       ZEND_ARG_INFO(0, calendar)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_cal_to_jd, 0)
-       ZEND_ARG_INFO(0, calendar)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, day)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_cal_from_jd, 0)
-       ZEND_ARG_INFO(0, jd)
-       ZEND_ARG_INFO(0, calendar)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jdtogregorian, 0)
-       ZEND_ARG_INFO(0, juliandaycount)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_gregoriantojd, 0)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, day)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jdtojulian, 0)
-       ZEND_ARG_INFO(0, juliandaycount)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_juliantojd, 0)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, day)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtojewish, 0, 0, 1)
-       ZEND_ARG_INFO(0, juliandaycount)
-       ZEND_ARG_INFO(0, hebrew)
-       ZEND_ARG_INFO(0, fl)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jewishtojd, 0)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, day)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jdtofrench, 0)
-       ZEND_ARG_INFO(0, juliandaycount)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_frenchtojd, 0)
-       ZEND_ARG_INFO(0, month)
-       ZEND_ARG_INFO(0, day)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_jddayofweek, 0, 0, 1)
-       ZEND_ARG_INFO(0, juliandaycount)
-       ZEND_ARG_INFO(0, mode)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_jdmonthname, 0)
-       ZEND_ARG_INFO(0, juliandaycount)
-       ZEND_ARG_INFO(0, mode)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_easter_date, 0, 0, 0)
-       ZEND_ARG_INFO(0, year)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_easter_days, 0, 0, 0)
-       ZEND_ARG_INFO(0, year)
-       ZEND_ARG_INFO(0, method)
-ZEND_END_ARG_INFO()
-
-/* }}} */
-
 static const zend_function_entry calendar_functions[] = {
        PHP_FE(jdtogregorian, arginfo_jdtogregorian)
        PHP_FE(gregoriantojd, arginfo_gregoriantojd)
diff --git a/ext/calendar/calendar.stub.php b/ext/calendar/calendar.stub.php
new file mode 100644 (file)
index 0000000..06e965f
--- /dev/null
@@ -0,0 +1,45 @@
+<?php
+
+/** @return int|false */
+function cal_days_in_month(int $calendar, int $month, int $year) {}
+
+/** @return array<string, array<int, string>&int&string>|false */
+function cal_from_jd(int $jd, int $calendar) {}
+
+/** @return array|false */
+function cal_info(?int $calendar = UNKNOWN) {}
+
+/** @return int|false */
+function cal_to_jd(int $calendar, int $month, int $day, int $year) {}
+
+function easter_date(int $year = UNKNOWN, int $method = CAL_EASTER_DEFAULT): int {}
+
+function easter_days(int $year = UNKNOWN, int $method = CAL_EASTER_DEFAULT): int {}
+
+function frenchtojd(int $month, int $day, int $year): int {}
+
+function gregoriantojd(int $month, int $day, int $year): int {}
+
+/** @return int|string */
+function jddayofweek(int $juliandaycount, int $mode = CAL_DOW_DAYNO) {}
+
+function jdmonthname(int $juliandaycount, int $mode): string {}
+
+function jdtofrench(int $juliandaycount): string {}
+
+function jdtogregorian(int $juliandaycount): string {}
+
+/** @return string|false */
+function jdtojewish(int $juliandaycount, bool $hebrew = false, int $fl = 0) {}
+
+function jdtojulian(int $juliandaycount): string {}
+
+/** @return int|false */
+function jdtounix(int $jday) {}
+
+function jewishtojd(int $month, int $day, int $year): int {}
+
+function juliantojd(int $month, int $day, int $year): int {}
+
+/** @return int|false */
+function unixtojd(int $timestamp = UNKNOWN) {}
diff --git a/ext/calendar/calendar_arginfo.h b/ext/calendar/calendar_arginfo.h
new file mode 100644 (file)
index 0000000..9c11c9c
--- /dev/null
@@ -0,0 +1,74 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_days_in_month, 0, 0, 3)
+       ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_from_jd, 0, 0, 2)
+       ZEND_ARG_TYPE_INFO(0, jd, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_info, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 1)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_cal_to_jd, 0, 0, 4)
+       ZEND_ARG_TYPE_INFO(0, calendar, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, day, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_easter_date, 0, 0, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, method, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_easter_days arginfo_easter_date
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_frenchtojd, 0, 3, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, month, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, day, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, year, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_gregoriantojd arginfo_frenchtojd
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_jddayofweek, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_jdmonthname, 0, 2, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, mode, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_jdtofrench, 0, 1, IS_STRING, 0)
+       ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_jdtogregorian arginfo_jdtofrench
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtojewish, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, juliandaycount, IS_LONG, 0)
+       ZEND_ARG_TYPE_INFO(0, hebrew, _IS_BOOL, 0)
+       ZEND_ARG_TYPE_INFO(0, fl, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_jdtojulian arginfo_jdtofrench
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_jdtounix, 0, 0, 1)
+       ZEND_ARG_TYPE_INFO(0, jday, IS_LONG, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_jewishtojd arginfo_frenchtojd
+
+#define arginfo_juliantojd arginfo_frenchtojd
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_unixtojd, 0, 0, 0)
+       ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0)
+ZEND_END_ARG_INFO()