DBA Data[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;