Hi,
Though it cannot said an easy way, you can do it using the ctags plug-in
parser.
You need to modify both Exuberant Ctags and the ctags plug-in parser like
follows:
1. Exuberant Ctags (version 5.8): writeXrefEntry() in entry.c
[BEFORE]
length += writeCompactSourceLine (TagFile.fp, line);
[AFTER]
if (Option.extensionFields.signature && tag->extensionFields.signature
!= NULL)
length += fprintf (TagFile.fp, "signature:%s",
tag->extensionFields.signature);
else
length += writeCompactSourceLine (TagFile.fp, line);
2. Ctags plug-in parser (GLOBAL_6.5.2): plugin-factory/exuberant-c
[BEFORE]
#if defined(USE_EXTRA_FIELDS)
"--_xformat=%R %-16N %4n %-16F %C",
"--extra=+r",
#else
"--format=1",
#endif
[AFTER]
#if defined(USE_EXTRA_FIELDS)
"--_xformat=%R %-16N %4n %-16F %C",
"--extra=+r",
"--fields=+rS",
#else
"--format=1",
"--fields=+S",
#endif
3. The result
$ global -x main
main 2 main.c signature:( int argc, char *argv[] )
Regards,
Shigio
2016-02-18 7:45 GMT+09:00 john smith <[email protected]>:
> Is this possible to get a full prototype of a given function in a
> standardized, easily parsable form? The point is I need to get a
> number of parameters for a number of functions as I am writing a
> custom REPL-like tool that will call functions from an external API.
> I need to know how many parameters every function takes in order to
> inform user that he gave too few parameters. What I do now is this:
>
> $ gtags -v -f LIST
> $ global -f diff.h
> foo 5 diff.h foo(
>
> But it doesn't show any arguments that foo() takes. It's written like
> this in a source file:
>
> void
> foo(
> int a,
> int b, int c, char
> *f)
> {
> }
>
> It's possible to do this in ctags:
>
> $ ctags --fields=+S diff.h
> $ less tags
> (...)
> foo diff.h /^foo($/;" f signature:( int a, int b, int
> c, char *f)
>
> Now I can easily parse `signature:part' and get a number of
> parameters. I could use ctags but I got used to global, is this
> possible here?
>
> --
> <[email protected]>
>
> _______________________________________________
> Help-global mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/help-global
>
--
Shigio YAMAGUCHI <[email protected]>
PGP fingerprint: D1CB 0B89 B346 4AB6 5663 C4B6 3CA5 BBB3 57BE DDA3
_______________________________________________
Help-global mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/help-global