diff options
Diffstat (limited to 'ext/skeleton/create_stubs')
-rwxr-xr-x | ext/skeleton/create_stubs | 338 |
1 files changed, 0 insertions, 338 deletions
diff --git a/ext/skeleton/create_stubs b/ext/skeleton/create_stubs deleted file mode 100755 index 4682619839..0000000000 --- a/ext/skeleton/create_stubs +++ /dev/null @@ -1,338 +0,0 @@ -#!/usr/bin/awk -f - -function gobble(s, x) -{ - sub(/^ /, "", line) - match(line, "^" "(" s ")") - x = substr(line, 1, RLENGTH) - line = substr(line, RLENGTH+1) - return x -} - -function convert(i, j, t) -{ - type = argtypes[i,j] - name = argnames[i,j] - opt = optionals[i,j] - tabs = x = "" - - for (i = 0; i < t; i++) { tabs = tabs "\t" } - - if (type == "int") { - x = tabs "convert_to_long_ex(" name ext ");\n" \ - (ext? tabs name " = Z_LVAL_PP(" name ext ");\n": "") - ints = ints "\tint " name ";\n" - } else if (type == "bool") { - x = tabs "convert_to_long_ex(" name ext ");\n" \ - (ext? tabs name " = Z_LVAL_PP(" name ext ");\n": "") - ints = ints "\tint " name ";\n" - } else if (type == "double") { - x = tabs "convert_to_double_ex(" name ext ");\n" \ - (ext? tabs name " = Z_DVAL_PP(" name ext ");\n": "") - doubles = doubles "\tdouble " name ";\n" - } else if (type == "float") { - x = tabs "convert_to_double_ex(" name ext ");\n" \ - (ext? tabs name " = (float) Z_DVAL_PP(" name ext ");\n": "") - floats = floats "\tfloat " name ";\n" - } else if (type == "string") { - x = tabs "convert_to_string_ex(" name ext ");\n" \ - (ext? tabs name " = Z_STRVAL_PP(" name ext ");\n": "") - (ext ? strings = strings "\tchar *" name " = NULL;\n" : 0) - if (string_lens) { - x = x tabs name "_len = Z_STRLEN_PP(" name ext ");\n" - ints = ints "\tint " name "_len;\n" - } - } else if (type == "array") { - x = "convert_to_array_ex(" name ext ");\n" - } else if (type == "resource") { - if (opt && i > -1) { - resources = resources "\tif (argc < " j+1 ") {\n" \ - comment("\t\t/* Argument not given, do something before\n\t\t trying to fetch resource " name ". */\n") \ - "\t}\n\tZEND_FETCH_RESOURCE(???, ???, " name ext ", " name "_id, \"???\", ???_rsrc_id);\n" - } else { - resources = resources "\tZEND_FETCH_RESOURCE(???, ???, " name ext ", " name "_id, \"???\", ???_rsrc_id);\n" - } - ints = ints "\tint " name "_id = -1;\n" - } else { - x = comment(tabs "/* Write your own code here to handle argument " name ". */\n") - } - - if (x) return x -} - -function comment(s) -{ - if (i_know_what_to_do_shut_up_i_dont_need_your_help_mode) { - return - } else { - return s - } -} - -BEGIN { - name = "[_A-Za-z][_A-Za-z0-9]*" - type = "int|double|float|string|bool|array|object|resource|mixed|void" - num_funcs = 0 - - if (assign_params) ext = "_arg" - - if (xml && xml != "yes") { - xmldoc = xml - } else { - xmldoc = extname "/" extname ".xml" - } - - - xmlhead = " <reference id=\"ref." extname "\">\n" \ - " <title> functions</title>\n" \ - " <titleabbrev></titleabbrev>\n\n" \ - " <partintro>\n" \ - " <para>\n" \ - " </para\n" \ - " </partintro>\n\n"; - - xmlfoot = " </reference>\n\n" \ - "<!-- Keep this comment at the end of the file\n" \ - "Local variables:\n" \ - "mode: sgml\n" \ - "sgml-omittag:t\n" \ - "sgml-shorttag:t\n" \ - "sgml-minimize-attributes:nil\n" \ - "sgml-always-quote-attributes:t\n" \ - "sgml-indent-step:1\n" \ - "sgml-indent-data:t\n" \ - "sgml-parent-document:nil\n" \ - "sgml-default-dtd-file:\"../../manual.ced\"\n" \ - "sgml-exposed-tags:nil\n" \ - "sgml-local-catalogs:nil\n" \ - "sgml-local-ecat-files:nil\n" \ - "End:\n" \ - "-->\n" -} - -{ - args_max = args_min = optional = i = 0 - line = $0 - - func_type = gobble(type); - func_name = gobble(name); - - if (gobble("\\(")) { - if (gobble("\\[")) optional = 1 - while (arg_type = gobble(type)) { - arg_name = gobble(name) - if(arg_type == "void") { - args_max = 0; - args_min = 0; - break; - } else { - argtypes[num_funcs,args_max] = arg_type - argnames[num_funcs,args_max] = arg_name - - args_max++ - if (optional) { - optionals[num_funcs,i] = optional - if (arg_type != "resource") { - useswitch[num_funcs] = 1 - } - } else { - args_min++ - } - - if (x = gobble("\\[")) { - optional++ - } - - y = gobble(",") - if (!x && y && optional) { - check_argc_in_switch[num_funcs] = 1 - grouped_optional_param[num_funcs,i] = 1 - } - i++ - } - } - } - -# if (x = gobble("\\)")) { - gobble("\\]* *)") - sub(/^[ \t]+/, "", line) - fcomments[num_funcs] = line -# } - - funcs[num_funcs] = func_name - types[num_funcs] = func_type - maxargs[num_funcs] = args_max - minargs[num_funcs] = args_min - - num_funcs++ -} - -END { - if (xml) print xmlhead > xmldoc - for (i = 0; i < num_funcs; i++) { - compareargc = maxargs[i] - minargs[i] - closefetch = fetchargs = zvals = xmlparams = funcvals = resources = handleargs = closeopts = "" - ints = doubles = floats = strings = arrays = "" - - proto = "/* {{{ proto " types[i] " " funcs[i] "(" - - refid = funcs[i] - gsub(/_/, "-", refid) - xmlstr = " <refentry id=\"function." refid "\">\n" \ - " <refnamediv>\n" \ - " <refname>" funcs[i] "</refname>\n" \ - " <refpurpose>" fcomments[i] "</refpurpose>\n" \ - " </refnamediv>\n" \ - " <refsect1>\n" \ - " <title>Description</title>\n" \ - " <funcsynopsis>\n" \ - " <funcprototype>\n" \ - " <funcdef>" types[i] " <function>" funcs[i] "</function></funcdef>\n" - - if (maxargs[i]>0) { - zvals = "\tzval " - if (compareargc) { - if (minargs[i]) { - fetchargs = "\tint argc = ZEND_NUM_ARGS();\n\tif (argc < " \ - minargs[i] " || argc > " maxargs[i] \ - " || zend_get_parameters_ex(argc, " - } else { - fetchargs = "\tint argc = ZEND_NUM_ARGS();\n\tif (argc > " \ - maxargs[i] " || (argc && zend_get_parameters_ex(argc, " - closefetch = ")" - } - } else { - fetchargs = "\tif (ZEND_NUM_ARGS() != " maxargs[i] \ - " || zend_get_parameters_ex(" maxargs[i] ", " - } - } - - for (j = 0; j < maxargs[i]; j++) { - - if (j) { - zvals = zvals ", " - fetchargs = fetchargs ", " - } - - zvals = zvals "**" argnames[i,j] ext - fetchargs = fetchargs "&" argnames[i,j] ext - - xmlparams = xmlparams " <paramdef>" argtypes[i,j] - if (j > minargs[i]-1) { - if (!grouped_optional_param[i,j-1]) { - if (j > 0) proto = proto " " - proto = proto "[" - closeopts = closeopts "]" - } - xmlparams = xmlparams "\n <parameter><optional>" \ - argnames[i,j] \ - "</optional></parameter>\n </paramdef>\n" - } else { - xmlparams = xmlparams \ - " <parameter>" \ - argnames[i,j] \ - "</parameter></paramdef>\n" - } - - if (j > 0) proto = proto ", " - proto = proto argtypes[i,j] " " argnames[i,j] - - # Clean up this mess... - - if (useswitch[i]) { - if (grouped_optional_param[i,j] && code) { - handleargs = convert(i, j, 3) \ - ((grouped_optional_param[i,j-1]) ? "" : comment("\t\t\t/* Fall-through. */\n")) \ - handleargs - } else { - if (j > minargs[i]-1) { - if (code = convert(i, j, 3)) { - handleargs = "\t\tcase " j+1 ":\n" code \ - ((grouped_optional_param[i,j-1]) ? "" : comment("\t\t\t/* Fall-through. */\n")) \ - handleargs - } else { - handleargs = "\t\tcase " j+1 ":" \ - comment("\t/* Fall-through. */") \ - "\n" handleargs - } - } else if (j >= minargs[i]-1) { - if (code = convert(i, j, 3)) { - handleargs = "\t\tcase " j+1 ":\n" code handleargs - } else { - handleargs = "\t\tcase " j+1 ":\n" handleargs - } - } else { - if (code = convert(i, j, 3)) handleargs = code handleargs - } - } - } else { - if (code = convert(i, j, 1)) handleargs = handleargs code - } - } - - proto = proto closeopts ")\n " fcomments[i] " */\nPHP_FUNCTION(" funcs[i] ")\n{" - if (maxargs[i]) { - zvals = zvals ";" - fetchargs = fetchargs ") == FAILURE)" closefetch " {\n\t\tZEND_WRONG_PARAM_COUNT();\n\t}\n" - } - if (assign_params) funcvals = ints doubles floats strings - if (useswitch[i]) { - if (check_argc_in_switch[i]) { - check_argc = "\t\tdefault:\n\t\t\tZEND_WRONG_PARAM_COUNT();\n" - } else { - check_argc = "" - } - handleargs = "\tswitch (argc) {\n" \ - handleargs \ - (minargs[i] ? "" : "\t\tcase 0:\n") \ - "\t\t\tbreak;\n" check_argc "\t}" - } - xmlstr = xmlstr xmlparams \ - " </funcprototype>\n" \ - " </funcsynopsis>\n" \ - " <para>\n" \ - " </para>\n" \ - " </refsect1>\n" \ - " </refentry>\n" - - print proto > stubfile - if (zvals) print zvals > stubfile - if (funcvals) print funcvals > stubfile - if (fetchargs) print fetchargs > stubfile - if (resources) { - print resources > stubfile - if (!stubs) print "" > extname "/function_warning" - } - if (handleargs) print handleargs > stubfile - if (!i_know_what_to_do_shut_up_i_dont_need_your_help_mode) { - print "\n\tphp_error(E_WARNING, \"" funcs[i] ": not yet implemented\");" > stubfile - } - print "}\n/* }}} */\n" > stubfile - - if (stubs) { - h_stubs = h_stubs "PHP_FUNCTION(" funcs[i] ");\n" - c_stubs = c_stubs "\tPHP_FE(" funcs[i] ",\tNULL)\n" - } else { - print "PHP_FUNCTION(" funcs[i] ");" > extname "/function_declarations" - print "\tPHP_FE(" funcs[i] ",\tNULL)" > extname "/function_entries" - } - - if (xml) print xmlstr > xmldoc - } - - if (stubs) { - print "\n/* ----------------------------------------------------------- */\n" > stubfile - print c_stubs > stubfile - print "\n/* ----------------------------------------------------------- */\n" > stubfile - print h_stubs > stubfile - } - - if (xml) print xmlfoot > xmldoc -} - -# -# Local variables: -# tab-width: 2 -# c-basic-offset: 2 -# End: - |