| .TH GLIB-MKENUMS 1 "20 Apr 2001" |
| .SH NAME |
| glib-mkenums \- C language enum description generation utility |
| .SH SYNOPSIS |
| |
| \fBglib-mkenums\fP [\fIoptions\fP] [\fIfiles...\fP] |
| |
| .SH DESCRIPTION |
| \fBglib-mkenums\fP is a small perl-script utility that parses C code to extract enum |
| definitions and produces enum descriptions based on text templates specified |
| by the user. Most frequently this script is used to produce C code that contains |
| enum values as strings so programs can provide value name strings for introspection. |
| |
| .SH INVOCATION |
| |
| \fBglib-mkenums\fP takes a list of valid C code files as input. The options |
| specified controll the text that is output, certain substitutions are performed |
| on the text templates for keywords enclosed in @ characters. |
| |
| |
| .SS Options |
| .TP |
| \fI--fhead <text> |
| Put out <text> prior to processing input files. |
| .TP |
| \fI--fprod <text> |
| Put out <text> everytime a new input file is being processed. |
| .TP |
| \fI--ftail <text> |
| Put out <text> after all input files have been processed. |
| .TP |
| \fI--eprod <text> |
| Put out <text> everytime an enum is encountered in the input files. |
| .TP |
| \fI--vhead <text> |
| Put out <text> before iterating over the set of values of an enum. |
| .TP |
| \fI--vprod <text> |
| Put out <text> for every value of an enum. |
| .TP |
| \fI--vtail <text> |
| Put out <text> after iterating over all values of an enum. |
| .TP |
| \fI--comments <text> |
| Template for auto-generated comments, the default (for C code generations) is |
| "/* @comment@ */". |
| .TP |
| \fI-h, --help\fP |
| Print brief help and exit. |
| .TP |
| \fI-v, --version\fP |
| Print version and exit. |
| .PP |
| |
| |
| .SS Production text substitutions |
| Certain keywords enclosed in @ characters will be substituted in the outputted |
| text. For the substitution examples of the keywords below, the following example |
| enum definition is assumed: |
| .PP |
| .RS |
| .nf |
| typedef enum |
| { |
| PREFIX_THE_XVALUE = 1 << 3, |
| PREFIX_ANOTHER_VALUE = 1 << 4 |
| } PrefixTheXEnum; |
| .fi |
| .RE |
| |
| .TP 12 |
| \fI@EnumName@ |
| The name of the enum currently being processed, enum names are assumed to be |
| properly namespaced and to use mixed capitalization to seperate |
| words (e.g. PrefixTheXEnum). |
| .TP 12 |
| \fI@enum_name@ |
| The enum name with words lowercase and word-seperated by underscores (e.g. prefix_the_xenum). |
| .TP 12 |
| \fI@ENUMNAME@ |
| The enum name with words uppercase and word-seperated by underscores (e.g. PREFIX_THE_XENUM). |
| .TP 12 |
| \fI@ENUMSHORT@ |
| The enum name with words uppercase and word-seperated by underscores, prefix stripped (e.g. THE_XENUM). |
| .TP 12 |
| \fI@VALUENAME@ |
| The enum value name currently being processed with words uppercase and word-seperated by underscores, |
| this is the assumed literal notation of enum values in the C sources (e.g. PREFIX_THE_XVALUE). |
| .TP 12 |
| \fI@valuenick@ |
| A nick name for the enum value currently being processed, this is usually generated by stripping |
| common prefix words of all the enum values of the current enum, the words are lowercase and |
| underscores are subsituted by a minus (e.g. the-xvalue). |
| .TP 12 |
| \fI@type@ |
| This is substituted either by "enum" or "flags", depending on whether the enum value definitions |
| contained bit-shift operators or not (e.g. flags). |
| .TP 12 |
| \fI@Type@ |
| The same as \fI@type@\fP with the first letter capitalized (e.g. Flags). |
| .TP 12 |
| \fI@TYPE@ |
| The same as \fI@type@\fP with all letters uppercased (e.g. FLAGS). |
| .TP 12 |
| \fI@filename@ |
| The name of the input file currently being processed (e.g. foo.h). |
| |
| .SS Trigraph extensions |
| Some C comments are treated specially in the parsed enum definitions, such comments |
| start out with the trigraph sequence "/*<" and end with the trigraph sequence ">*/". |
| Per enum definition, the options "skip" and "flags" can be specified, to indicate |
| this enum definition to be skipped, or for it to be treated as a flags definition, or |
| to specify the common prefix to be stripped from all values to generate value nicknames, |
| respectively. |
| Per value definition, the options "skip" and "nick" are supported. The former causes the |
| value to be skipped, and the latter can be used to specify the otherwise auto-generated |
| nickname. |
| Examples: |
| .PP |
| .RS |
| .nf |
| typedef enum /*< skip >*/ |
| { |
| PREFIX_FOO |
| } PrefixThisEnumWillBeSkipped; |
| typedef enum /*< flags,prefix=PREFIX >*/ |
| { |
| PREFIX_THE_ZEROTH_VALUE, /*< skip >*/ |
| PREFIX_THE_FIRST_VALUE, |
| PREFIX_THE_SECOND_VALUE, |
| PREFIX_THE_THIRD_VALUE, /*< nick=the-last-value >*/ |
| } PrefixTheFlagsEnum; |
| .fi |
| .RE |
| |
| .SH SEE ALSO |
| \fB |
| glib-genmarshal(1) |
| \fP |
| |
| .SH BUGS |
| None known yet. |
| |
| .SH AUTHOR |
| .B glib-mkenums |
| was written by Tim Janik <timj@gtk.org> and Owen Taylor <otaylor@redhat.com>. |
| .PP |
| This manual page was provided by Tim Janik <timj@gtk.org>. |