Teach autodoc.pl about 'o' functions.
authorBen Morrow <ben@morrow.me.uk>
Wed, 9 Dec 2009 10:24:33 +0000 (10:24 +0000)
committerRafael Garcia-Suarez <rgs@consttype.org>
Mon, 12 Jul 2010 08:40:48 +0000 (10:40 +0200)
That is, functions with no #define foo Perl_foo. I'm not certain this is
the right way to do it, as I don't really understand which flags autodoc
honours from which places; currently, it's necessary to put the 'o' flag
on the =for apidoc line or it will be ignored.

autodoc.pl

index 285bc3a..91963ca 100644 (file)
@@ -132,6 +132,8 @@ sub docout ($$$) { # output the docs for one function
 removed without notice.\n\n" if $flags =~ /x/;
     $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n"
        if $flags =~ /p/;
+    $docs .= "NOTE: this function must be explicitly called as Perl_$name with an aTHX_ parameter.\n\n"
+        if $flags =~ /o/;
 
     print $fh "=item $name\nX<$name>\n$docs";
 
@@ -141,6 +143,10 @@ removed without notice.\n\n" if $flags =~ /x/;
        print $fh "\t\t$name;\n\n";
     } elsif ($flags =~ /n/) { # no args
        print $fh "\t$ret\t$name\n\n";
+    } elsif ($flags =~ /o/) { # no #define foo Perl_foo
+        print $fh "\t$ret\tPerl_$name";
+        print $fh "(" . (@args ? "pTHX_ " : "pTHX");
+        print $fh join(", ", @args) . ")\n\n";
     } else { # full usage
        print $fh "\t$ret\t$name";
        print $fh "(" . join(", ", @args) . ")";