📄 yaz-asncomp.sgml
字号:
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" []><refentry id="yaz-asncomp"> <refmeta> <refentrytitle>yaz-asncomp</refentrytitle> <manvolnum>1</manvolnum> </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 fileLocal variables:mode: sgmlsgml-omittag:tsgml-shorttag:tsgml-minimize-attributes:nilsgml-always-quote-attributes:tsgml-indent-step:1sgml-indent-data:tsgml-parent-document:nilsgml-local-catalogs: nilsgml-namecase-general:tEnd:-->
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -