GENCLASS(1)

NAME
genclass - generate c++ classes from prototypes

SYNOPSIS
genclass -list [proto ...]
genclass -catalog [proto ...]
genclass type1 {ref|val} proto [out_prefix]
genclass -2 type1 {ref|val} type2 {ref, val} proto [out_prefix]
genclass [-usage] [-version]

DESCRIPTION
Specific classes may be generated via the genclass shell script program. This program has arguments specifying the kinds of base types(s) to be used. Specifying base types requires two arguments. The first is the name of the base type, which may be any named type, like `int' or `String'. Only named types are supported; things like `int*' are not accepted. However, pointers like this may be used by supplying the appropriate typedefs (e.g., editing the resulting files to include `typedef int* intp;'). The type name must be followed by one of the words `val' or `ref', to indicate whether the base elements should be passed to functions by-value or by-reference.

You can specify basic container classes using `genclass base [val,ref] proto', where `proto' is the name of the class being generated. Container classes like dictionaries and maps that require two types may be specified via `genclass -2 keytype [val, ref], basetype [val, ref] proto', where the key type is specified first and the contents type second. The resulting classnames and filenames are generated by prepending the specified type names to the prototype names, and separating the filename parts with dots. For example, `genclass int val List' generates class `intList' residing in files `int.List.h' and `int.List.cc'. `genclass -2 String ref int val VHMap' generates (the awkward, but unavoidable) class name `StringintVHMap'. Of course, programmers may use `typedef' or simple editing to create more appropriate names. The existence of dot seperators in file names allows the use of GNU make to help automate configuration and recompilation. An example Makefile exploiting such capabilities may be found in the `libg++/proto-kit' directory.

The genclass utility operates via simple text substitution using `sed'. All occurrences of the pseudo-types `<T>' and `<C>' (if there are two types) are replaced with the indicated type, and occurrences of `<T&>' and `<C&>' are replaced by just the types, if `val' is specified, or types followed by "&" if `ref' is specified.

FILES
/usr/share/libg++/ standard g++ prototype directory

ENVIRONMENT
PROTODIR standard g++ prototype directory if defined

SEE ALSO
g++(1)
The GNU C++ library Texinfo documentation, file:/usr/share/info/libg++

AUTHORS
Doug Lea (dl@rocky.oswego.edu), Wendell C. Baker. This Manpage based on the GNU C++ library Texinfo documentation.