Revert "Minor modernization of DynamicAny code"
[ACE_TAO.git] / TAO / tao / IFR_Client / IFR_Components.pidl
blobec6b9d5107664daf6b85efde0f9424d39c203976
1 // -*- IDL -*-
3 /**
4  * @file IFR_Components.pidl
5  *
6  *   This file is used to generate the code in IFR_ComponentsC.{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 all the interfaces and other data
10  *   types related to CORBA components.
11  */
13 #ifndef _IFR_COMPONENTS_IDL_
14 #define _IFR_COMPONENTS_IDL_
16 #include "tao/IFR_Client/IFR_Extended.pidl"
18 module CORBA
20   typeprefix CORBA "omg.org";
22   module ComponentIR
23   {
24     interface ComponentDef;
25     interface HomeDef;
27     interface EventDef : ExtValueDef
28     {
29     };
31     interface Container : CORBA::Container
32     {
33       ComponentDef create_component ( in RepositoryId id,
34                                       in Identifier name,
35                                       in VersionSpec version,
36                                       in ComponentDef base_component,
37                                       in InterfaceDefSeq supports_interfaces );
39       HomeDef create_home ( in RepositoryId id,
40                             in Identifier name,
41                             in VersionSpec version,
42                             in HomeDef base_home,
43                             in ComponentDef managed_component,
44                             in InterfaceDefSeq supports_interfaces,
45                             in ValueDef primary_key );
47       EventDef create_event ( in RepositoryId id,
48                               in Identifier name,
49                               in VersionSpec version,
50                               in boolean is_custom,
51                               in boolean is_abstract,
52                               in ValueDef base_value,
53                               in boolean is_truncatable,
54                               in ValueDefSeq abstract_base_values,
55                               in InterfaceDefSeq supported_interfaces,
56                               in ExtInitializerSeq initializers );
57     };
59     interface ModuleDef : CORBA::ModuleDef, Container
60     {
61     };
63     interface Repository : CORBA::Repository, Container
64     {
65     };
67     interface ProvidesDef : Contained
68     {
69       attribute InterfaceDef interface_type;
70     };
72     struct ProvidesDescription
73     {
74       Identifier name;
75       RepositoryId id;
76       RepositoryId defined_in;
77       VersionSpec version;
78       RepositoryId interface_type;
79     };
81     interface UsesDef : Contained
82     {
83       attribute InterfaceDef interface_type;
84       attribute boolean is_multiple;
85     };
87     struct UsesDescription
88     {
89       Identifier name;
90       RepositoryId id;
91       RepositoryId defined_in;
92       VersionSpec version;
93       RepositoryId interface_type;
94       boolean is_multiple;
95     };
97     interface EventPortDef : Contained
98     {
99       // read/write interface
100       attribute EventDef event;
101       // read interface
102       boolean is_a (in RepositoryId event_id);
103     };
105     struct EventPortDescription
106     {
107       Identifier name;
108       RepositoryId id;
109       RepositoryId defined_in;
110       VersionSpec version;
111       RepositoryId event;
112     };
114     interface EmitsDef : EventPortDef
115     {
116     };
118     interface PublishesDef : EventPortDef
119     {
120     };
122     interface ConsumesDef : EventPortDef
123     {
124     };
126     interface ComponentDef : ExtInterfaceDef
127     {
128       // read/write interface
129       attribute ComponentDef base_component;
130       attribute InterfaceDefSeq supported_interfaces;
132       // write interface
133       ProvidesDef create_provides ( in RepositoryId id,
134                                     in Identifier name,
135                                     in VersionSpec version,
136                                     in InterfaceDef interface_type );
138       UsesDef create_uses ( in RepositoryId id,
139                             in Identifier name,
140                             in VersionSpec version,
141                             in InterfaceDef interface_type,
142                             in boolean is_multiple );
144       EmitsDef create_emits ( in RepositoryId id,
145                               in Identifier name,
146                               in VersionSpec version,
147                               in EventDef event );
149       PublishesDef create_publishes ( in RepositoryId id,
150                                       in Identifier name,
151                                       in VersionSpec version,
152                                       in EventDef event );
154       ConsumesDef create_consumes ( in RepositoryId id,
155                                     in Identifier name,
156                                     in VersionSpec version,
157                                     in EventDef event );
158     };
160     typedef sequence<ProvidesDescription> ProvidesDescriptionSeq;
161     typedef sequence<UsesDescription> UsesDescriptionSeq;
162     typedef sequence<EventPortDescription> EventPortDescriptionSeq;
164     struct ComponentDescription
165     {
166       Identifier name;
167       RepositoryId id;
168       RepositoryId defined_in;
169       VersionSpec version;
170       RepositoryId base_component;
171       RepositoryIdSeq supported_interfaces;
172       ProvidesDescriptionSeq provided_interfaces;
173       UsesDescriptionSeq used_interfaces;
174       EventPortDescriptionSeq emits_events;
175       EventPortDescriptionSeq publishes_events;
176       EventPortDescriptionSeq consumes_events;
177       ExtAttrDescriptionSeq attributes;
178       TypeCode type;
179     };
181     interface FactoryDef : OperationDef
182     {
183     };
185     interface FinderDef : OperationDef
186     {
187     };
189     interface HomeDef : ExtInterfaceDef
190     {
191       // read/write interface
192       attribute HomeDef base_home;
193       attribute InterfaceDefSeq supported_interfaces;
194       attribute ComponentDef managed_component;
195       attribute ValueDef primary_key;
197       // write interface
198       FactoryDef create_factory ( in RepositoryId id,
199                                   in Identifier name,
200                                   in VersionSpec version,
201                                   in ParDescriptionSeq params,
202                                   in ExceptionDefSeq exceptions );
204       FinderDef create_finder ( in RepositoryId id,
205                                 in Identifier name,
206                                 in VersionSpec version,
207                                 in ParDescriptionSeq params,
208                                 in ExceptionDefSeq exceptions );
209     };
211     struct HomeDescription
212     {
213       Identifier name;
214       RepositoryId id;
215       RepositoryId defined_in;
216       VersionSpec version;
217       RepositoryId base_home;
218       RepositoryId managed_component;
219       ValueDescription primary_key;
220       OpDescriptionSeq factories;
221       OpDescriptionSeq finders;
222       OpDescriptionSeq operations;
223       ExtAttrDescriptionSeq attributes;
224       TypeCode type;
225     };
226   };
229 #endif /* _IFR_COMPONENTS_IDL_ */