yaz-asncomp
Prev | Reference | Next

## Name

yaz-asncomp — YAZ ASN.1 compiler

## Synopsis

`yaz-asncomp` [`-v`] [`-c `cfile``] [`-h `hfile``] [`-p `pfile``] [`-d `config``] [`-I `includeout``] [`-i `includedir``] [`-m `module``] [filename]

## DESCRIPTION

yaz-asncomp is an ASN.1 compiler that reads an ASN.1 specification in `filename` and produces C/C++ definitions and BER encoders/decoders for it.

The produced C/C++ code and header files uses the ODR module of YAZ which is a library that encodes/decodes/prints BER packages. yaz-asncomp allows you to specify name of resulting source via options. Alternatively, you can specify a DEFINITIONS file, which provides customized output to many output files - if the ASN.1 specification file consists of many modules.

This utility is written in Tcl. Any version of Tcl should work.

## OPTIONS

`-v`

  Makes the ASN.1 compiler print more verbose about the various stages of operations.

`-c` `cfile`

  Specifies the name of the C/C++ file with encoders/decoders.

`-h` `hfile`

  Specifies the name of header file with definitions.

`-p` `pfile`

  Specifies the name of the a private header file with definitions. By default all definitions are put in header file (option -h).

`-d` `dfile`

  Specifies the name of a definitions file.

`-I` `iout`

  Specifies first part of directory in which header files are written.

`-i` `idir`

  Specifies second part of directory in which header files are written.

`-m` `module`

  Specifies that ASN.1 compiler should only process the module given. If this option is not specified, all modules in the ASN.1 file are processed.

## DEFINITIONS FILE

The definitions file is really a Tcl script but follows traditional rules for Shell like configuration files. That is # denotes the beginning of a comment. Definitions are line oriented. The definitions files usually consist of a series of variable assignments of the form:

`set` `name` `value`

Available variables are:

`default-prefix`

  Sets prefix for names in the produced output. The value consists of three tokens: C function prefix, C typedef prefix and preprocessor prefix respectively.

`prefix(``module``)`

  This value sets prefix values for module `module`. The value has same form as `default-prefix`.

`filename(``module``)`

  Specifies filename for C/header file for module `module`.

`init(``module``,h)`

  Code fragment to be put in first part of public header for module `module`.

`body(``module``,h)`

  Code fragment to be put in last part of public header for module `module` (trailer).

`init(``module``,c)`

  Code fragment to be put in first part of C based encoder/decoder for module `module`.

`body(``module``,c)`

  Code fragment to be put in last part of C based encoder/decoder for module `module` (trailer).

`map(``module``,``name``)`

  Maps ASN.1 type in module `module` of `name` to value.

`membermap(``module``,``name``,``member``)`

  Maps member `member` in SEQUENCE/CHOICE of `name` in module `module` to value. The value consists of one or two tokens. First token is name of C preprocessor part. Second token is resulting C member name. If second token is omitted the value (one token) is both preprocessor part and C `struct`,`union`.

`unionmap(``module``,``name``,``member``)`

  Maps member `member` in CHOICE of `name` in module `module` to value. Value consists of two or three tokens. The first token is name of the integer in the `union` that is used as selector for the `union` itself. The second token is name of the `union`. The third token overrides the name of the CHOICE member; if omitted the member name is used.

## FILES

`/usr/share/yaz/z39.50/z.tcl`

`/usr/share/yaz/z39.50/*.asn`

## SEE ALSO

yaz(7)

Section "The ODR Module" in the YAZ manual.

Prev | Up | Next
zoomsh | Home | yaz-marcdump