'\" t
.\"     Title: glib-mkenums
.\"    Author: Owen Taylor
.\" Generator: DocBook XSL Stylesheets v1.79.1 <http://docbook.sf.net/>
.\"      Date: 07/20/2016
.\"    Manual: User Commands
.\"    Source: GObject
.\"  Language: English
.\"
.TH "GLIB\-MKENUMS" "1" "" "GObject" "User Commands"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.\" http://bugs.debian.org/507673
.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html
.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.ie \n(.g .ds Aq \(aq
.el       .ds Aq '
.\" -----------------------------------------------------------------
.\" * set default formatting
.\" -----------------------------------------------------------------
.\" disable hyphenation
.nh
.\" disable justification (adjust text to left margin only)
.ad l
.\" -----------------------------------------------------------------
.\" * MAIN CONTENT STARTS HERE *
.\" -----------------------------------------------------------------
.SH "NAME"
glib-mkenums \- C language enum description generation utility
.SH "SYNOPSIS"
.HP \w'\fBglib\-mkenums\fR\ 'u
\fBglib\-mkenums\fR [OPTION...] [FILE...]
.SH "DESCRIPTION"
.PP
\fBglib\-mkenums\fR
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\&.
.PP
\fBglib\-mkenums\fR
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\&.
.SS "Production text substitutions"
.PP
Certain keywords enclosed in @ characters will be substituted in the emitted text\&. For the substitution examples of the keywords below, the following example enum definition is assumed:
.sp .if n \{\ .RS 4 .\} .nf typedef enum { PREFIX_THE_XVALUE = 1 << 3, PREFIX_ANOTHER_VALUE = 1 << 4 } PrefixTheXEnum; .fi .if n \{\ .RE .\}
.PP
@EnumName@
.RS 4
The name of the enum currently being processed, enum names are assumed to be properly namespaced and to use mixed capitalization to separate words (e\&.g\&. PrefixTheXEnum)\&.
.RE
.PP
@enum_name@
.RS 4
The enum name with words lowercase and word\-separated by underscores (e\&.g\&. prefix_the_xenum)\&.
.RE
.PP
@ENUMNAME@
.RS 4
The enum name with words uppercase and word\-separated by underscores (e\&.g\&. PREFIX_THE_XENUM)\&.
.RE
.PP
@ENUMSHORT@
.RS 4
The enum name with words uppercase and word\-separated by underscores, prefix stripped (e\&.g\&. THE_XENUM)\&.
.RE
.PP
@ENUMPREFIX@
.RS 4
The prefix of the enum name (e\&.g\&. PREFIX)\&.
.RE
.PP
@VALUENAME@
.RS 4
The enum value name currently being processed with words uppercase and word\-separated by underscores, this is the assumed literal notation of enum values in the C sources (e\&.g\&. PREFIX_THE_XVALUE)\&.
.RE
.PP
@valuenick@
.RS 4
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 substituted by a minus (e\&.g\&. the\-xvalue)\&.
.RE
.PP
@valuenum@
.RS 4
The integer value for the enum value currently being processed\&. This is calculated by using
\fBperl\fR
to attempt to evaluate the expression as it appears in the C source code\&. If evaluation fails then
\fBglib\-mkenums\fR
will exit with an error status, but this only happens if
@valuenum@
appears in your value production template\&. (Since: 2\&.26)
.RE
.PP
@type@
.RS 4
This is substituted either by "enum" or "flags", depending on whether the enum value definitions contained bit\-shift operators or not (e\&.g\&. flags)\&.
.RE
.PP
@Type@
.RS 4
The same as
@type@
with the first letter capitalized (e\&.g\&. Flags)\&.
.RE
.PP
@TYPE@
.RS 4
The same as
@type@
with all letters uppercased (e\&.g\&. FLAGS)\&.
.RE
.PP
@filename@
.RS 4
The name of the input file currently being processed (e\&.g\&. foo\&.h)\&.
.RE
.PP
@basename@
.RS 4
The base name of the input file currently being processed (e\&.g\&. foo\&.h)\&. (Since: 2\&.22)
.RE
.SS "Trigraph extensions"
.PP
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\&. The "underscore_name" option can be used to specify the word separation used in the *_get_type() function\&. For instance, /*< underscore_name=gnome_vfs_uri_hide_options >*/\&.
.PP
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:
.sp .if n \{\ .RS 4 .\} .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 .if n \{\ .RE .\}
.SH "OPTIONS"
.PP
\fB\-\-fhead\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
prior to processing input files\&.
.RE
.PP
\fB\-\-fprod\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
everytime a new input file is being processed\&.
.RE
.PP
\fB\-\-ftail\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
after all input files have been processed\&.
.RE
.PP
\fB\-\-eprod\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
everytime an enum is encountered in the input files\&.
.RE
.PP
\fB\-\-vhead\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
before iterating over the set of values of an enum\&.
.RE
.PP
\fB\-\-vprod\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
for every value of an enum\&.
.RE
.PP
\fB\-\-vtail\fR \fITEXT\fR
.RS 4
Put out
\fITEXT\fR
after iterating over all values of an enum\&.
.RE
.PP
\fB\-\-comments\fR \fITEXT\fR
.RS 4
Template for auto\-generated comments, the default (for C code generations) is
"/* @comment@ */"\&.
.RE
.PP
\fB\-\-template\fR \fIFILE\fR
.RS 4
Read templates from the given file\&. The templates are enclosed in specially\-formatted C comments
.sp .if n \{\ .RS 4 .\} .nf /*** BEGIN section ***/ /*** END section ***/ .fi .if n \{\ .RE .\}
where section may be
file\-header,
file\-production,
file\-tail,
enumeration\-production,
value\-header,
value\-production,
value\-tail
or
comment\&.
.RE
.PP
\fB\-\-identifier\-prefix\fR \fIPREFIX\fR
.RS 4
Indicates what portion of the enum name should be intepreted as the prefix (eg, the "Gtk" in "GtkDirectionType")\&. Normally this will be figured out automatically, but you may need to override the default if your namespace is capitalized oddly\&.
.RE
.PP
\fB\-\-symbol\-prefix\fR \fIPREFIX\fR
.RS 4
Indicates what prefix should be used to correspond to the identifier prefix in related C function names (eg, the "gtk" in "gtk_direction_type_get_type"\&. Equivalently, this is the lowercase version of the prefix component of the enum value names (eg, the "GTK" in "GTK_DIR_UP"\&. The default value is the identifier prefix, converted to lowercase\&.
.RE
.PP
\fB\-\-help\fR
.RS 4
Print brief help and exit\&.
.RE
.PP
\fB\-\-version\fR
.RS 4
Print version and exit\&.
.RE
.SH "SEE ALSO"
.PP
\fBglib-genmarshal\fR(1)
