yaz-asncomp - Man Page

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

Authors

Index Data

Info

09/10/2026 YAZ 5.38.0 Commands