MAN Solaris - glib-mkenums (1)



glib-mkenums - generate C language enum description



glib-mkenums [--comments text] [--eprod text] [--fhead text] [--fprod text] [--ftail text] [--help] [--template file] [--version] [--vhead text] [--vprod text] [--vtail text] [file...]




glib-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.


This section provides more information about text substitution and trigraph extensions.

    Text Substitution

glib-mkenums substitutes certain keywords, which are enclosed in @ characters, when creating the output text. For the substitution examples of the keywords in this section, the following example enum definition is assumed:

typedef enum
  PREFIX_THE_XVALUE    = 1 << 3,
} PrefixTheXEnum;

glib-mkenums substitutes the following keywords:

@[email protected] 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).

@[email protected] The enum name with words in lowercase and each word separated by underscores (for example, prefix_the_xenum).

@[email protected] The enum name with words in uppercase and each word separated by underscores (for example, PREFIX_THE_XENUM).

@[email protected] The enum name with words in uppercase and each word separated by underscores, and with the prefix stripped (for example, THE_XENUM).

@[email protected] The enum value name currently being processed, with words in uppercase and each word separated by underscores. This is the assumed literal notation of enum values in the C sources (for example, PREFIX_THE_XVALUE).

@[email protected] A nickname for the enum value currently being processed. 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).

@[email protected] This is substituted either by enum or flags, depending on whether the enum value definitions contain bit-shift operators or not (for example, flags).

@[email protected] Same as @[email protected], but with the first letter capitalized (for example, Flags).

@[email protected] Same as @[email protected], but with all letters in uppercase (for example, FLAGS).

@[email protected] 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 lowercase_name option can be used to specify the word separation used in the *_get_type() function. For instance:

/*< lowercase_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.


The following options are supported:

--comments text Template text for auto-generated comments, the default (for C code generation) is

"/* @[email protected] */"


--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 processed.

--ftail text Output text when all input files have been processed.

-h, --help Show usage and basic help information.

--template file Read template from the given file. The templates are enclosed in specially-formatted C comments

/*** BEGIN section ***/ /*** END section ***/

where section may be file-header, file-production, file-tail, enumeration-production, value-header, value-production, value-tail, or comment.

-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.


The following operands are supported:

file Specifies a valid C code file.


Example 1: Examples of Trigraph Extensions

typedef enum /*< skip >*/
} PrefixThisEnumWillBeSkipped;
typedef enum /*< flags,prefix=PREFIX >*/
  PREFIX_THE_ZEROTH_VALUE,    /*< skip >*/
  PREFIX_THE_THIRD_VALUE,     /*< nick=the-last-value >*/
} PrefixTheFlagsEnum;


The following exit values are returned:

0 Application exited successfully

>0 Application exited with failure


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


See attributes(5) for descriptions of the following attributes:

Interface stabilityCommitted


gdk-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)


Updated by Brian Cameron, Sun Microsystems Inc., 2003, 2006. Written by Tim Janik.

Jump to page    or go to Top of page |  Section 1 |  Main Solaris Index.

SunOS 5.11 glib-mkenums (1) 7 Apr 2003
Generated by Open Solaris Forum from /usr/share/man/man1/glib-mkenums.1 using man macros with tbl support.