glib-mkenums(1) User Commands glib-mkenums(1)NAMEglib-mkenums - generate C language enum description
SYNOPSISglib-mkenums [--comments text] [--eprod text] [--fhead text] [--fprod
text] [--ftail text] [--help] [--template file] [--version] [--vhead
text] [--vprod text] [--vtail text] [file...]
DESCRIPTIONglib-mkenums parses C code to extract enum definitions, and produces
enum descriptions based on text templates specified by the user. glib-
mkenums produces C code that contains enum values as strings, which
allows programs to provide value name strings for introspection.
glib-mkenums takes a list of valid C code files as input. The options
specified control the text that is output, certain substitutions are
performed on the text templates for keywords enclosed in @ characters.
EXTENDED DESCRIPTION
This section provides more information about text substitution and tri‐
graph extensions.
Text Substitution
glib-mkenums substitutes certain keywords, which are enclosed in @
characters, when creating the output text. For the substitution exam‐
ples of the keywords in this section, the following example enum defi‐
nition is assumed:
typedef enum
{
PREFIX_THE_XVALUE = 1 << 3,
PREFIX_ANOTHER_VALUE = 1 << 4
} PrefixTheXEnum;
glib-mkenums substitutes the following keywords:
@EnumName@ The name of the enum currently being processed. enum
names are assumed to be properly namespaced and to use
mixed capitalization to separate words (for example,
PrefixTheXEnum).
@enum_name@ The enum name with words in lowercase and each word
separated by underscores (for example, pre‐
fix_the_xenum).
@ENUMNAME@ The enum name with words in uppercase and each word
separated by underscores (for example, PRE‐
FIX_THE_XENUM).
@ENUMSHORT@ The enum name with words in uppercase and each word
separated by underscores, and with the prefix stripped
(for example, THE_XENUM).
@VALUENAME@ The enum value name currently being processed, with
words in uppercase and each word separated by under‐
scores. This is the assumed literal notation of enum
values in the C sources (for example, PRE‐
FIX_THE_XVALUE).
@valuenick@ A nickname for the enum value currently being pro‐
cessed. This is usually generated by stripping the
common prefix words of all of the enum values of the
current enum, with words in lowercase and underscores
substituted by hyphens (for example, the-xvalue).
@type@ This is substituted either by "enum" or "flags",
depending on whether the enum value definitions contain
bit-shift operators or not (for example, flags).
@Type@ Same as @type@, but with the first letter capitalized
(for example, Flags).
@TYPE@ Same as @type@, but with all letters in uppercase (for
example, FLAGS).
@filename@ The name of the input file currently being processed
(for example, foo.h).
Trigraph Extensions
Some C comments in the parsed enum definitions are treated as special.
Such comments start with the trigraph sequence /*< and end with the
trigraph sequence >*/.
Per enum definition, the "skip" and "flags" options are supported. The
skip option indicates that this enum definition should be skipped. The
flags option specifies that this enum definition should be treated as a
flags definition, or specifies the common prefix to be stripped from
all values to generate value nicknames. The "underscore_name" option
can be used to specify the underscorized name variant used in the
*_get_type() function and *_TYPE_* macro. For instance:
/*< underscore_name=gnome_vfs_uri_hide_options >*/
Per value definition, the "skip" and "nick" options are supported. The
skip option causes the value to be skipped. The nick option specifies
the otherwise autogenerated nickname.
OPTIONS
The following options are supported:
--comments text Template text for auto-generated comments, the
default (for C code generation) is
"/* @comment@ */"
--eprod text Output text every time an enum occurs in the
input files.
--fhead text Output text prior to processing input files.
--fprod text Output text every time a new input file is pro‐
cessed.
--ftail text Output text after all input files have been
processed.
-h, --help Show usage and basic help information.
--template file Read template from the given file. The tem‐
plates are enclosed in specially-formatted C
comments
/*** BEGIN section ***/
/*** END section ***/
where section may be file-header, file-produc‐
tion, file-tail, enumeration-production, value-
header, value-production, value-tail, or com‐
ment.
-v, --version Show version information.
--vhead text Output text before iterating the set of values
of an enum.
--vprod text Output text for every value of an enum.
--vtail text Output text after iterating all values of an
enum.
OPERANDS
The following operands are supported:
file Specifies a valid C code file.
EXAMPLES
Example 1: Examples of Trigraph Extensions
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;
EXIT STATUS
The following exit values are returned:
0 Application exited successfully
>0 Application exited with failure
FILES
The following files are used by this application:
/usr/bin/glib-mkenums The command-line executable for the
application.
/usr/share/gtk-doc/html/glib Location of developer documentation
ATTRIBUTES
See attributes(5) for descriptions of the following attributes:
┌─────────────────────────────┬─────────────────────────────┐
│ ATTRIBUTE TYPE │ ATTRIBUTE VALUE │
├─────────────────────────────┼─────────────────────────────┤
│Availability │SUNWglib2-devel │
├─────────────────────────────┼─────────────────────────────┤
│Interface stability │Committed │
└─────────────────────────────┴─────────────────────────────┘
SEE ALSOgdk-pixbuf-source(1), gdk-pixbuf-query-loaders(1), glib-genmarshal(1),
glib-gettextize(1), gobject-query(1), gtk-query-immodules-2.0(1), gtk-
update-icon-cache(1), libglib-2.0(3), attributes(5), gnome-inter‐
faces(5)NOTES
Written by Tim Janik. Updated by Brian Cameron, Sun Microsystems Inc.,
2003, 2006.
SunOS 5.11 7 Apr 2003 glib-mkenums(1)