node-zoom
Version:
261 lines (237 loc) • 9.5 kB
text/xml
<refentry id="yaz-asncomp">
<refentryinfo>
<productname>YAZ</productname>
<productnumber>&version;</productnumber>
<info><orgname>Index Data</orgname></info>
</refentryinfo>
<refmeta>
<refentrytitle>yaz-asncomp</refentrytitle>
<manvolnum>1</manvolnum>
<refmiscinfo class="manual">Commands</refmiscinfo>
</refmeta>
<refnamediv>
<refname>yaz-asncomp</refname>
<refpurpose>YAZ ASN.1 compiler</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>yaz-asncomp</command>
<arg choice="opt"><option>-v</option></arg>
<arg choice="opt"><option>-c <replaceable>cfile</replaceable></option></arg>
<arg choice="opt"><option>-h <replaceable>hfile</replaceable></option></arg>
<arg choice="opt"><option>-p <replaceable>pfile</replaceable></option></arg>
<arg choice="opt"><option>-d <replaceable>config</replaceable></option></arg>
<arg choice="opt"><option>-I <replaceable>includeout</replaceable></option></arg>
<arg choice="opt"><option>-i <replaceable>includedir</replaceable></option></arg>
<arg choice="opt"><option>-m <replaceable>module</replaceable></option></arg>
<arg choice="opt">filename</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1><title>DESCRIPTION</title>
<para>
<command>yaz-asncomp</command> is an ASN.1 compiler that
reads an ASN.1 specification in <replaceable>filename</replaceable>
and produces C/C++ definitions and BER encoders/decoders for it.
</para>
<para>
The produced C/C++ code and header files uses the ODR module of YAZ
which is a library that encodes/decodes/prints BER packages.
<command>yaz-asncomp</command> allows you to specify name of
resulting source via options. Alternatively, you can specify
a DEFINISIONS file, which provides customized output to
many output files - if the ASN.1 specification file consists
of many modules.
</para>
<para>
This utility is written in Tcl. Any version of Tcl should work.
</para>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<variablelist>
<varlistentry><term><literal>-v </literal>
</term>
<listitem>
<para>
Makes the ASN.1 compiler print more verbose about the
various stages of operations.
</para>
</listitem>
</varlistentry>
<varlistentry><term><literal>-c </literal>
<replaceable>cfile</replaceable></term>
<listitem><para>
Specifies the name of the C/C++ file with encoders/decoders.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-h </literal>
<replaceable>hfile</replaceable></term>
<listitem><para>
Specifies the name of header file with definitions.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-p </literal>
<replaceable>pfile</replaceable></term>
<listitem><para>
Specifies the name of the a private header file with
definitions. By default all definitions are put
in header file (option -h).
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-d </literal>
<replaceable>dfile</replaceable></term>
<listitem><para>
Specifies the name of a definitions file.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-I </literal>
<replaceable>iout</replaceable></term>
<listitem><para>
Specifies first part of directory in which header files
are written.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-i </literal>
<replaceable>idir</replaceable></term>
<listitem><para>
Specifies second part of directory in which header files
are written.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>-m </literal>
<replaceable>module</replaceable></term>
<listitem><para>
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.
</para></listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1><title>DEFINITIONS FILE</title>
<para>
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 consists of
a series of variable assignments of the form:
</para>
<para>
<literal>set</literal> <replaceable>name</replaceable> <replaceable>value</replaceable>
</para>
<para>
Available variables are:
<variablelist>
<varlistentry><term><literal>default-prefix</literal></term>
<listitem><para>
Sets prefix for names in the produced output.
The value consists of three tokens: C function prefix,
C typedef prefix and preprocessor prefix respectively.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>prefix(</literal><replaceable>module</replaceable><literal>)</literal></term>
<listitem><para>
This value sets prefix values for module
<replaceable>module</replaceable>.
The value has same form as <literal>default-prefix</literal>.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>filename(</literal><replaceable>module</replaceable><literal>)</literal></term>
<listitem><para>
Specifies filename for C/header file for module
<replaceable>module</replaceable>.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>init(</literal><replaceable>module</replaceable><literal>,h)</literal></term>
<listitem><para>
Code fragment to be put in first part of public header for module
<replaceable>module</replaceable>.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>body(</literal><replaceable>module</replaceable><literal>,h)</literal></term>
<listitem><para>
Code fragment to be put in last part of public header for module
<replaceable>module</replaceable> (trailer).
</para></listitem>
</varlistentry>
<varlistentry><term><literal>init(</literal><replaceable>module</replaceable><literal>,c)</literal></term>
<listitem><para>
Code fragment to be put in first part of C based encoder/decoder for
module <replaceable>module</replaceable>.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>body(</literal><replaceable>module</replaceable><literal>,c)</literal></term>
<listitem><para>
Code fragment to be put in last part of C based encoder/decoder for
module <replaceable>module</replaceable> (trailer).
</para></listitem>
</varlistentry>
<varlistentry><term><literal>map(</literal><replaceable>module</replaceable><literal>,</literal><replaceable>name</replaceable><literal>)</literal></term>
<listitem><para>
Maps ASN.1 type in module <replaceable>module</replaceable>
of <replaceable>name</replaceable> to value.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>membermap(</literal><replaceable>module</replaceable><literal>,</literal><replaceable>name</replaceable><literal>,</literal><replaceable>member</replaceable><literal>)</literal></term>
<listitem><para>
Maps member <replaceable>member</replaceable> in SEQUENCE/CHOICE of
<replaceable>name</replaceable> in module
<replaceable>module</replaceable> 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 <literal>struct</literal>,<literal>union</literal>.
</para></listitem>
</varlistentry>
<varlistentry><term><literal>unionmap(</literal><replaceable>module</replaceable><literal>,</literal><replaceable>name</replaceable><literal>,</literal><replaceable>member</replaceable><literal>)</literal></term>
<listitem><para>
Maps member <replaceable>member</replaceable> in CHOICE of
<replaceable>name</replaceable> in module
<replaceable>module</replaceable> to value.
Value consists of to or three tokens. The first token
is name of the integer in the <literal>union</literal> that
is used as selector for the <literal>union</literal> itself.
The second token is name of the <literal>union</literal>.
The third token overrides the name of the CHOICE member;
if omitted the member name is used.
</para></listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1><title>FILES</title>
<para>
<filename>/usr/share/yaz/z39.50/z.tcl</filename>
</para>
<para>
<filename>/usr/share/yaz/z39.50/*.asn</filename>
</para>
</refsect1>
<refsect1><title>SEE ALSO</title>
<para>
<citerefentry>
<refentrytitle>yaz</refentrytitle>
<manvolnum>7</manvolnum></citerefentry>
</para>
<para>
Section "The ODR Module" in the YAZ manual.
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: nxml
nxml-child-indent: 1
End:
-->