'\" t .\" Title: yaz-asncomp .\" Author: Index Data .\" Generator: DocBook XSL Stylesheets v1.79.1 .\" Date: 03/25/2020 .\" Manual: Commands .\" Source: YAZ 5.29.0 .\" Language: English .\" .TH "YAZ\-ASNCOMP" "1" "03/25/2020" "YAZ 5.29.0" "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" yaz-asncomp \- YAZ ASN\&.1 compiler .SH "SYNOPSIS" .HP \w'\fByaz\-asncomp\fR\ 'u \fByaz\-asncomp\fR [\fB\-v\fR] [\fB\-c\ \fR\fB\fIcfile\fR\fR] [\fB\-h\ \fR\fB\fIhfile\fR\fR] [\fB\-p\ \fR\fB\fIpfile\fR\fR] [\fB\-d\ \fR\fB\fIconfig\fR\fR] [\fB\-I\ \fR\fB\fIincludeout\fR\fR] [\fB\-i\ \fR\fB\fIincludedir\fR\fR] [\fB\-m\ \fR\fB\fImodule\fR\fR] [filename] .SH "DESCRIPTION" .PP \fByaz\-asncomp\fR is an ASN\&.1 compiler that reads an ASN\&.1 specification in \fIfilename\fR and produces C/C++ definitions and BER encoders/decoders for it\&. .PP The produced C/C++ code and header files uses the ODR module of YAZ which is a library that encodes/decodes/prints BER packages\&. \fByaz\-asncomp\fR 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\&. .PP This utility is written in Tcl\&. Any version of Tcl should work\&. .SH "OPTIONS" .PP \-v .RS 4 Makes the ASN\&.1 compiler print more verbose about the various stages of operations\&. .RE .PP \-c \fIcfile\fR .RS 4 Specifies the name of the C/C++ file with encoders/decoders\&. .RE .PP \-h \fIhfile\fR .RS 4 Specifies the name of header file with definitions\&. .RE .PP \-p \fIpfile\fR .RS 4 Specifies the name of the a private header file with definitions\&. By default all definitions are put in header file (option \-h)\&. .RE .PP \-d \fIdfile\fR .RS 4 Specifies the name of a definitions file\&. .RE .PP \-I \fIiout\fR .RS 4 Specifies first part of directory in which header files are written\&. .RE .PP \-i \fIidir\fR .RS 4 Specifies second part of directory in which header files are written\&. .RE .PP \-m \fImodule\fR .RS 4 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\&. .RE .SH "DEFINITIONS FILE" .PP 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: .PP set \fIname\fR \fIvalue\fR .PP Available variables are: .PP default\-prefix .RS 4 Sets prefix for names in the produced output\&. The value consists of three tokens: C function prefix, C typedef prefix and preprocessor prefix respectively\&. .RE .PP prefix(\fImodule\fR) .RS 4 This value sets prefix values for module \fImodule\fR\&. The value has same form as default\-prefix\&. .RE .PP filename(\fImodule\fR) .RS 4 Specifies filename for C/header file for module \fImodule\fR\&. .RE .PP init(\fImodule\fR,h) .RS 4 Code fragment to be put in first part of public header for module \fImodule\fR\&. .RE .PP body(\fImodule\fR,h) .RS 4 Code fragment to be put in last part of public header for module \fImodule\fR (trailer)\&. .RE .PP init(\fImodule\fR,c) .RS 4 Code fragment to be put in first part of C based encoder/decoder for module \fImodule\fR\&. .RE .PP body(\fImodule\fR,c) .RS 4 Code fragment to be put in last part of C based encoder/decoder for module \fImodule\fR (trailer)\&. .RE .PP map(\fImodule\fR,\fIname\fR) .RS 4 Maps ASN\&.1 type in module \fImodule\fR of \fIname\fR to value\&. .RE .PP membermap(\fImodule\fR,\fIname\fR,\fImember\fR) .RS 4 Maps member \fImember\fR in SEQUENCE/CHOICE of \fIname\fR in module \fImodule\fR 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\&. .RE .PP unionmap(\fImodule\fR,\fIname\fR,\fImember\fR) .RS 4 Maps member \fImember\fR in CHOICE of \fIname\fR in module \fImodule\fR 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\&. .RE .SH "FILES" .PP /usr/share/yaz/z39\&.50/z\&.tcl .PP /usr/share/yaz/z39\&.50/*\&.asn .SH "SEE ALSO" .PP \fByaz\fR(7) .PP Section "The ODR Module" in the YAZ manual\&. .SH "AUTHORS" .PP \fBIndex Data\fR