Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / IFR_Client / IFR_Base.pidl
blobb03869b5f53fc0889f5546fb2678155b958fe576
1 // -*- IDL -*-
3 /**
4  * @file IFR_Base.pidl
5  *
6  * This file is used to generate the code in IFR_BaseC.{h,i,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 abstract base interfaces of
10  * the IFR as well as many of the non-interface data types used
11  * by all other IFR interfaces.
12  */
14 #ifndef _IFR_BASE_IDL_
15 #define _IFR_BASE_IDL_
17 #include "tao/orb.idl"
19 module CORBA
21   typeprefix CORBA "omg.org";
23   typedef string ScopedName;
25   enum DefinitionKind
26   {
27     dk_none,
28     dk_all,
29     dk_Attribute,
30     dk_Constant,
31     dk_Exception,
32     dk_Interface,
33     dk_Module,
34     dk_Operation,
35     dk_Typedef,
36     dk_Alias,
37     dk_Struct,
38     dk_Union,
39     dk_Enum,
40     dk_Primitive,
41     dk_String,
42     dk_Sequence,
43     dk_Array,
44     dk_Repository,
45     dk_Wstring,
46     dk_Fixed,
47     dk_Value,
48     dk_ValueBox,
49     dk_ValueMember,
50     dk_Native,
51     dk_AbstractInterface,
52     dk_LocalInterface,
53     dk_Component,
54     dk_Home,
55     dk_Factory,
56     dk_Finder,
57     dk_Emits,
58     dk_Publishes,
59     dk_Consumes,
60     dk_Provides,
61     dk_Uses,
62     dk_Event
63   };
65   interface IRObject
66   {
67     // read interface
68     readonly attribute DefinitionKind def_kind;
70     // write interface
71     void destroy ();
72   };
74   typedef string VersionSpec;
76   interface Contained;
77   interface Repository;
78   interface Container;
80   interface Contained : IRObject
81   {
82     // read/write interface
83     attribute RepositoryId id;
84     attribute Identifier name;
85     attribute VersionSpec version;
87     // read interface
88     readonly attribute Container defined_in;
89     readonly attribute ScopedName absolute_name;
90     readonly attribute Repository containing_repository;
92     struct Description
93     {
94       DefinitionKind kind;
95       any value;
96     };
98     Description describe ();
100     // write interface
101     void move (
102         in Container new_container,
103         in Identifier new_name,
104         in VersionSpec new_version);
105   };
107   interface ModuleDef;
108   interface ConstantDef;
109   interface IDLType;
110   interface StructDef;
111   interface UnionDef;
112   interface EnumDef;
113   interface AliasDef;
115   interface InterfaceDef;
116   typedef sequence<InterfaceDef> InterfaceDefSeq;
118   interface ExceptionDef;
119   interface NativeDef;
121   interface ValueDef;
122   typedef sequence<ValueDef> ValueDefSeq;
124   interface ValueBoxDef;
126   interface AbstractInterfaceDef;
127   typedef sequence<AbstractInterfaceDef> AbstractInterfaceDefSeq;
129   interface LocalInterfaceDef;
130   typedef sequence<LocalInterfaceDef> LocalInterfaceDefSeq;
132   interface ExtInterfaceDef;
133   typedef sequence <ExtInterfaceDef> ExtInterfaceDefSeq;
135   interface ExtValueDef;
136   typedef sequence <ExtValueDef> ExtValueDefSeq;
138   interface ExtAbstractInterfaceDef;
139   typedef sequence <ExtAbstractInterfaceDef>
141   ExtAbstractInterfaceDefSeq;
142   interface ExtLocalInterfaceDef;
144   typedef sequence <ExtLocalInterfaceDef>
145   ExtLocalInterfaceDefSeq;
147   typedef sequence <Contained> ContainedSeq;
149   struct StructMember
150   {
151     Identifier name;
152     TypeCode type;
153     IDLType type_def;
154   };
156   typedef sequence <StructMember> StructMemberSeq;
158   struct Initializer
159   {
160     StructMemberSeq members;
161     Identifier name;
162   };
164   typedef sequence <Initializer> InitializerSeq;
166   struct ExceptionDescription
167   {
168     Identifier name;
169     RepositoryId id;
170     RepositoryId defined_in;
171     VersionSpec version;
172     TypeCode type;
173   };
175   typedef sequence <ExceptionDescription> ExcDescriptionSeq;
177   struct ExtInitializer
178   {
179     StructMemberSeq members;
180     ExcDescriptionSeq exceptions;
181     Identifier name;
182   };
184   typedef sequence <ExtInitializer> ExtInitializerSeq;
186   struct UnionMember
187   {
188     Identifier name;
189     any label;
190     TypeCode type;
191     IDLType type_def;
192   };
194   typedef sequence <UnionMember> UnionMemberSeq;
195   typedef sequence <Identifier> EnumMemberSeq;
197   interface Container : IRObject
198   {
199     // read interface
200     Contained lookup (
201         in ScopedName search_name);
202     ContainedSeq contents (
203         in DefinitionKind limit_type,
204         in boolean exclude_inherited);
205     ContainedSeq lookup_name (
206         in Identifier search_name,
207         in long levels_to_search,
208         in DefinitionKind limit_type,
209         in boolean exclude_inherited);
210     struct Description
211     {
212       Contained contained_object;
213       DefinitionKind kind;
214       any value;
215     };
217     typedef sequence<Description> DescriptionSeq;
219     DescriptionSeq describe_contents (
220         in DefinitionKind limit_type,
221         in boolean exclude_inherited,
222         in long max_returned_objs
223       );
225     // write interface
227     ModuleDef create_module (
228         in RepositoryId id,
229         in Identifier name,
230         in VersionSpec version);
232     ConstantDef create_constant (
233         in RepositoryId id,
234         in Identifier name,
235         in VersionSpec version,
236         in IDLType type,
237         in any value);
239     StructDef create_struct (
240         in RepositoryId id,
241         in Identifier name,
242         in VersionSpec version,
243         in StructMemberSeq members);
245     UnionDef create_union (
246         in RepositoryId id,
247         in Identifier name,
248         in VersionSpec version,
249         in IDLType discriminator_type,
250         in UnionMemberSeq members);
252     EnumDef create_enum (
253         in RepositoryId id,
254         in Identifier name,
255         in VersionSpec version,
256         in EnumMemberSeq members);
258     AliasDef create_alias (
259         in RepositoryId id,
260         in Identifier name,
261         in VersionSpec version,
262         in IDLType original_type);
264     InterfaceDef create_interface (
265         in RepositoryId id,
266         in Identifier name,
267         in VersionSpec version,
268         in InterfaceDefSeq base_interfaces);
270     ValueDef create_value (
271         in RepositoryId id,
272         in Identifier name,
273         in VersionSpec version,
274         in boolean is_custom,
275         in boolean is_abstract,
276         in ValueDef base_value,
277         in boolean is_truncatable,
278         in ValueDefSeq abstract_base_values,
279         in InterfaceDefSeq supported_interfaces,
280         in InitializerSeq initializers);
282     ValueBoxDef create_value_box(
283         in RepositoryId id,
284         in Identifier name,
285         in VersionSpec version,
286         in IDLType original_type_def);
288     ExceptionDef create_exception(
289         in RepositoryId id,
290         in Identifier name,
291         in VersionSpec version,
292         in StructMemberSeq members);
294     NativeDef create_native(
295         in RepositoryId id,
296         in Identifier name,
297         in VersionSpec version);
299     AbstractInterfaceDef create_abstract_interface (
300         in RepositoryId id,
301         in Identifier name,
302         in VersionSpec version,
303         in AbstractInterfaceDefSeq base_interfaces);
305     LocalInterfaceDef create_local_interface (
306         in RepositoryId id,
307         in Identifier name,
308         in VersionSpec version,
309         in InterfaceDefSeq base_interfaces);
311     ExtValueDef create_ext_value ( in RepositoryId id,
312                                    in Identifier name,
313                                    in VersionSpec version,
314                                    in boolean is_custom,
315                                    in boolean is_abstract,
316                                    in ValueDef base_value,
317                                    in boolean is_truncatable,
318                                    in ValueDefSeq abstract_base_values,
319                                    in InterfaceDefSeq supported_interfaces,
320                                    in ExtInitializerSeq initializers );
321   };
323   interface IDLType : IRObject
324   {
325     readonly attribute TypeCode type;
326   };
328   interface TypedefDef : Contained, IDLType
329   {
330   };
332   struct TypeDescription
333   {
334     Identifier name;
335     RepositoryId id;
336     RepositoryId defined_in;
337     VersionSpec version;
338     TypeCode type;
339   };
342 #endif /* _IFR_BASE_IDL_ */