00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 #ifndef _IFR_BASE_IDL_
00053 #define _IFR_BASE_IDL_
00054
00055 #include "tao/orb_types.pidl"
00056 #include "tao/Typecode_types.pidl"
00057
00058 module CORBA
00059 {
00060 typeprefix CORBA "omg.org";
00061
00062 typedef string ScopedName;
00063
00064 enum DefinitionKind
00065 {
00066 dk_none,
00067 dk_all,
00068 dk_Attribute,
00069 dk_Constant,
00070 dk_Exception,
00071 dk_Interface,
00072 dk_Module,
00073 dk_Operation,
00074 dk_Typedef,
00075 dk_Alias,
00076 dk_Struct,
00077 dk_Union,
00078 dk_Enum,
00079 dk_Primitive,
00080 dk_String,
00081 dk_Sequence,
00082 dk_Array,
00083 dk_Repository,
00084 dk_Wstring,
00085 dk_Fixed,
00086 dk_Value,
00087 dk_ValueBox,
00088 dk_ValueMember,
00089 dk_Native,
00090 dk_AbstractInterface,
00091 dk_LocalInterface,
00092 dk_Component,
00093 dk_Home,
00094 dk_Factory,
00095 dk_Finder,
00096 dk_Emits,
00097 dk_Publishes,
00098 dk_Consumes,
00099 dk_Provides,
00100 dk_Uses,
00101 dk_Event
00102 };
00103
00104 interface IRObject
00105 {
00106
00107 readonly attribute DefinitionKind def_kind;
00108
00109
00110 void destroy ();
00111 };
00112
00113 typedef string VersionSpec;
00114
00115 interface Contained;
00116 interface Repository;
00117 interface Container;
00118
00119 interface Contained : IRObject
00120 {
00121
00122 attribute RepositoryId id;
00123 attribute Identifier name;
00124 attribute VersionSpec version;
00125
00126
00127 readonly attribute Container defined_in;
00128 readonly attribute ScopedName absolute_name;
00129 readonly attribute Repository containing_repository;
00130
00131 struct Description
00132 {
00133 DefinitionKind kind;
00134 any value;
00135 };
00136
00137 Description describe ();
00138
00139
00140 void move (
00141 in Container new_container,
00142 in Identifier new_name,
00143 in VersionSpec new_version
00144 );
00145 };
00146
00147 interface ModuleDef;
00148 interface ConstantDef;
00149 interface IDLType;
00150 interface StructDef;
00151 interface UnionDef;
00152 interface EnumDef;
00153 interface AliasDef;
00154
00155 interface InterfaceDef;
00156 typedef sequence<InterfaceDef> InterfaceDefSeq;
00157
00158 interface ExceptionDef;
00159 interface NativeDef;
00160
00161 interface ValueDef;
00162 typedef sequence<ValueDef> ValueDefSeq;
00163
00164 interface ValueBoxDef;
00165
00166 interface AbstractInterfaceDef;
00167 typedef sequence<AbstractInterfaceDef> AbstractInterfaceDefSeq;
00168
00169 interface LocalInterfaceDef;
00170 typedef sequence<LocalInterfaceDef> LocalInterfaceDefSeq;
00171
00172 interface ExtInterfaceDef;
00173 typedef sequence <ExtInterfaceDef> ExtInterfaceDefSeq;
00174
00175 interface ExtValueDef;
00176 typedef sequence <ExtValueDef> ExtValueDefSeq;
00177
00178 interface ExtAbstractInterfaceDef;
00179 typedef sequence <ExtAbstractInterfaceDef>
00180
00181 ExtAbstractInterfaceDefSeq;
00182 interface ExtLocalInterfaceDef;
00183
00184 typedef sequence <ExtLocalInterfaceDef>
00185 ExtLocalInterfaceDefSeq;
00186
00187 typedef sequence <Contained> ContainedSeq;
00188
00189 struct StructMember
00190 {
00191 Identifier name;
00192 TypeCode type;
00193 IDLType type_def;
00194 };
00195
00196 typedef sequence <StructMember> StructMemberSeq;
00197
00198 struct Initializer
00199 {
00200 StructMemberSeq members;
00201 Identifier name;
00202 };
00203
00204 typedef sequence <Initializer> InitializerSeq;
00205
00206 struct ExceptionDescription
00207 {
00208 Identifier name;
00209 RepositoryId id;
00210 RepositoryId defined_in;
00211 VersionSpec version;
00212 TypeCode type;
00213 };
00214
00215 typedef sequence <ExceptionDescription> ExcDescriptionSeq;
00216
00217 struct ExtInitializer
00218 {
00219 StructMemberSeq members;
00220 ExcDescriptionSeq exceptions;
00221 Identifier name;
00222 };
00223
00224 typedef sequence <ExtInitializer> ExtInitializerSeq;
00225
00226 struct UnionMember
00227 {
00228 Identifier name;
00229 any label;
00230 TypeCode type;
00231 IDLType type_def;
00232 };
00233
00234 typedef sequence <UnionMember> UnionMemberSeq;
00235 typedef sequence <Identifier> EnumMemberSeq;
00236
00237 interface Container : IRObject
00238 {
00239
00240 Contained lookup (
00241 in ScopedName search_name
00242 );
00243 ContainedSeq contents (
00244 in DefinitionKind limit_type,
00245 in boolean exclude_inherited
00246 );
00247 ContainedSeq lookup_name (
00248 in Identifier search_name,
00249 in long levels_to_search,
00250 in DefinitionKind limit_type,
00251 in boolean exclude_inherited
00252 );
00253 struct Description
00254 {
00255 Contained contained_object;
00256 DefinitionKind kind;
00257 any value;
00258 };
00259
00260 typedef sequence<Description> DescriptionSeq;
00261
00262 DescriptionSeq describe_contents (
00263 in DefinitionKind limit_type,
00264 in boolean exclude_inherited,
00265 in long max_returned_objs
00266 );
00267
00268
00269
00270 ModuleDef create_module (
00271 in RepositoryId id,
00272 in Identifier name,
00273 in VersionSpec version
00274 );
00275
00276 ConstantDef create_constant (
00277 in RepositoryId id,
00278 in Identifier name,
00279 in VersionSpec version,
00280 in IDLType type,
00281 in any value
00282 );
00283
00284 StructDef create_struct (
00285 in RepositoryId id,
00286 in Identifier name,
00287 in VersionSpec version,
00288 in StructMemberSeq members
00289 );
00290
00291 UnionDef create_union (
00292 in RepositoryId id,
00293 in Identifier name,
00294 in VersionSpec version,
00295 in IDLType discriminator_type,
00296 in UnionMemberSeq members
00297 );
00298
00299 EnumDef create_enum (
00300 in RepositoryId id,
00301 in Identifier name,
00302 in VersionSpec version,
00303 in EnumMemberSeq members
00304 );
00305
00306 AliasDef create_alias (
00307 in RepositoryId id,
00308 in Identifier name,
00309 in VersionSpec version,
00310 in IDLType original_type
00311 );
00312
00313 InterfaceDef create_interface (
00314 in RepositoryId id,
00315 in Identifier name,
00316 in VersionSpec version,
00317 in InterfaceDefSeq base_interfaces
00318 );
00319
00320 ValueDef create_value (
00321 in RepositoryId id,
00322 in Identifier name,
00323 in VersionSpec version,
00324 in boolean is_custom,
00325 in boolean is_abstract,
00326 in ValueDef base_value,
00327 in boolean is_truncatable,
00328 in ValueDefSeq abstract_base_values,
00329 in InterfaceDefSeq supported_interfaces,
00330 in InitializerSeq initializers
00331 );
00332
00333 ValueBoxDef create_value_box(
00334 in RepositoryId id,
00335 in Identifier name,
00336 in VersionSpec version,
00337 in IDLType original_type_def
00338 );
00339
00340 ExceptionDef create_exception(
00341 in RepositoryId id,
00342 in Identifier name,
00343 in VersionSpec version,
00344 in StructMemberSeq members
00345 );
00346
00347 NativeDef create_native(
00348 in RepositoryId id,
00349 in Identifier name,
00350 in VersionSpec version
00351 );
00352
00353 AbstractInterfaceDef create_abstract_interface (
00354 in RepositoryId id,
00355 in Identifier name,
00356 in VersionSpec version,
00357 in AbstractInterfaceDefSeq base_interfaces
00358 );
00359
00360 LocalInterfaceDef create_local_interface (
00361 in RepositoryId id,
00362 in Identifier name,
00363 in VersionSpec version,
00364 in InterfaceDefSeq base_interfaces
00365 );
00366
00367 ExtValueDef create_ext_value ( in RepositoryId id,
00368 in Identifier name,
00369 in VersionSpec version,
00370 in boolean is_custom,
00371 in boolean is_abstract,
00372 in ValueDef base_value,
00373 in boolean is_truncatable,
00374 in ValueDefSeq abstract_base_values,
00375 in InterfaceDefSeq supported_interfaces,
00376 in ExtInitializerSeq initializers );
00377 };
00378
00379 interface IDLType : IRObject
00380 {
00381 readonly attribute TypeCode type;
00382 };
00383
00384 interface TypedefDef : Contained, IDLType
00385 {
00386 };
00387
00388 struct TypeDescription
00389 {
00390 Identifier name;
00391 RepositoryId id;
00392 RepositoryId defined_in;
00393 VersionSpec version;
00394 TypeCode type;
00395 };
00396 };
00397
00398 #endif