[Home] [Help]
PACKAGE: SYS.PIDL
Source
1 package PIDL is
2
3
4 ----------------------------------------------------------------------------
5 -- Persistent IDL datatypes
6 ----------------------------------------------------------------------------
7
8 subtype ptnod is binary_integer; -- generic IDL node type
9 TRENULL CONSTANT ptnod := 0; -- a NULL node
10 subtype ub4 is binary_integer; -- Oracle C type, unsigned byte 4
11 subtype ub2 is binary_integer; -- Oracle C type, unsigned byte 2
12 subtype ub1 is binary_integer; -- Oracle C type, unsigned byte 1
13 subtype sb4 is binary_integer; -- Oracle C type, signed byte 4
14 subtype sb2 is binary_integer; -- Oracle C type, signed byte 2
15
16 ----------------------------------------------------------------------------
17 -- Sequence datatypes.
18 ----------------------------------------------------------------------------
19 subtype ptseqtx is ptnod; -- seq of text/char
20 subtype ptseqnd is ptnod; -- seq of IDL node
21 subtype ptsequ4 is ptnod; -- seq of ub4
22 subtype ptsequ2 is ptnod; -- seq of ub2
23 subtype ptsequ1 is ptnod; -- seq of ub1
24 subtype ptseqs4 is ptnod; -- seq of sb4
25 subtype ptseqs2 is ptnod; -- seq of sb2
26
27 ----------------------------------------------------------------------------
28 -- Non-persistent IDL datatypes
29 ----------------------------------------------------------------------------
30 subtype private_ptr_t is number;
31 type ptr_t is record(private_ptr private_ptr_t);
32 subtype ptseqpt is ptnod; -- seq of ptr_t
33
34 ----------------------------------------------------------------------------
35 -- Types used for the implementation of persistent-idl.
36 ----------------------------------------------------------------------------
37 subtype ptnty is ub2; -- node-type enumerators
38 subtype ptaty is ub2; -- attr-type enumerators
39 subtype ptbty is ub2; -- base-type enumerators for attributes
40 subtype ptrty is ub2; -- rererence-type enumerators
41
42 ----------------------------------------------------------------------------
43 -- Enumerators for the kinds of reference (ptrty).
44 ----------------------------------------------------------------------------
45 PTA_REF constant ptrty := 0; -- REF
46 PTA_PART constant ptrty := 1; -- PART
47 PTA_PREF constant ptrty := 2; -- PART REF
48
49 ----------------------------------------------------------------------------
50 -- Enumerators for the idl basetypes (ptbty).
51 ----------------------------------------------------------------------------
52 PTABTERR constant ptbty := 0; -- error
53 PTABT_ND constant ptbty := 1; -- ptnod
54 PTABT_TX constant ptbty := 2; -- text*
55 PTABT_U4 constant ptbty := 3; -- ub4
56 PTABT_U2 constant ptbty := 4; -- ptbty
57 PTABT_U1 constant ptbty := 5; -- ub1
58 PTABT_S4 constant ptbty := 6; -- sb4
59 PTABT_S2 constant ptbty := 7; -- sb2
60 --PTABT_B4 constant ptbty := 8; -- byte4: desupported: use ub4 instead
61 PTABT_PT constant ptbty := 9; -- dvoid*
62 PTABT_RA constant ptbty := 10; -- s_opera
63 -- s_opera is an internal type, for diana's S_OPERAT
64 PTABT_LS constant ptbty := 11; -- ptlis*
65 PTABT_RS constant ptbty := 12; -- ub1* raw string, w/out null ind
66 PTABT_CS constant ptbty := 13; -- char* w/out null ind
67 -- (pl)sql basetypes
68 PTABT_NU constant ptbty := 14; -- sql number (with null ind)
69 PTABT_RW constant ptbty := 15; -- sql raw (with null ind)
70 PTABT_C2 constant ptbty := 18; -- sql varchar2 (with null ind)
71 PTABT_DT constant ptbty := 19; -- sql date (with null ind)
72 PTABT_BI constant ptbty := 20; -- (pl)sql binary_integer (w nullind)
73 PTABT_BO constant ptbty := 21; -- (pl)sql boolean (with null ind)
74
75 -- ptabts: pt attribute base type sequences, idl bulk types, one of:
76 PTABTS_0 constant ptbty := 29;
77 PTABTSND constant ptbty := (PTABTS_0 + 1); -- seq of ptnod
78 PTABTSTX constant ptbty := (PTABTS_0 + 2); -- seq of text*
79 PTABTSU4 constant ptbty := (PTABTS_0 + 3); -- seq of ub4
80 PTABTSU2 constant ptbty := (PTABTS_0 + 4); -- seq of ptbty
81 PTABTSU1 constant ptbty := (PTABTS_0 + 5); -- seq of ub1
82 PTABTSS4 constant ptbty := (PTABTS_0 + 6); -- seq of sb4
83 PTABTSS2 constant ptbty := (PTABTS_0 + 7); -- seq of sb2
84 --PTABTSB4 constant ptbty := (PTABTS_0 + 8); -- seq of byte4: desupported
85 PTABTSPT constant ptbty := (PTABTS_0 + 9); -- seq of dvoid*
86 PTABTSRA constant ptbty := (PTABTS_0 + 10); -- seq of s_opera
87 -- PTABTSLS (PTABTS_0 + 11); -- seq of ptlis*: unsupported
88 PTABTSRS constant ptbty := (PTABTS_0 + 12); -- seq of ub1*
89 PTABTSCS constant ptbty := (PTABTS_0 + 13); -- seq of char*
90 -- (pl)sql basetypes
91 PTABTSNU constant ptbty := (PTABTS_0 + 14); -- seq of sql number
92 PTABTSRW constant ptbty := (PTABTS_0 + 15); -- seq of sql raw
93 PTABTSC2 constant ptbty := (PTABTS_0 + 18); -- seq of sql varchar2
94 PTABTSDT constant ptbty := (PTABTS_0 + 19); -- seq of sql date
95 PTABTSBI constant ptbty := (PTABTS_0 + 20); -- seq of (pl)sql
96 -- binary_integer
97 PTABTSBO constant ptbty := (PTABTS_0 + 21); -- seq of (pl)sql
98 -- boolean
99
100 ----------------------------------------------------------------------------
101 -- Miscellaneous functions.
102 ----------------------------------------------------------------------------
103 function ptkin(obj ptnod) return ptnty;
104
105 -- returns number of attributes for given node type
106 function ptattcnt(node_enum ptnty) return ub2;
107
108 -- returns attr-type enumerator for nth attr of given node type
109 function ptatttyp(node_enum ptnty, nth ub2) return ptaty;
110
111 -- returns text name of given node type
112 function ptattnnm(node_enum ptnty) return varchar2;
113
114 -- returns text name of given attr type
115 function ptattanm(attr_enum ptaty) return varchar2;
116
117 -- returns base-type enumerator for type of given attribute
118 function ptattbty(node_enum ptnty, attr_enum ptaty) return ptbty;
119
120 -- "ref type" returns PART, PART_REF, or REF
121 function ptattrty(node_enum ptnty, attr_enum ptaty) return ptrty;
122
123 ----------------------------------------------------------------------------
124 -- Primitive IDL access methods. See DEFS$:PT.H.
125 --
126 -- There is a "get" (ptg%) and a "put" (ptp%) for each IDL base type
127 -- tx: text*
128 -- nd: ptnod
129 -- u4: ub4
130 -- u2: ub2
131 -- u1: ub1
132 -- s4: sb4
133 -- s2: sb2
134 -- ls: ptlis* -- not persistent
135 -- pt: ptr_t -- not persistent
136 -- dt: sql date
137 -- nu: sql number
138 -- ch: sql varchar2
139 -- vc: sql varchar
140 -- c2: sql varchar2
141 -- bi: plsql binary integer
142 -- bo: plsql boolean
143 --
144 -- The ptgs% calls get sequences of the above types, for example,
145 -- ptgsnd() fetches a handle to a sequence of nodes from an attribute
146 -- of type "sequence of <NODE or CLASS>".
147 ----------------------------------------------------------------------------
148 function ptg_tx(obj ptnod, aty ptaty) return varchar2;
149 function ptg_nd(obj ptnod, aty ptaty) return ptnod;
150 function ptg_u4(obj ptnod, aty ptaty) return ub4;
151 function ptg_u2(obj ptnod, aty ptaty) return ub2;
152 function ptg_u1(obj ptnod, aty ptaty) return ub1;
153 function ptg_s4(obj ptnod, aty ptaty) return sb4;
154 function ptg_s2(obj ptnod, aty ptaty) return sb2;
155 function ptg_pt(obj ptnod, aty ptaty) return ptr_t;
156
157 function ptgsnd(obj ptnod, aty ptaty) return ptseqnd;
158 function ptslen(seq ptseqnd) return ub2; -- get length of sequence
159
160 procedure ptp_tx(obj ptnod, val varchar2, aty ptaty);
161 procedure ptp_nd(obj ptnod, val ptnod, aty ptaty);
162 procedure ptp_u4(obj ptnod, val ub4, aty ptaty);
163 procedure ptp_u2(obj ptnod, val ub2, aty ptaty);
164 procedure ptp_u1(obj ptnod, val ub1, aty ptaty);
165 procedure ptp_s4(obj ptnod, val sb4, aty ptaty);
166 procedure ptp_s2(obj ptnod, val sb2, aty ptaty);
167 procedure ptp_pt(obj ptnod, val ptr_t, aty ptaty);
168
169 -- procedure ptpsnd(obj ptnod, val ptseqnd, aty ptaty);
170
171 ----------------------------------------------------------------------------
172 -- Sequence element-indexing functions.
173 ----------------------------------------------------------------------------
174 function ptgetx(obj ptseqtx, ndx ub2) return varchar2;
175 function ptgend(obj ptseqnd, ndx ub2) return ptnod;
176 function ptgeu4(obj ptsequ4, ndx ub2) return ub4;
177 function ptgeu2(obj ptsequ2, ndx ub2) return ub2;
178 function ptgeu1(obj ptsequ1, ndx ub2) return ub1;
179 function ptges4(obj ptseqs4, ndx ub2) return sb4;
180 function ptges2(obj ptseqs2, ndx ub2) return sb2;
181 function ptgept(obj ptseqpt, ndx ub2) return ptr_t;
182
183 -- NYI
184 -- procedure ptpetx(obj ptseqtx, ndx ub2, val varchar2);
185 -- procedure ptpend(obj ptseqnd, ndx ub2, val ptnod);
186 -- procedure ptpeu4(obj ptsequ4, ndx ub2, val ub4);
187 -- procedure ptpeu2(obj ptsequ2, ndx ub2, val ub2);
188 -- procedure ptpeu1(obj ptsequ1, ndx ub2, val ub1);
189 -- procedure ptpes4(obj ptseqs4, ndx ub2, val sb4);
190 -- procedure ptpes2(obj ptseqs2, ndx ub2, val sb2);
191
192 end pidl;