summaryrefslogtreecommitdiff
path: root/TAO/tao/IFR_Client/IFR_Components.pidl
blob: aee440cf9629923bcb870ab669eda8e718290e12 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
//
// $Id$
//
// ================================================================
//
// = LIBRARY
//   TAO_IFR_Client
//
// = FILENAME
//   IFR_Components.pidl
//
// = DESCRIPTION
//   This file was used to generate the code in IFR_ComponentsC.{h,i,cpp}.
//   The original file Interface.idl was split into four pieces, to
//   keep the generated files to a manageable size and reduce build
//   time. This IDL file contains all the interfaces and other data
//   types related to CORBA components.
//
//   The command used to generate code from this IDL file is:
//
//     tao_idl -o orig -Ge 1 \
//          -Wb,export_macro=TAO_IFR_Client_Export \
//          -Wb,export_include=ifr_client_export.h \
//          -Wb,pre_include="ace/pre.h" \
//          -Wb,post_include="ace/post.h" \
//          IFR_Components.pidl
//
//   To regenerate the skeleton files IFR_ComponentsS.{h,i,cpp} and 
//   IFR_ComponentsS_T.{h,i.cpp} in ACE_ROOT/TAO/orbsvcs/IFR_Service,
//   use the command
//
//     tao_idl -o ../../orbsvcs/IFR_Service/orig -Ge 1 \
//          -Wb,pre_include="ace/pre.h" \
//          -Wb,post_include="ace/post.h" \
//          IFR_Components.pidl
//
// ================================================================

#ifndef _IFR_COMPONENTS_IDL_
#define _IFR_COMPONENTS_IDL_

#include "IFR_Extended.pidl"

#pragma prefix "omg.org"

module IR
{
  enum DefinitionKind 
  {
    dk_none, 
    dk_all,
    dk_Attribute, 
    dk_Constant, 
    dk_Exception, 
    dk_Interface,
    dk_Module, 
    dk_Operation, 
    dk_Typedef,
    dk_Alias, 
    dk_Struct, 
    dk_Union, 
    dk_Enum,
    dk_Primitive, 
    dk_String, 
    dk_Sequence, 
    dk_Array,
    dk_Repository,
    dk_Wstring, 
    dk_Fixed,
    dk_Value, 
    dk_ValueBox, 
    dk_ValueMember,
    dk_Native,
    dk_Component,
    dk_Home,
    dk_Factory,
    dk_Finder,
    dk_PrimaryKey,
    dk_Emits,
    dk_Publishes,
    dk_Consumes,
    dk_Provides,
    dk_Uses
  };

  typedef string Identifier;
  typedef string ScopedName;
  typedef string RepositoryId;
  typedef sequence<RepositoryId> RepositoryIdSeq;
  typedef string VersionSpec;

  interface ComponentDef;
  typedef sequence <ComponentDef> ComponentDefSeq;
  interface ProvidesDef;
  typedef sequence <ProvidesDef> ProvidesDefSeq;
  interface UsesDef;
  typedef sequence <UsesDef> UsesDefSeq;
  interface HomeDef;
  typedef sequence <HomeDef> HomeDefSeq;
  interface EventDef;
  interface EmitsDef;
  typedef sequence <EmitsDef> EmitsDefSeq;
  interface PublishesDef;
  typedef sequence <PublishesDef> PublishesDefSeq;
  interface ConsumesDef;
  typedef sequence <ConsumesDef> ConsumesDefSeq;
  interface FactoryDef;
  typedef sequence <FactoryDef> FactoryDefSeq;
  interface FinderDef;
  typedef sequence <FinderDef> FinderDefSeq;
  interface PrimaryKeyDef;

  interface ComponentRepository : CORBA::Repository
  {
    ComponentDef create_component (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in ComponentDef base_component,
        in CORBA::InterfaceDefSeq supports_interfaces
      );
    HomeDef create_home (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in HomeDef base_home,
        in ComponentDef managed_component,
        in CORBA::ValueDef primary_key
      );
  };

  interface ProvidesDef : CORBA::Contained 
  {
    // read interface
    readonly attribute CORBA::InterfaceDef interface_type;
  };

