| SilcAsn1Options
 
 NAME
 
    typedef enum { ... } SilcAsn1Options;
DESCRIPTION
    Options for ASN.1 encoder and decoder.  The ASN.1 options can be
    given to the SILC_ASN1_*_T macros and/or SILC_ASN1_OPTS macro.
NOTES
    The SILC_ASN1_ALLOC and SILC_ASN1_ACCUMUL flags can be given only
    with SILC_ASN1_OPTS macro.  Other options can be given with various
    SILC_ASN1_*_T macros.
EXAMPLE
    // Encodes boolean value with explicit tag and private class, and
    // the result is allocated into `dest'.
    silc_asn1_encode(asn1, &dest,
                     SILC_ASN1_OPTS(SILC_ASN1_ALLOC),
                     SILC_ASN1_BOOLEAN_T(SILC_ASN1_PRIVATE |
                                         SILC_ASN1_EXPLICIT, 100, boolval),
                     SILC_ASN1_END);
SOURCE    typedef enum {
      /* Default. If only this is set then defaults are implied. */
      SILC_ASN1_DEFAULT      = 0x0000,
    
      /* Class options.  User does not need to set these unless specificly
         wanted to do so.  If SILC_ASN1_DEFAULT is set the SILC_ASN1_CONTEXT is
         implied if any of the tag options are set.  Otherwise SILC_ASN1_UNIVERSAL
         is implied. Only one of these can bet set at once. */
      SILC_ASN1_UNIVERSAL    = 0x0001,       /* Universal class (default) */
      SILC_ASN1_APP          = 0x0002,       /* Application specific class */
      SILC_ASN1_CONTEXT      = 0x0003,       /* Context specific class */
      SILC_ASN1_PRIVATE      = 0x0004,       /* Private class */
    
      /* Tag options (bitmask) */
      SILC_ASN1_IMPLICIT     = 0x0010,       /* Tag is implicit (default) */
      SILC_ASN1_EXPLICIT     = 0x0020,       /* Tag is explicit */
      SILC_ASN1_DEFINITE     = 0x0040,       /* Length is definite (default) */
      SILC_ASN1_INDEFINITE   = 0x0080,       /* Length is indefinite */
    
      /* Decoding options (bitmask) */
      SILC_ASN1_OPTIONAL     = 0x0100,       /* Zero or more may be found.  The
                                                argument must be pointer to the
                                                type pointer so that NULL can be
                                                returned if type is not found. */
    
      /* ASN.1 encoder/decoder options (bitmask).  These can be given
         only with SILC_ASN1_OPTS macro at the start of encoding/decoding. */
      SILC_ASN1_ALLOC        = 0x0400,       /* Dynamically allocate results */
      SILC_ASN1_ACCUMUL      = 0x0800,       /* Accumulate memory for results,
                                                next call to silc_asn1_decode
                                                will not cancel old results. */
    } SilcAsn1Options;
 
 
 
 |