|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.