summaryrefslogtreecommitdiff
path: root/TAO/tao/IFR_Client/IFR_Basic.pidl
blob: 01d2521ea489aa329648001d7ed83bf4b2e44f5f (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
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
 // -*- IDL -*-

/**
 * @file IFR_Basic.pidl
 *
 * $Id$
 *
 * This file was used to generate the code in IFR_BasicC.{h,inl,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 the concrete base interfaces of
 * the IFR, except for fixed types, valuetypes and CORBA components.
 *
 * The command used to generate code from this IDL file is:
 *
 *     tao_idl -Ge 1 -Sc -I../.. \
 *          -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" \
 *          -Wb,versioning_begin=TAO_BEGIN_VERSIONED_NAMESPACE_DECL \
 *          -Wb,versioning_end=TAO_END_VERSIONED_NAMESPACE_DECL \
 *          IFR_Basic.pidl
 *
 *   Only the stub files are used in the TAO_IFR_Client library. The
 *   skeleton files can be deleted from this directory.
 *
 *   No patching of the generated stub files is necessary.
 *
 *   To generate the skeleton files for the IFR Service, the command is:
 *
 *     tao_idl -o ../../orbsvcs/orbsvcs/IFRService -Ge 1 \
 *          -Wb,pre_include="ace/pre.h" \
 *          -Wb,post_include="ace/post.h" \
 *          IFR_Basic.pidl
 *
 *   The only modification necessary to the skeleton files is to
 *   change
 *
 *   #include "IFR_BasicC.h"
 *
 *   to
 *
 *   #include "tao/IFR_Client/IFR_BasicC.h"
 *
 *   in IFR_BasicS.h. The stub files may be deleted from the IFRService
 *   directory.
 */

#ifndef _IFR_BASIC_IDL_
#define _IFR_BASIC_IDL_

#include "tao/IFR_Client/IFR_Base.pidl"
#include "ParameterMode.pidl"

module CORBA
{
  typeprefix CORBA "omg.org";

  interface PrimitiveDef;
  interface StringDef;
  interface SequenceDef;
  interface ArrayDef;
  interface WstringDef;
  interface FixedDef;

  enum PrimitiveKind
  {
    pk_null,
    pk_void,
    pk_short,
    pk_long,
    pk_ushort,
    pk_ulong,
    pk_float,
    pk_double,
    pk_boolean,
    pk_char,
    pk_octet,
    pk_any,
    pk_TypeCode,
    pk_Principal,
    pk_string,
    pk_objref,
    pk_longlong,
    pk_ulonglong,
    pk_longdouble,
    pk_wchar,
    pk_wstring,
    pk_value_base
  };

  interface Repository : Container
  {
    // read interface
    Contained lookup_id (
        in RepositoryId search_id
      );
    TypeCode get_canonical_typecode (
        in TypeCode tc
      );
    PrimitiveDef get_primitive (
        in PrimitiveKind kind
      );
    // write interface
    StringDef create_string (
        in unsigned long bound
      );
    WstringDef create_wstring (
        in unsigned long bound
      );
    SequenceDef create_sequence (
        in unsigned long bound,
        in IDLType element_type
      );
    ArrayDef create_array (
        in unsigned long length,
        in IDLType element_type
      );
    FixedDef create_fixed (
        in unsigned short digits,
        in short scale
      );
  };

  interface ModuleDef : Container, Contained
  {
  };

  struct ModuleDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
  };

  interface ConstantDef : Contained
  {
    readonly attribute TypeCode type;
    attribute IDLType type_def;
    attribute any value;
  };

  struct ConstantDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    TypeCode type;
    any value;
  };

  interface StructDef : TypedefDef, Container
  {
    attribute StructMemberSeq members;
  };

  interface UnionDef : TypedefDef, Container
  {
    readonly attribute TypeCode discriminator_type;
    attribute IDLType discriminator_type_def;
    attribute UnionMemberSeq members;
  };

  interface EnumDef : TypedefDef
  {
    attribute EnumMemberSeq members;
  };

  interface AliasDef : TypedefDef
  {
    attribute IDLType original_type_def;
  };

  interface NativeDef : TypedefDef
  {
  };

  interface PrimitiveDef: IDLType
  {
    readonly attribute PrimitiveKind kind;
  };

  interface StringDef : IDLType
  {
    attribute unsigned long bound;
  };

  interface WstringDef : IDLType
  {
    attribute unsigned long bound;
  };

  interface SequenceDef : IDLType
  {
    attribute unsigned long bound;
    readonly attribute TypeCode element_type;
    attribute IDLType element_type_def;
  };

  interface ArrayDef : IDLType
  {
  attribute unsigned long length;
  readonly attribute TypeCode element_type;
  attribute IDLType element_type_def;
  };

  interface ExceptionDef : Contained, Container
  {
    readonly attribute TypeCode type;
    attribute StructMemberSeq members;
  };

  typedef sequence <ExceptionDef> ExceptionDefSeq;

  enum AttributeMode
  {
    ATTR_NORMAL,
    ATTR_READONLY
  };

  interface AttributeDef : Contained
  {
    readonly attribute TypeCode type;
    attribute IDLType type_def;
    attribute AttributeMode mode;
  };

  struct AttributeDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    TypeCode type;
    AttributeMode mode;
  };

  struct ExtAttributeDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    TypeCode type;
    AttributeMode mode;
    ExcDescriptionSeq get_exceptions;
    ExcDescriptionSeq put_exceptions;
  };

  interface ExtAttributeDef : AttributeDef
  {
    // read/write interface
    attribute ExcDescriptionSeq get_exceptions;
    attribute ExcDescriptionSeq set_exceptions;
    // read interface
    ExtAttributeDescription describe_attribute ();
  };

  enum OperationMode
  {
    OP_NORMAL,
    OP_ONEWAY
  };

