summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/readline/readline.c57
-rw-r--r--ext/readline/readline.stub.php42
-rw-r--r--ext/readline/readline_arginfo.h58
3 files changed, 101 insertions, 56 deletions
diff --git a/ext/readline/readline.c b/ext/readline/readline.c
index b9435521ca..9cef54d172 100644
--- a/ext/readline/readline.c
+++ b/ext/readline/readline.c
@@ -25,6 +25,7 @@
#include "php.h"
#include "php_readline.h"
#include "readline_cli.h"
+#include "readline_arginfo.h"
#if HAVE_LIBREADLINE || HAVE_LIBEDIT
@@ -71,62 +72,6 @@ PHP_MINFO_FUNCTION(readline);
/* }}} */
-/* {{{ arginfo */
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline, 0, 0, 0)
- ZEND_ARG_INFO(0, prompt)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_info, 0, 0, 0)
- ZEND_ARG_INFO(0, varname)
- ZEND_ARG_INFO(0, newvalue)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_add_history, 0, 0, 1)
- ZEND_ARG_INFO(0, prompt)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_readline_clear_history, 0)
-ZEND_END_ARG_INFO()
-
-#ifdef HAVE_HISTORY_LIST
-ZEND_BEGIN_ARG_INFO(arginfo_readline_list_history, 0)
-ZEND_END_ARG_INFO()
-#endif
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_read_history, 0, 0, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_write_history, 0, 0, 0)
- ZEND_ARG_INFO(0, filename)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_completion_function, 0, 0, 1)
- ZEND_ARG_INFO(0, funcname)
-ZEND_END_ARG_INFO()
-
-#if HAVE_RL_CALLBACK_READ_CHAR
-ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_callback_handler_install, 0, 0, 2)
- ZEND_ARG_INFO(0, prompt)
- ZEND_ARG_INFO(0, callback)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_readline_callback_read_char, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_readline_callback_handler_remove, 0)
-ZEND_END_ARG_INFO()
-
-ZEND_BEGIN_ARG_INFO(arginfo_readline_redisplay, 0)
-ZEND_END_ARG_INFO()
-
-#if HAVE_RL_ON_NEW_LINE
-ZEND_BEGIN_ARG_INFO(arginfo_readline_on_new_line, 0)
-ZEND_END_ARG_INFO()
-#endif
-#endif
-/* }}} */
-
/* {{{ module stuff */
static const zend_function_entry php_readline_functions[] = {
PHP_FE(readline, arginfo_readline)
diff --git a/ext/readline/readline.stub.php b/ext/readline/readline.stub.php
new file mode 100644
index 0000000000..64b433a943
--- /dev/null
+++ b/ext/readline/readline.stub.php
@@ -0,0 +1,42 @@
+<?php
+
+/** @return string|false */
+function readline(string $prompt = null) {}
+
+/** @return mixed */
+function readline_info(string $varname = UNKNOWN, string $newvalue = UNKNOWN) {}
+
+function readline_add_history(string $prompt): bool {}
+
+function readline_clear_history(): bool {}
+
+#ifdef HAVE_HISTORY_LIST
+function readline_list_history(): array {}
+#endif
+
+function readline_read_history(string $filename = UNKNOWN): bool {}
+
+function readline_write_history(string $filename = UNKNOWN): bool {}
+
+/**
+ * @param callable $funcname
+ */
+function readline_completion_function($funcname): bool {}
+
+
+#if HAVE_RL_CALLBACK_READ_CHAR
+/**
+ * @param callable $callback
+ */
+function readline_callback_handler_install(string $prompt, $callback): bool {}
+
+function readline_callback_read_char(): void {}
+
+function readline_callback_handler_remove(): bool {}
+
+function readline_redisplay(): void {}
+
+#if HAVE_RL_ON_NEW_LINE
+function readline_on_new_line(): void {}
+#endif
+#endif
diff --git a/ext/readline/readline_arginfo.h b/ext/readline/readline_arginfo.h
new file mode 100644
index 0000000000..e9ce57beaa
--- /dev/null
+++ b/ext/readline/readline_arginfo.h
@@ -0,0 +1,58 @@
+/* This is a generated file, edit the .stub.php file instead. */
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_readline, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, prompt, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_readline_info, 0, 0, 0)
+ ZEND_ARG_TYPE_INFO(0, varname, IS_STRING, 0)
+ ZEND_ARG_TYPE_INFO(0, newvalue, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_add_history, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, prompt, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_clear_history, 0, 0, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+
+#if defined(HAVE_HISTORY_LIST)
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_list_history, 0, 0, IS_ARRAY, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_read_history, 0, 0, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
+ZEND_END_ARG_INFO()
+
+#define arginfo_readline_write_history arginfo_readline_read_history
+
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_completion_function, 0, 1, _IS_BOOL, 0)
+ ZEND_ARG_INFO(0, funcname)
+ZEND_END_ARG_INFO()
+
+#if HAVE_RL_CALLBACK_READ_CHAR
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_callback_handler_install, 0, 2, _IS_BOOL, 0)
+ ZEND_ARG_TYPE_INFO(0, prompt, IS_STRING, 0)
+ ZEND_ARG_INFO(0, callback)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_RL_CALLBACK_READ_CHAR
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_callback_read_char, 0, 0, IS_VOID, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_RL_CALLBACK_READ_CHAR
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_callback_handler_remove, 0, 0, _IS_BOOL, 0)
+ZEND_END_ARG_INFO()
+#endif
+
+#if HAVE_RL_CALLBACK_READ_CHAR
+#define arginfo_readline_redisplay arginfo_readline_callback_read_char
+#endif
+
+#if HAVE_RL_CALLBACK_READ_CHAR && HAVE_RL_ON_NEW_LINE
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_readline_on_new_line, 0, 0, IS_VOID, 0)
+ZEND_END_ARG_INFO()
+#endif