@@ -244,8 +244,9 @@ creating the target language files on disk.}\\
...
@@ -244,8 +244,9 @@ creating the target language files on disk.}\\
\textbf{Warning Options}&\textbf{Description}\\
\textbf{Warning Options}&\textbf{Description}\\
\midrule
\midrule
{\ttfamily -Werror}&{\small Treat warnings as errors; abort if any warning is produced.}\\
{\ttfamily -Werror}&{\small Treat warnings as errors; abort if any warning is produced.}\\
{\ttfamily -Wdebug-lexer}&{\small Enable lexer debugging during the ASN.1 parsing stage.}\\
{\ttfamily -Wdebug-parser}&{\small Enable the parser debugging during the ASN.1 parsing stage.}\\
{\ttfamily -Wdebug-fixer}&{\small Enable ASN.1 syntax tree fixer debugging during the fixing stage.}\\
{\ttfamily -Wdebug-lexer}&{\small Enable the lexer debugging during the ASN.1 parsing stage.}\\
{\ttfamily -Wdebug-fixer}&{\small Enable the ASN.1 syntax tree fixer debugging during the fixing stage.}\\
{\ttfamily -Wdebug-compiler}&{\small Enable debugging during the actual compile time.}\\\\
{\ttfamily -Wdebug-compiler}&{\small Enable debugging during the actual compile time.}\\\\
\textbf{Language Options}&\textbf{Description}\\
\textbf{Language Options}&\textbf{Description}\\
\midrule
\midrule
...
@@ -325,7 +326,14 @@ fill the target structure for you. See Section~\ref{sub:Decoding-BER}.
...
@@ -325,7 +326,14 @@ fill the target structure for you. See Section~\ref{sub:Decoding-BER}.
Rules). This encoder will take the target structure and encode it
Rules). This encoder will take the target structure and encode it
into a series of bytes. See Section~\ref{sub:Encoding-DER}. NOTE:
into a series of bytes. See Section~\ref{sub:Encoding-DER}. NOTE:
DER encoding is a subset of BER. Any BER decoder should be able to
DER encoding is a subset of BER. Any BER decoder should be able to
handle DER input.
handle any DER input.
\item [{oer\_decoder}] This is the OER (Octet Encoding Rules) decoder.
\item [{oer\_encoder}] This is the Canonical OER encoder. This encoder
will take the target structure and encode it into a series of bytes compatible
with all BASIC-OER and CANONICAL-OER decoders.
\item [{uper\_decoder}] This is the Unaligned PER decoder.
\item [{uper\_encoder}] This is the Unaligned Basic PER encoder. This encoder
will take the target structure and encode it into a series of bytes.
\item [{xer\_decoder}] This is the generic XER decoder. It takes both BASIC-XER
\item [{xer\_decoder}] This is the generic XER decoder. It takes both BASIC-XER
or CANONICAL-XER encodings and deserializes the data into a local,
or CANONICAL-XER encodings and deserializes the data into a local,
machine-dependent representation. See Section~\ref{sub:Decoding-XER}.
machine-dependent representation. See Section~\ref{sub:Decoding-XER}.
...
@@ -333,9 +341,7 @@ machine-dependent representation. See Section~\ref{sub:Decoding-XER}.
...
@@ -333,9 +341,7 @@ machine-dependent representation. See Section~\ref{sub:Decoding-XER}.
encoder will take the target structure and represent it as an XML
encoder will take the target structure and represent it as an XML
(text) document using either BASIC-XER or CANONICAL-XER encoding rules.
(text) document using either BASIC-XER or CANONICAL-XER encoding rules.
See Section~\ref{sub:Encoding-XER}.
See Section~\ref{sub:Encoding-XER}.
\item [{uper\_decoder}] This is the Unaligned PER decoder.
\item [{uper\_encoder}] This is the Unaligned Basic PER encoder. This encoder
will take the target structure and encode it into a series of bytes.
\item [{check\_constraints}] Check that the contents of the target structure
\item [{check\_constraints}] Check that the contents of the target structure
are semantically valid and constrained to appropriate implicit or
are semantically valid and constrained to appropriate implicit or
explicit subtype constraints. See Section~\ref{sub:Validating-the-target}.
explicit subtype constraints. See Section~\ref{sub:Validating-the-target}.
...
@@ -349,6 +355,57 @@ structure. See Section~\ref{sub:Freeing-the-target}.
...
@@ -349,6 +355,57 @@ structure. See Section~\ref{sub:Freeing-the-target}.
Each of the above function takes the type descriptor (\emph{asn\_DEF\_\ldots{}})
Each of the above function takes the type descriptor (\emph{asn\_DEF\_\ldots{}})
and the target structure (\emph{rect}, in the above example).
and the target structure (\emph{rect}, in the above example).
\subsection{\label{sub:Generic-Encoding}Generic encoders and decoders}
Before we start describing specific encoders and decoders, let's step back
a little and check out a simple high level way.
The asn1c runtime supplies (see asn\_application.h) two sets of high level functions, \emph{asn\_encode*} and \emph{asn\_decode*}, which take a transfer syntax selector as the argument. The transfer syntax selector is defined as this:
Rectangle_t *%$\underbracket{\textrm{\listingfont rect = 0}}$%; /* %\textbf{\color{red}Note this 0\footnote{Forgetting to properly initialize the pointer to a destination structure is a major source of support requests.}!}% */
Rectangle_t *%$\underbracket{\textrm{\listingfont rect = 0}}$%; /* %\textbf{\color{red}Note this 0\footnote{Forgetting to properly initialize the pointer to a destination structure is a major source of support requests.}!}% */
Rectangle_t *%$\underbracket{\textrm{\listingfont rect = 0}}$%; /* %\textbf{\color{red}Note this 0\footnote{Forgetting to properly initialize the pointer to a destination structure is a major source of support requests.}!}% */