// Already defined in corbafwd.h, included from orb.idl
/*
  enum ParameterMode
  {
    PARAM_IN,
    PARAM_OUT,
    PARAM_INOUT
  };
*/
  struct ParameterDescription
  {
    Identifier name;
    TypeCode type;
    IDLType type_def;
    ParameterMode mode;
  };

  typedef sequence <ParameterDescription> ParDescriptionSeq;
  typedef Identifier ContextIdentifier;
  typedef sequence <ContextIdentifier> ContextIdSeq;

  interface OperationDef : Contained
  {
    readonly attribute TypeCode result;
    attribute IDLType result_def;
    attribute ParDescriptionSeq params;
    attribute OperationMode mode;
    attribute ContextIdSeq contexts;
    attribute ExceptionDefSeq exceptions;
  };

  struct OperationDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    TypeCode result;
    OperationMode mode;
    ContextIdSeq contexts;
    ParDescriptionSeq parameters;
    ExcDescriptionSeq exceptions;
  };

  typedef sequence <RepositoryId> RepositoryIdSeq;
  typedef sequence <OperationDescription> OpDescriptionSeq;
  typedef sequence <AttributeDescription> AttrDescriptionSeq;
  typedef sequence <ExtAttributeDescription> ExtAttrDescriptionSeq;

  interface InterfaceDef : Container,
			   Contained,
			   IDLType
  {
    // read/write interface
    attribute InterfaceDefSeq base_interfaces;
    // read interface
    boolean is_a (
        in RepositoryId interface_id
      );

    struct FullInterfaceDescription
    {
      Identifier name;
      RepositoryId id;
      RepositoryId defined_in;
      VersionSpec version;
      OpDescriptionSeq operations;
      AttrDescriptionSeq attributes;
      RepositoryIdSeq base_interfaces;
      TypeCode type;
    };

    FullInterfaceDescription describe_interface ();

    // write interface
    AttributeDef create_attribute (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in IDLType type,
        in AttributeMode mode
      );
    OperationDef create_operation (
        in RepositoryId id,
        in Identifier name,
        in VersionSpec version,
        in IDLType result,
        in OperationMode mode,
        in ParDescriptionSeq params,
        in ExceptionDefSeq exceptions,
        in ContextIdSeq contexts
      );
  };

  struct InterfaceDescription
  {
    Identifier name;
    RepositoryId id;
    RepositoryId defined_in;
    VersionSpec version;
    RepositoryIdSeq base_interfaces;
  };

  interface InterfaceAttrExtension
  {
    // read interface
    struct ExtFullInterfaceDescription
    {
      Identifier name;
      RepositoryId id;
      RepositoryId defined_in;
      VersionSpec version;
      OpDescriptionSeq operations;
      ExtAttrDescriptionSeq attributes;
      RepositoryIdSeq base_interfaces;
      TypeCode type;
    };

    ExtFullInterfaceDescription describe_ext_interface ();

    // write interface
    ExtAttributeDef create_ext_attribute (
	in RepositoryId id,
	in Identifier name,
	in VersionSpec version,
	in IDLType type,
	in AttributeMode mode,
	in ExceptionDefSeq get_exceptions,
	in ExceptionDefSeq set_exceptions
      );
  };

  interface ExtInterfaceDef : InterfaceDef,
			      InterfaceAttrExtension
  {
  };

  interface AbstractInterfaceDef : InterfaceDef
  {
  };

  interface ExtAbstractInterfaceDef : AbstractInterfaceDef,
				      InterfaceAttrExtension
  {
  };

  interface LocalInterfaceDef : InterfaceDef
  {
  };

  interface ExtLocalInterfaceDef : LocalInterfaceDef,
				   InterfaceAttrExtension
  {
  };
};

#endif /* _IFR_BASIC_IDL_ */