  struct ProvidesDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    CORBA::InterfaceDef interface_type;
  };

  interface UsesDef : CORBA::Contained 
  {
    // read interface
    readonly attribute CORBA::InterfaceDef interface_type;
    readonly attribute boolean is_multiple;
  };

  struct UsesDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    CORBA::InterfaceDef interface_type;
    boolean is_multiple;
  };

  typedef sequence <ProvidesDescription> ProvidesDescSeq;
  typedef sequence <UsesDescription> UsesDescSeq;

  interface EventDef : CORBA::Contained 
  { // abstract - never instantiated
    // read interface
    boolean is_a (in RepositoryId event_id);
    readonly attribute CORBA::ValueDef event;
  };

  struct EventDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    CORBA::ValueDef value;
  };

  interface EmitsDef : EventDef 
  {
  };

  interface PublishesDef : EventDef 
  {
  };

  interface ConsumesDef : EventDef 
  {
  };

  interface ComponentDef : CORBA::InterfaceDef 
  {
    // read/write interface
    attribute CORBA::InterfaceDefSeq supported_interfaces;
    // read interface
    readonly attribute ComponentDef base_component;
    readonly attribute ProvidesDefSeq provides_interfaces;
    readonly attribute UsesDefSeq uses_interfaces;
    readonly attribute EmitsDefSeq emits_events;
    readonly attribute PublishesDefSeq publishes_events;
    readonly attribute ConsumesDefSeq consumes_events;
    readonly attribute boolean is_basic;
    // write interface
    ProvidesDef create_provides (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::InterfaceDef interface_type
      );
    UsesDef create_uses (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::InterfaceDef interface_type,
        in boolean is_multiple
      );
    EmitsDef create_emits (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ValueDef value
      );
    PublishesDef create_publishes (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ValueDef value
      );
    ConsumesDef create_consumes (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ValueDef value
      );
  };

  struct ComponentDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    RepositoryId base_component;
    RepositoryIdSeq supports_interfaces;
    ProvidesDefSeq provides_interfaces;
    UsesDefSeq uses_interfaces;
    CORBA::AttrDescriptionSeq attributes;
    EmitsDefSeq emits_events;
    PublishesDefSeq publishes_events;
    ConsumesDefSeq consumes_events;
    boolean is_basic;
  };

  interface PrimaryKeyDef : CORBA::Contained 
  {
    // read interface
    boolean is_a (in RepositoryId primary_key_id);
    readonly attribute CORBA::ValueDef primary_key;
  };

  struct PrimaryKeyDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    CORBA::ValueDef primary_key;
  };

  interface FactoryDef : CORBA::OperationDef 
  { // only PARAM_IN parameters
  };

  interface FinderDef : CORBA::OperationDef 
  { // only PARAM_IN parameters
  };

  interface HomeDef : CORBA::InterfaceDef 
  {
    // read operations
    readonly attribute HomeDef base_home;
    readonly attribute ComponentDef managed_component;
    readonly attribute PrimaryKeyDef primary_key;
    readonly attribute FactoryDefSeq factories;
    readonly attribute FinderDefSeq finders;
    readonly attribute boolean is_basic;
    // write interfaces
    PrimaryKeyDef create_primary_key (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ValueDef primary_key
      );
    FactoryDef create_factory (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ParDescriptionSeq params, // only PARAM_INs
        in CORBA::ExceptionDefSeq exceptions
      );
    FinderDef create_finder (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in CORBA::ParDescriptionSeq params, // only PARAM_INs
        in CORBA::ExceptionDefSeq exceptions
      );
  };

  struct HomeDescription 
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    RepositoryId base_home;
    RepositoryId managed_component;
    PrimaryKeyDef primary_key_def;
    FactoryDefSeq factories;
    FinderDefSeq finders;
    CORBA::OpDescriptionSeq operations;
    CORBA::AttrDescriptionSeq attributes;
    boolean is_basic;
  };
};

#pragma prefix ""

#endif /* _IFR_COMPONENTS_IDL_ */