summaryrefslogtreecommitdiffstats
path: root/src/isode/h/pepsy.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/isode/h/pepsy.h')
-rw-r--r--src/isode/h/pepsy.h237
1 files changed, 237 insertions, 0 deletions
diff --git a/src/isode/h/pepsy.h b/src/isode/h/pepsy.h
new file mode 100644
index 0000000000..0ac84b452e
--- /dev/null
+++ b/src/isode/h/pepsy.h
@@ -0,0 +1,237 @@
+/* pepsy.h */
+
+/*
+ * $Header$
+ *
+ *
+ * $Log$
+ * Revision 1.1 1994/06/10 03:29:32 eichin
+ * autoconfed isode for kerberos work
+ *
+ * Revision 1.1 94/06/10 03:17:57 eichin
+ * autoconfed isode for kerberos work
+ *
+ * Revision 1.1 1994/05/31 20:38:12 eichin
+ * reduced-isode release from /mit/isode/isode-subset/src
+ *
+ * Revision 8.0 91/07/17 12:33:50 isode
+ * Release 7.0
+ *
+ *
+ */
+
+/*
+ * NOTICE
+ *
+ * Acquisition, use, and distribution of this module and related
+ * materials are subject to the restrictions of a license agreement.
+ * Consult the Preface in the User's Manual for the full terms of
+ * this agreement.
+ *
+ */
+
+
+#ifndef PEPSY_DEFINITIONS
+#define PEPSY_DEFINITIONS
+
+#ifndef PEPYPARM
+#define PEPYPARM char *
+#endif
+
+/*
+ * Definitions for pep tables
+ */
+
+#ifdef notdef
+typedef struct {
+ int pe_type; /* Type of entry */
+ integer pe_ucode; /* index to user's code if any */
+ int pe_tag; /* Tag of this entry if any */
+ int pe_flags; /* Flags */
+} tpe;
+#define NULLTPE ((tpe *)0)
+#endif
+
+typedef struct {
+ int pe_type; /* Type of entry */
+ integer pe_ucode; /* index to user's code if any */
+ int pe_tag; /* Tag of this entry if any */
+ int pe_flags; /* Flags */
+ char **pe_typename; /* User defined name of variable */
+} ptpe;
+#define tpe ptpe
+#define NULLTPE ((tpe *)0)
+#define NULLPTPE ((ptpe *)0)
+
+/* extract a pointer from the pointer table */
+#define GPTR(mod, ind, type) ((type )(mod)->md_ptrtab[ind])
+/* tricky situation with the "type" - it must not contain the brackets of the
+ * cast because we supply them here
+ */
+
+/* macros for getting values of default flexibly */
+#define IVAL(mod, x) ((x)->pe_ucode) /* Integer value */
+#define PVAL(mod, x) (GPTR(mod, (x)->pe_tag, char *)) /* (char *) */
+#define TVAL(mod, x) ((x)->pe_flags) /* Type - Integer value */
+#define RVAL(mod, x) (*GPTR(mod, (x)->pe_tag, double *)) /* double */
+
+/* macros for getting the function pointer (for a FN_CALL entry) */
+#define FN_PTR(mod, x) (*GPTR(mod, (x)->pe_ucode, IFP )) /* function ptr */
+
+/* macros for getting other more general pointers transparently */
+#define EXT2MOD(mod, x) (GPTR(mod, (x)->pe_ucode, modtyp *))
+
+/* Types */
+#define PE_START (-1)
+#define PE_END 0
+#define XOBJECT 3
+#define UCODE 6
+#define MEMALLOC 7
+#define SCTRL 8
+#define CH_ACT 9
+#define OPTL 10 /* Optionals field offset */
+#define BOPTIONAL 11 /* optional test for next */
+#define FFN_CALL 12 /* call the free function */
+#define FREE_ONLY 13 /* the next item is only for freeing code */
+
+/* types that generate data */
+#define TYPE_DATA 20
+
+#define ANY (TYPE_DATA + 0)
+#define INTEGER (TYPE_DATA + 1)
+#define BOOLEAN (TYPE_DATA + 2)
+#define OBJECT (TYPE_DATA + 3) /* This generates data */
+#define BITSTRING (TYPE_DATA + 4)
+#define OCTETSTRING (TYPE_DATA + 5)
+#define SET_START (TYPE_DATA + 6)
+#define SEQ_START (TYPE_DATA + 7)
+#define SEQOF_START (TYPE_DATA + 8)
+#define SETOF_START (TYPE_DATA + 9)
+#define CHOICE_START (TYPE_DATA + 10)
+#define REALTYPE (TYPE_DATA + 11) /* ASN.1 Real */
+#define T_NULL (TYPE_DATA + 12)
+#define T_OID (TYPE_DATA + 13)
+#define ETAG (TYPE_DATA + 14) /*so set_find in pr_set is executed*/
+#define IMP_OBJ (TYPE_DATA + 15) /*so set_find in pr_set is executed*/
+#define EXTOBJ (TYPE_DATA + 16) /* External reference object */
+#define EXTMOD (TYPE_DATA + 17) /* External module for above object */
+#define OBJID (TYPE_DATA + 18) /* Object Identifier */
+#define DFLT_F (TYPE_DATA + 19)/* Default value for following entry */
+#define DFLT_B (TYPE_DATA + 20)/* default value for previous entry */
+#define T_STRING (TYPE_DATA + 21)/* [[ s ptr ]] supporting entry */
+#define OCTET_PTR (TYPE_DATA + 22)/* [[ o ptr $ len]] str entry */
+#define OCTET_LEN (TYPE_DATA + 23)/* [[ o ptr $ len]] len entry */
+#define BITSTR_PTR (TYPE_DATA + 24)/* [[ x ptr $ len]] str entry */
+#define BITSTR_LEN (TYPE_DATA + 25)/* [[ x ptr $ len]] len entry */
+#define FN_CALL (TYPE_DATA + 26)/* call a function to do the work */
+
+#if PEPSY_VERSION >= 2
+#define STYPE_DATA (TYPE_DATA + 50) /* Below here are the S* items */
+#else
+#define STYPE_DATA (TYPE_DATA + 30) /* Below here are the S* items */
+#endif
+/* Optimised - No indirection to cope with ISODE optimisation */
+#define SBITSTRING (STYPE_DATA + 0) /* No offset */
+#define SOBJID (STYPE_DATA + 1) /* Object Identifier - No offset */
+#define SREALTYPE (STYPE_DATA + 2) /* ASN.1 Real */
+#define SANY (STYPE_DATA + 3)
+#define SEXTOBJ (STYPE_DATA + 4) /* External reference object */
+#define SOBJECT (STYPE_DATA + 5) /* This generates data */
+#define SOCTETSTRING (STYPE_DATA + 6) /* No offset */
+#define SEXTERNAL (STYPE_DATA + 7) /* External to be encoded */
+#define SSEQ_START (STYPE_DATA + 8) /* SEQUENCE don't indirect */
+#define SSET_START (STYPE_DATA + 9) /* SET don't do an indirection */
+#define SSEQOF_START (STYPE_DATA + 10) /* SEQOF - no indirection */
+#define SSETOF_START (STYPE_DATA + 11) /* SETOF - no indirection */
+#define SCHOICE_START (STYPE_DATA + 12) /* CHOICE - no indirection */
+
+#define ISDTYPE(p) (p->pe_type >= TYPE_DATA)
+
+/* User code indexes */
+
+#define NONE 0 /* No User code */
+/* Standard Tags */
+
+#define T_BOOL 1
+#define T_INTEGER 2
+#define T_OCTETSTRING 4
+#define T_OBJIDENT 6
+#define T_EXTERNAL 8
+#define T_REAL 9
+#define T_ENUMERATED 10
+#define T_SEQ 16
+#define T_SET 17
+#define T_IA5 22
+#define T_GRAPHIC 25
+
+/* Flags */
+
+/* Use values 0-3 bottom two bits at the moment */
+/* This has to be changed if the values for the 4 below are changed in ISODE */
+#define FL_CLASS 0xf
+/* Class specification */
+#define FL_UNIVERSAL PE_CLASS_UNIV
+#define FL_APPLICATION PE_CLASS_APPL
+#define FL_CONTEXT PE_CLASS_CONT
+#define FL_PRIVATE PE_CLASS_PRIV
+
+
+#define FL_IMPLICIT 0100
+#define FL_DEFAULT 0200
+#define FL_OPTIONAL 0400
+
+#define OPTIONAL(p) ((p)->pe_flags & FL_OPTIONAL)
+#define DEFAULT(p) ((p)->pe_flags & FL_DEFAULT)
+
+#define FL_PRTAG 01000 /* only for printing - print the tag */
+
+#define PRINT_TAG(p) ((p)->pe_flags & FL_PRTAG)
+
+#define FL_USELECT 02000 /* user code selects */
+
+#define IF_USELECT(p) ((p) -> pe_flags & FL_USELECT)
+
+
+#define CLASS(p) ((PElementClass)((p)->pe_flags & FL_CLASS))
+#define TAG(p) ((PElementID)((p)->pe_tag))
+
+/* signed version of above - needed for tag == -1 */
+#define STAG(p) ((p)->pe_tag)
+
+#define TESTBIT(p, bit) ((p) & (1 << (bit)))
+#define SETBIT(p, bit) ((p) |= (1 << (bit)))
+#define CLRBIT(p, bit) ((p) &= ~(1 << (bit)))
+
+/* To support the OPTIONAL << field $ bitno >> construct */
+#define BITTEST(p, bit) (((p)[(bit)/8]) & (0x80 >> (bit) % 8))
+#define BITSET(p, bit) (((p)[(bit)/8]) |= (0x80 >> (bit) % 8))
+#define BITCLR(p, bit) (((p)[(bit)/8]) &= ~(0x80 >> (bit) % 8))
+
+/* compute the number of char's required to support x bits */
+#define NBITS2NCHARS(x) (((x) + 7)/8)
+
+/*
+ * The module table. One per module which gives access to everything one needs
+ * to know about the modules types
+ */
+
+typedef struct {
+ char *md_name; /* Name of this module */
+ int md_nentries; /* Number of entries */
+ tpe **md_etab; /* Pointer to encoding tables */
+ tpe **md_dtab; /* Pointer to decoding tables */
+ ptpe **md_ptab; /* Pointer to printing tables */
+ int (*md_eucode)(); /* User code for encoding */
+ int (*md_ducode)(); /* User code for decoding */
+ int (*md_pucode)(); /* User code for printing */
+ caddr_t *md_ptrtab; /* pointer table */
+
+ } modtyp;
+#define NULLMODTYP ((modtyp *)0)
+
+
+#define LOTSOFBITS 128
+
+
+int enc_f (), dec_f (), fre_obj ();
+#endif