Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / IFR_Client / IFR_Basic.pidl
blob6ac3da7e58002f87b2fe1b75b30ee79dd53f306e
1  // -*- IDL -*-
3 /**
4  * @file IFR_Basic.pidl
5  *
6  * This file is used to generate the code in IFR_BasicC.{h,inl,cpp}.
7  * The original file Interface.idl was split into four pieces, to
8  * keep the generated files to a manageable size and reduce build
9  * time. This IDL file contains the concrete base interfaces of
10  * the IFR, except for fixed types, valuetypes and CORBA components.
11  */
13 #ifndef _IFR_BASIC_IDL_
14 #define _IFR_BASIC_IDL_
16 #include "tao/IFR_Client/IFR_Base.pidl"
17 #include "tao/ParameterMode.pidl"
19 module CORBA
21   typeprefix CORBA "omg.org";
23   interface PrimitiveDef;
24   interface StringDef;
25   interface SequenceDef;
26   interface ArrayDef;
27   interface WstringDef;
28   interface FixedDef;
30   enum PrimitiveKind
31   {
32     pk_null,
33     pk_void,
34     pk_short,
35     pk_long,
36     pk_ushort,
37     pk_ulong,
38     pk_float,
39     pk_double,
40     pk_boolean,
41     pk_char,
42     pk_octet,
43     pk_any,
44     pk_TypeCode,
45     pk_Principal,
46     pk_string,
47     pk_objref,
48     pk_longlong,
49     pk_ulonglong,
50     pk_longdouble,
51     pk_wchar,
52     pk_wstring,
53     pk_value_base
54   };
56   interface Repository : Container
57   {
58     // read interface
59     Contained lookup_id (
60         in RepositoryId search_id
61       );
62     TypeCode get_canonical_typecode (
63         in TypeCode tc
64       );
65     PrimitiveDef get_primitive (
66         in PrimitiveKind kind
67       );
68     // write interface
69     StringDef create_string (
70         in unsigned long bound
71       );
72     WstringDef create_wstring (
73         in unsigned long bound
74       );
75     SequenceDef create_sequence (
76         in unsigned long bound,
77         in IDLType element_type
78       );
79     ArrayDef create_array (
80         in unsigned long length,
81         in IDLType element_type
82       );
83     FixedDef create_fixed (
84         in unsigned short digits,
85         in short scale
86       );
87   };
89   interface ModuleDef : Container, Contained
90   {
91   };
93   struct ModuleDescription
94   {
95     Identifier name;
96     RepositoryId id;
97     RepositoryId defined_in;
98     VersionSpec version;
99   };
101   interface ConstantDef : Contained
102   {
103     readonly attribute TypeCode type;
104     attribute IDLType type_def;
105     attribute any value;
106   };
108   struct ConstantDescription
109   {
110     Identifier name;
111     RepositoryId id;
112     RepositoryId defined_in;
113     VersionSpec version;
114     TypeCode type;
115     any value;
116   };
118   interface StructDef : TypedefDef, Container
119   {
120     attribute StructMemberSeq members;
121   };
123   interface UnionDef : TypedefDef, Container
124   {
125     readonly attribute TypeCode discriminator_type;
126     attribute IDLType discriminator_type_def;
127     attribute UnionMemberSeq members;
128   };
130   interface EnumDef : TypedefDef
131   {
132     attribute EnumMemberSeq members;
133   };
135   interface AliasDef : TypedefDef
136   {
137     attribute IDLType original_type_def;
138   };
140   interface NativeDef : TypedefDef
141   {
142   };
144   interface PrimitiveDef: IDLType
145   {
146     readonly attribute PrimitiveKind kind;
147   };
149   interface StringDef : IDLType
150   {
151     attribute unsigned long bound;
152   };
154   interface WstringDef : IDLType
155   {
156     attribute unsigned long bound;
157   };
159   interface SequenceDef : IDLType
160   {
161     attribute unsigned long bound;
162     readonly attribute TypeCode element_type;
163     attribute IDLType element_type_def;
164   };
166   interface ArrayDef : IDLType
167   {
168   attribute unsigned long length;
169   readonly attribute TypeCode element_type;
170   attribute IDLType element_type_def;
171   };
173   interface ExceptionDef : Contained, Container
174   {
175     readonly attribute TypeCode type;
176     attribute StructMemberSeq members;
177   };
179   typedef sequence <ExceptionDef> ExceptionDefSeq;
181   enum AttributeMode
182   {
183     ATTR_NORMAL,
184     ATTR_READONLY
185   };
187   interface AttributeDef : Contained
188   {
189     readonly attribute TypeCode type;
190     attribute IDLType type_def;
191     attribute AttributeMode mode;
192   };
194   struct AttributeDescription
195   {
196     Identifier name;
197     RepositoryId id;
198     RepositoryId defined_in;
199     VersionSpec version;
200     TypeCode type;
201     AttributeMode mode;
202   };
204   struct ExtAttributeDescription
205   {
206     Identifier name;
207     RepositoryId id;
208     RepositoryId defined_in;
209     VersionSpec version;
210     TypeCode type;
211     AttributeMode mode;
212     ExcDescriptionSeq get_exceptions;
213     ExcDescriptionSeq put_exceptions;
214   };
216   interface ExtAttributeDef : AttributeDef
217   {
218     // read/write interface
219     attribute ExcDescriptionSeq get_exceptions;
220     attribute ExcDescriptionSeq set_exceptions;
221     // read interface
222     ExtAttributeDescription describe_attribute ();
223   };
225   enum OperationMode
226   {
227     OP_NORMAL,
228     OP_ONEWAY
229   };
231 // Already defined in corbafwd.h, included from orb.idl
233   enum ParameterMode
234   {
235     PARAM_IN,
236     PARAM_OUT,
237     PARAM_INOUT
238   };
240   struct ParameterDescription
241   {
242     Identifier name;
243     TypeCode type;
244     IDLType type_def;
245     ParameterMode mode;
246   };
248   typedef sequence <ParameterDescription> ParDescriptionSeq;
249   typedef Identifier ContextIdentifier;
250   typedef sequence <ContextIdentifier> ContextIdSeq;
252   interface OperationDef : Contained
253   {
254     readonly attribute TypeCode result;
255     attribute IDLType result_def;
256     attribute ParDescriptionSeq params;
257     attribute OperationMode mode;
258     attribute ContextIdSeq contexts;
259     attribute ExceptionDefSeq exceptions;
260   };
262   struct OperationDescription
263   {
264     Identifier name;
265     RepositoryId id;
266     RepositoryId defined_in;
267     VersionSpec version;
268     TypeCode result;
269     OperationMode mode;
270     ContextIdSeq contexts;
271     ParDescriptionSeq parameters;
272     ExcDescriptionSeq exceptions;
273   };
275   typedef sequence <RepositoryId> RepositoryIdSeq;
276   typedef sequence <OperationDescription> OpDescriptionSeq;
277   typedef sequence <AttributeDescription> AttrDescriptionSeq;
278   typedef sequence <ExtAttributeDescription> ExtAttrDescriptionSeq;
280   interface InterfaceDef : Container, Contained, IDLType
281   {
282     // read/write interface
283     attribute InterfaceDefSeq base_interfaces;
284     // read interface
285     boolean is_a (
286         in RepositoryId interface_id
287       );
289     struct FullInterfaceDescription
290     {
291       Identifier name;
292       RepositoryId id;
293       RepositoryId defined_in;
294       VersionSpec version;
295       OpDescriptionSeq operations;
296       AttrDescriptionSeq attributes;
297       RepositoryIdSeq base_interfaces;
298       TypeCode type;
299     };
301     FullInterfaceDescription describe_interface ();
303     // write interface
304     AttributeDef create_attribute ( in RepositoryId id,
305                                     in Identifier name,
306                                     in VersionSpec version,
307                                     in IDLType type,
308                                     in AttributeMode mode );
310     OperationDef create_operation ( in RepositoryId id,
311                                     in Identifier name,
312                                     in VersionSpec version,
313                                     in IDLType result,
314                                     in OperationMode mode,
315                                     in ParDescriptionSeq params,
316                                     in ExceptionDefSeq exceptions,
317                                     in ContextIdSeq contexts );
318   };
320   struct InterfaceDescription
321   {
322     Identifier name;
323     RepositoryId id;
324     RepositoryId defined_in;
325     VersionSpec version;
326     RepositoryIdSeq base_interfaces;
327   };
329   interface InterfaceAttrExtension
330   {
331     // read interface
332     struct ExtFullInterfaceDescription
333     {
334       Identifier name;
335       RepositoryId id;
336       RepositoryId defined_in;
337       VersionSpec version;
338       OpDescriptionSeq operations;
339       ExtAttrDescriptionSeq attributes;
340       RepositoryIdSeq base_interfaces;
341       TypeCode type;
342     };
344     ExtFullInterfaceDescription describe_ext_interface ();
346     // write interface
347     ExtAttributeDef create_ext_attribute ( in RepositoryId id,
348                                            in Identifier name,
349                                            in VersionSpec version,
350                                            in IDLType type,
351                                            in AttributeMode mode,
352                                            in ExceptionDefSeq get_exceptions,
353                                            in ExceptionDefSeq set_exceptions );
354   };
356   interface ExtInterfaceDef : InterfaceDef, InterfaceAttrExtension
357   {
358   };
360   interface AbstractInterfaceDef : InterfaceDef
361   {
362   };
364   interface ExtAbstractInterfaceDef : AbstractInterfaceDef,
365                                       InterfaceAttrExtension
366   {
367   };
369   interface LocalInterfaceDef : InterfaceDef
370   {
371   };
373   interface ExtLocalInterfaceDef : LocalInterfaceDef,
374                                    InterfaceAttrExtension
375   {
376   };
379 #endif /* _IFR_BASIC_IDL_ */