|
|
1.1 root 1: /* pep.h */
2:
3: /*
4: * $Header: /f/osi/h/RCS/pep.h,v 7.0 90/07/01 19:52:36 mrose Exp $
5: *
6: *
7: * $Log: pep.h,v $
8: * Revision 7.0 90/07/01 19:52:36 mrose
9: * *** empty log message ***
10: *
11: */
12:
13: /*
14: * NOTICE
15: *
16: * Acquisition, use, and distribution of this module and related
17: * materials are subject to the restrictions of a license agreement.
18: * Consult the Preface in the User's Manual for the full terms of
19: * this agreement.
20: *
21: */
22:
23:
24: #ifndef PEP_DEFINITIONS
25: #define PEP_DEFINITIONS
26: /*
27: * Definitions for pep tables
28: */
29:
30: typedef struct {
31: int pe_type; /* Type of entry */
32: int pe_ucode; /* index to user's code if any */
33: int pe_tag; /* Tag of this entry if any */
34: int pe_flags; /* Flags */
35: } tpe;
36:
37: typedef struct {
38: int pe_type; /* Type of entry */
39: int pe_ucode; /* index to user's code if any */
40: int pe_tag; /* Tag of this entry if any */
41: int pe_flags; /* Flags */
42: char *pe_typename /* User defined name of variable */
43: } ptpe;
44:
45: /* macros for getting values of default flexibly */
46: #define IVAL(x) ((x)->pe_ucode) /* Integer value */
47: #define PVAL(x) ((char *)(x)->pe_tag) /* Pointer (char *) */
48: #define TVAL(x) ((x)->pe_flags) /* Type - Integer value */
49:
50: /* Types */
51: #define PE_START (-1)
52: #define PE_END 0
53: #define XOBJECT 3
54: #define UCODE 6
55: #define MALLOC 7
56: #define SCTRL 8
57: #define CH_ACT 9
58: #define OPTL 10 /* Optionals field offset */
59:
60: /* types that generate data */
61: #define TYPE_DATA 20
62:
63: #define ANY (TYPE_DATA + 0)
64: #define INTEGER (TYPE_DATA + 1)
65: #define BOOLEAN (TYPE_DATA + 2)
66: #define OBJECT (TYPE_DATA + 3) /* This generates data */
67: #define BITSTRING (TYPE_DATA + 4)
68: #define OCTETSTRING (TYPE_DATA + 5)
69: #define SET_START (TYPE_DATA + 6)
70: #define SEQ_START (TYPE_DATA + 7)
71: #define SEQOF_START (TYPE_DATA + 8)
72: #define SETOF_START (TYPE_DATA + 9)
73: #define CHOICE_START (TYPE_DATA + 10)
74: /* #define CONS_ANY (TYPE_DATA + 11) */
75: #define T_NULL (TYPE_DATA + 12)
76: #define T_OID (TYPE_DATA + 13)
77: #define ETAG (TYPE_DATA + 14) /*so set_find in pr_set is executed*/
78: #define IMP_OBJ (TYPE_DATA + 15) /*so set_find in pr_set is executed*/
79: #define EXTOBJ (TYPE_DATA + 16) /* External reference object */
80: #define EXTMOD (TYPE_DATA + 17) /* External module for above object */
81: #define OBJID (TYPE_DATA + 18) /* Object Identifier */
82: #define DFLT_F (TYPE_DATA + 19)/* Default value for following entry */
83: #define DFLT_B (TYPE_DATA + 20)/* default value for previous entry */
84:
85: #define STYPE_DATA (TYPE_DATA + 30) /* Above here are the S* items */
86: /* No Offset entries to cope with the ISODE optimisation */
87: #define SBITSTRING (STYPE_DATA + 0) /* No offset */
88: #define SOBJID (STYPE_DATA + 1) /* Object Identifier - No offset */
89: /* #define SCONS_ANY (STYPE_DATA + 2) /* No offset */
90: #define SANY (STYPE_DATA + 3)
91: #define SEXTOBJ (STYPE_DATA + 4) /* External reference object */
92: #define SOBJECT (STYPE_DATA + 5) /* This generates data */
93: #define SOCTETSTRING (STYPE_DATA + 6) /* No offset */
94: #define SEXTERNAL (STYPE_DATA + 7) /* External to be encoded */
95:
96: #define ISDTYPE(p) (p->pe_type >= TYPE_DATA)
97:
98: /* User code indexes */
99:
100: #define NONE 0 /* No User code */
101: /* Standard Tags */
102:
103: #define T_BOOL 1
104: #define T_INTEGER 2
105: #define T_OCTETSTRING 4
106: #define T_OBJIDENT 6
107: #define T_EXTERNAL 8
108: #define T_SEQ 16
109: #define T_SET 17
110: #define T_IA5 22
111: #define T_GRAPHIC 25
112:
113: /* Flags */
114:
115: #define FL_IMPLICIT 0100
116: #define FL_DEFAULT 0200
117: #define FL_OPTIONAL 0400
118:
119: #define OPTIONAL(p) ((p)->pe_flags & FL_OPTIONAL)
120: #define DEFAULT(p) ((p)->pe_flags & FL_DEFAULT)
121:
122: /* Class specification */
123: #define FL_UNIVERSAL PE_CLASS_UNIV
124: #define FL_APPLICATION PE_CLASS_APPL
125: #define FL_CONTEXT PE_CLASS_CONT
126: #define FL_PRIVATE PE_CLASS_PRIV
127:
128: /* This has to be changed if the values for the above 4 are changed in ISODE */
129: #define FL_CLASS 0xf
130:
131: /* ETAG flags */
132: #define T_PRIM 0
133: #define T_CONS 1
134: #define T_OBJ 2
135:
136: #define CLASS(p) ((p)->pe_flags & FL_CLASS)
137: #define TAG(p) ((p)->pe_tag)
138: #define TESTBIT(p, bit) ((p) & (1 << (bit)))
139: #define SETBIT(p, bit) ((p) |= (1 << (bit)))
140: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.