Annotation of 43BSDReno/contrib/isode-beta/h/pepsy.h, revision 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.