Added SILC Thread Queue API
[silc.git] / lib / silcasn1 / silcasn1_i.h
index 67fb4d050ce92a4bb6ac53e41ac566506bf4465e..8dd98752474063889e6111e2b4ecdc8fa8392967 100644 (file)
@@ -4,7 +4,7 @@
 
   Author: Pekka Riikonen <priikone@silcnet.org>
 
-  Copyright (C) 2003 - 2005 Pekka Riikonen
+  Copyright (C) 2003 - 2007 Pekka Riikonen
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
 
 /* ASN.1 context */
 struct SilcAsn1Object {
-  va_list ap;                  /* List of ASN.1 types given as argument */
+  SilcStack orig_stack;                /* Stack given to silc_asn1_alloc */
   SilcStack stack1;            /* Stack for encoder */
   SilcStack stack2;            /* Internal stack for encoding/decoding */
+  va_list ap;                  /* List of ASN.1 types given as argument */
   unsigned int accumul  : 1;   /* Accumulate memory from stack for result */
+  unsigned int switched  : 1;  /* Set when stack2 is set to stack1 */
 };
 
 /* The maximum depth for recursion in encoder and decoder. */
 #define SILC_ASN1_RECURSION_DEPTH 512
 
 /* Implementation specific special tags.  Range is 0x7000 - 0x7fff. */
-#define SILC_ASN1_TAG_ANY          0x7000   /* SILC_ASN1_ANY given  */
-#define SILC_ASN1_TAG_FUNC         0x7001   /* Callback encoder/decoder */
-#define SILC_ASN1_TAG_OPTS         0x7002   /* SILC_ASN1_OPTS given */
-#define SILC_ASN1_TAG_CHOICE       0x7003   /* SILC_ASN1_CHOICE given */
-#define SILC_ASN1_TAG_SEQUENCE_OF  0x7004   /* SILC_ASN1_SEQUENCE_OF given */
+#define SILC_ASN1_TAG_ANY           0x7000  /* SILC_ASN1_ANY given  */
+#define SILC_ASN1_TAG_FUNC          0x7001  /* Callback encoder/decoder */
+#define SILC_ASN1_TAG_OPTS          0x7002  /* SILC_ASN1_OPTS given */
+#define SILC_ASN1_TAG_CHOICE        0x7003  /* SILC_ASN1_CHOICE given */
+#define SILC_ASN1_TAG_SEQUENCE_OF   0x7004  /* SILC_ASN1_SEQUENCE_OF given */
+#define SILC_ASN1_TAG_ANY_PRIMITIVE 0x7005  /* Pre-encoded primitive data */
+#define SILC_ASN1_TAG_SHORT_INTEGER 0x7006  /* Short integer */
 
 /* Helper macros for adding the arguments to encoder and decoder. */
 
@@ -98,14 +102,16 @@ struct SilcAsn1Object {
     ret_type = (ret_type & 0xffff) & ~0x8000;                          \
   }
 
-#ifdef SILC_DIST_INPLACE
 /* Internal functions */
 
+#if defined(SILC_DEBUG)
 /* Returns string representation of a tag */
 const char *silc_asn1_tag_name(SilcAsn1Tag tag);
+#endif /* SILC_DEBUG */
 
+#ifdef SILC_DIST_INPLACE
 /* Dumps the ASN.1 data block into standard output (stdout). */
-bool silc_asn1_dump(SilcAsn1 asn1, SilcBuffer src);
+SilcBool silc_asn1_dump(SilcAsn1 asn1, SilcBuffer src);
 #endif /* SILC_DIST_INPLACE */
 
 #endif /* SILCASN1_I_H */