Annotation of 43BSDReno/contrib/isode-beta/h/pepsy.h, revision 1.1.1.1

1.1       root        1: /* pepsy.h */
                      2: 
                      3: /* 
                      4:  * $Header: /f/osi/h/RCS/pepsy.h,v 7.1 90/07/09 14:37:55 mrose Exp $
                      5:  *
                      6:  *
                      7:  * $Log:       pepsy.h,v $
                      8:  * Revision 7.1  90/07/09  14:37:55  mrose
                      9:  * sync
                     10:  * 
                     11:  * Revision 7.0  90/07/01  19:52:37  mrose
                     12:  * *** empty log message ***
                     13:  * 
                     14:  */
                     15: 
                     16: /*
                     17:  *                               NOTICE
                     18:  *
                     19:  *    Acquisition, use, and distribution of this module and related
                     20:  *    materials are subject to the restrictions of a license agreement.
                     21:  *    Consult the Preface in the User's Manual for the full terms of
                     22:  *    this agreement.
                     23:  *
                     24:  */
                     25: 
                     26: 
                     27: #ifndef PEPSY_DEFINITIONS
                     28: #define PEPSY_DEFINITIONS
                     29: /*
                     30:  * Definitions for pep tables
                     31:  */
                     32: 
                     33: typedef struct {
                     34:        int     pe_type;        /* Type of entry */
                     35:        int     pe_ucode;       /* index to user's code if any */
                     36:        int     pe_tag;         /* Tag of this entry if any */
                     37:        int     pe_flags;       /* Flags */
                     38: }      tpe;
                     39: #define NULLTPE        ((tpe *)0)
                     40: 
                     41: typedef struct {
                     42:        int     pe_type;        /* Type of entry */
                     43:        int     pe_ucode;       /* index to user's code if any */
                     44:        int     pe_tag;         /* Tag of this entry if any */
                     45:        int     pe_flags;       /* Flags */
                     46:        char *pe_typename; /* User defined name of variable */
                     47: }      ptpe;
                     48: #define NULLPTPE       ((ptpe *)0)
                     49: 
                     50: /* extract a pointer from the pointer table */
                     51: #define GPTR(mod, ind, type)     ((type )(mod)->md_ptrtab[ind])
                     52: /* tricky situation with the "type" - it must not contain the brackets of the
                     53:  * cast because we supply them here 
                     54:  */
                     55: 
                     56: /* macros for getting values of default flexibly */
                     57: #define IVAL(mod, x)      ((x)->pe_ucode)         /* Integer value */
                     58: #define PVAL(mod, x)      (GPTR(mod, (x)->pe_tag, char *)) /* (char *) */
                     59: #define TVAL(mod, x)      ((x)->pe_flags)         /* Type - Integer value */
                     60: #define RVAL(mod, x)     (*GPTR(mod, (x)->pe_tag, double *))  /* double */
                     61: 
                     62: /* macros for getting other more general pointers transparently */
                     63: #define EXT2MOD(mod, x)           (GPTR(mod, (x)->pe_ucode, modtyp *))
                     64: 
                     65: /* Types */
                     66: #define PE_START       (-1)
                     67: #define        PE_END          0
                     68: #define XOBJECT                3
                     69: #define        UCODE           6
                     70: #define MALLOC         7
                     71: #define        SCTRL           8
                     72: #define        CH_ACT          9
                     73: #define OPTL           10      /* Optionals field offset */
                     74: 
                     75: /* types that generate data */
                     76: #define TYPE_DATA      20
                     77: 
                     78: #define ANY                    (TYPE_DATA + 0)
                     79: #define INTEGER                (TYPE_DATA + 1)
                     80: #define BOOLEAN                (TYPE_DATA + 2)
                     81: #define OBJECT         (TYPE_DATA + 3)         /* This generates data */
                     82: #define BITSTRING      (TYPE_DATA + 4)
                     83: #define OCTETSTRING    (TYPE_DATA + 5)
                     84: #define SET_START      (TYPE_DATA + 6)
                     85: #define        SEQ_START       (TYPE_DATA + 7)
                     86: #define SEQOF_START    (TYPE_DATA + 8)
                     87: #define SETOF_START    (TYPE_DATA + 9)
                     88: #define CHOICE_START   (TYPE_DATA + 10)
                     89: #define REALTYPE       (TYPE_DATA + 11)        /* ASN.1 Real */
                     90: #define T_NULL         (TYPE_DATA + 12)
                     91: #define T_OID          (TYPE_DATA + 13)
                     92: #define ETAG           (TYPE_DATA + 14) /*so set_find in pr_set is executed*/
                     93: #define IMP_OBJ                (TYPE_DATA + 15) /*so set_find in pr_set is executed*/
                     94: #define EXTOBJ         (TYPE_DATA + 16) /* External reference object */
                     95: #define EXTMOD         (TYPE_DATA + 17) /* External module for above object */
                     96: #define OBJID          (TYPE_DATA + 18) /* Object Identifier */
                     97: #define DFLT_F         (TYPE_DATA + 19)/* Default value for following entry */
                     98: #define DFLT_B         (TYPE_DATA + 20)/* default value for previous entry */
                     99: 
                    100: #define STYPE_DATA     (TYPE_DATA + 30) /* Below here are the S* items */
                    101: /* Optimised - No indirection to cope with ISODE optimisation */
                    102: #define SBITSTRING     (STYPE_DATA + 0) /* No offset */
                    103: #define SOBJID         (STYPE_DATA + 1) /* Object Identifier - No offset */
                    104: #define SREALTYPE      (STYPE_DATA + 2) /* ASN.1 Real */
                    105: #define SANY           (STYPE_DATA + 3)
                    106: #define SEXTOBJ                (STYPE_DATA + 4) /* External reference object */
                    107: #define SOBJECT                (STYPE_DATA + 5)        /* This generates data */
                    108: #define SOCTETSTRING   (STYPE_DATA + 6) /* No offset */
                    109: #define SEXTERNAL      (STYPE_DATA + 7) /* External to be encoded */
                    110: 
                    111: #define ISDTYPE(p)     (p->pe_type >= TYPE_DATA)
                    112: 
                    113: /* User code indexes */
                    114: 
                    115: #define NONE           0               /* No User code */
                    116: /* Standard Tags */
                    117: 
                    118: #define T_BOOL         1
                    119: #define T_INTEGER      2
                    120: #define T_OCTETSTRING  4
                    121: #define T_OBJIDENT     6
                    122: #define T_EXTERNAL     8
                    123: #define T_REAL         9
                    124: #define T_ENUMERATED   10
                    125: #define T_SEQ          16
                    126: #define T_SET          17
                    127: #define T_IA5          22
                    128: #define T_GRAPHIC      25
                    129: 
                    130: /* Flags */
                    131: 
                    132: /* Use values 0-3 bottom two bits at the moment */
                    133: /* This has to be changed if the values for the 4 below are changed in ISODE */
                    134: #define FL_CLASS       0xf     
                    135: /* Class specification */
                    136: #define FL_UNIVERSAL   PE_CLASS_UNIV
                    137: #define FL_APPLICATION PE_CLASS_APPL
                    138: #define FL_CONTEXT     PE_CLASS_CONT
                    139: #define FL_PRIVATE     PE_CLASS_PRIV
                    140: 
                    141: 
                    142: #define FL_IMPLICIT    0100
                    143: #define FL_DEFAULT     0200
                    144: #define FL_OPTIONAL    0400
                    145: 
                    146: #define OPTIONAL(p)            ((p)->pe_flags & FL_OPTIONAL)
                    147: #define DEFAULT(p)             ((p)->pe_flags & FL_DEFAULT)
                    148: 
                    149: #define FL_PRTAG       01000   /* only for printing - print the tag */
                    150: 
                    151: #define PRINT_TAG(p)           ((p)->pe_flags & FL_PRTAG)
                    152: 
                    153: #define CLASS(p)       ((PElementClass)((p)->pe_flags & FL_CLASS))
                    154: #define TAG(p)         ((PElementID)((p)->pe_tag))
                    155: 
                    156: /* signed version of above - needed for tag == -1 */
                    157: #define STAG(p)                ((p)->pe_tag)
                    158: 
                    159: #define TESTBIT(p, bit)        ((p) & (1 << (bit)))
                    160: #define SETBIT(p, bit) ((p) |= (1 << (bit)))
                    161: /*
                    162:  * The module table. One per module which gives access to everything one needs
                    163:  * to know about the modules types
                    164:  */
                    165: 
                    166: typedef        struct  {
                    167:        char    *md_name;       /* Name of this module */
                    168:        int     md_nentries;    /* Number of entries */
                    169:        tpe     **md_etab;      /* Pointer to encoding tables */
                    170:        tpe     **md_dtab;      /* Pointer to decoding tables */
                    171:        ptpe    **md_ptab;      /* Pointer to printing tables */
                    172:        int     (*md_eucode)(); /* User code for encoding */
                    173:        int     (*md_ducode)(); /* User code for decoding */
                    174:        int     (*md_pucode)(); /* User code for printing */
                    175:        caddr_t *md_ptrtab;     /* pointer table */
                    176: 
                    177:        }       modtyp;
                    178: #define NULLMODTYP     ((modtyp *)0)
                    179: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.