Previous Table of Contents Next


10.8 OMG IDL for Interface Repository

   This section contains the complete OMG IDL specification for the Interface Repository.

   module CORBA { typeprefix CORBA “omg.org?; typedef string Identifier; typedef string ScopedName; typedef string RepositoryId;

   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_AbstractInterface, dk_LocalInterface dk_Component, dk_Home, dk_Factory, dk_Finder, dk_Emits, dk_Publishes, dk_Consumes, dk_Provides, dk_Uses, dk_Event

   };

   interface IRObject { // read interface readonly attribute DefinitionKind def_kind; // write interface void destroy ();

   };

   typedef string VersionSpec;

   interface Contained; interface Repository; interface Container;

   interface Contained : IRObject {

   // read/write interface

   attribute RepositoryId id;attribute Identifier name;attribute VersionSpec version;

   // read interface

   readonly attribute Container defined_in;readonly attribute ScopedName absolute_name;readonly attribute Repository containing_repository;

   struct Description {

DefinitionKind kind;

any value;

};

Description describe ();

// write interface

void move (

in Container

in Identifier

in VersionSpec

);

};

interface ModuleDef;

interface ConstantDef;

interface IDLType;

interface StructDef;

interface UnionDef;

interface EnumDef;

interface AliasDef;

interface InterfaceDef;

interface ExceptionDef;

interface NativeDef;

new_container,
new_name,
new_version

   typedef sequence <InterfaceDef> InterfaceDefSeq;interface ValueDef;typedef sequence <ValueDef> ValueDefSeq;interface ValueBoxDef;interface AbstractInterfaceDef;typedef sequence <AbstractInterfaceDef> AbstractInterfaceDefSeq;interface LocalInterfaceDef;typedef sequence <LocalInterfaceDef> LocalInterfaceDefSeq;interface ExtInterfaceDef;typedef sequence <ExtInterfaceDef> ExtInterfaceDefSeq;interface ExtValueDef;typedef sequence <ExtValueDef> ExtValueDefSeq;interface ExtAbstractInterfaceDef;

   typedef sequence <ExtAbstractInterfaceDef>

   ExtAbstractInterfaceDefSeq; interface ExtLocalInterfaceDef; typedef sequence <ExtLocalInterfaceDef>

   ExtLocalInterfaceDefSeq;

   typedef sequence <Contained> ContainedSeq; struct StructMember {

Identifier name;
TypeCode type;
IDLType type_def;
};

   typedef sequence <StructMember> StructMemberSeq;

   struct Initializer { StructMemberSeq members; Identifier name;

   };

   typedef sequence <Initializer> InitializerSeq;

   struct ExceptionDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; TypeCode type;

   };

   typedef sequence <ExceptionDescription> ExcDescriptionSeq;

   struct ExtInitializer { StructMemberSeq members; ExcDescriptionSeq exceptions; Identifier name;

   };

   typedef sequence <ExtInitializer> ExtInitializerSeq;

    struct UnionMember { Identifier name; any label; TypeCode type; IDLType type_def;

   };

   typedef sequence <UnionMember> UnionMemberSeq;

   typedef sequence <Identifier> EnumMemberSeq;

   interface Container : IRObject { // read interface

   Contained lookup ( in ScopedName search_name);

   ContainedSeq contents ( in DefinitionKind limit_type, in boolean exclude_inherited

   );

   ContainedSeq lookup_name ( in Identifier search_name, in long levels_to_search, in DefinitionKind limit_type, in boolean exclude_inherited

   );

   struct Description { Contained contained_object; DefinitionKind kind; any value;

   };

   typedef sequence<Description> DescriptionSeq;

   DescriptionSeq describe_contents ( in DefinitionKind limit_type, in boolean exclude_inherited, in long max_returned_objs

   );

   // write interface

   ModuleDef create_module ( in RepositoryId id, in Identifier name, in VersionSpec version

   );

   ConstantDef create_constant ( in RepositoryId id, in Identifier name, in VersionSpec version, in IDLType type, in any value

   );

   StructDef create_struct ( in RepositoryId id, in Identifier name, in VersionSpec version, in StructMemberSeq members

   ); UnionDef create_union (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in IDLType discriminator_type,

   in UnionMemberSeq members );

   EnumDef create_enum (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in EnumMemberSeq members );

   AliasDef create_alias (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in IDLType original_type );

   InterfaceDef create_interface (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in InterfaceDefSeq base_interfaces, );

   ValueDef create_value(

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in boolean is_custom,

   in boolean is_abstract,

   in ValueDef base_value,

   in boolean is_truncatable,

   in ValueDefSeq abstract_base_values,

   in InterfaceDefSeq supported_interfaces,

   in InitializerSeq initializers );

   ValueBoxDef create_value_box(

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in IDLType original_type_def );

   ExceptionDef create_exception( in RepositoryId id,

in Identifier name,
in VersionSpec version,
in StructMemberSeq members
);
NativeDef create_native(
in RepositoryId id,
in Identifier name,
in VersionSpec version
);

   AbstractInterfaceDef create_abstract_interface (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in AbstractInterfaceDefSeq base_interfaces, );

   LocalInterfaceDef create_local_interface (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in InterfaceDefSeq base_interfaces );

   ExtValueDef create_ext_value (

   in RepositoryId id,

   in Identifier name,

   in VersionSpec version,

   in boolean is_custom,

   in boolean is_abstract,

   in ValueDef base_value,

   in boolean is_truncatable,

   in ValueDefSeq abstract_base_values,

   in InterfaceDefSeq supported_interfaces,

   in ExtInitializerSeq initializers ); };

   interface IDLType : IRObject {

   readonly attribute TypeCode type; };

   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 (

);

ArrayDef create_array ( in unsigned long in IDLType );

};

in unsigned long in IDLType

bound,element_type

length, element_type
FixedDef create_fixed ( in unsigned short in short ); digits, 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 TypedefDef : Contained, IDLType { };

   struct TypeDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; TypeCode type;

   };

   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 FixedDef : IDLType { attribute unsigned short digits; attribute short scale;

   };

   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;

   };

   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; interface ExtAttributeDef : AttributeDef {

ExcDescriptionSeq get_exceptions;
ExcDescriptionSeq put_exceptions;
};

   // read/write interfaceattribute ExcDescriptionSeq get_exceptions;attribute ExcDescriptionSeq set_exceptions;

   // read interface

   ExtAttributeDescription describe_attribute ();

   };

   enum OperationMode {OP_NORMAL, OP_ONEWAY}; 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;typedef sequence <ExceptionDef> ExceptionDefSeq;

   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; interface InterfaceAttrExtension {

RepositoryId id;
RepositoryId defined_in;
VersionSpec version;
RepositoryIdSeq base_interfaces;
};

   // 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 { };

   typedef short Visibility;const Visibility PRIVATE_MEMBER = 0;const Visibility PUBLIC_MEMBER = 1;

   struct ValueMember { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; TypeCode type; IDLType type_def; Visibility access; };

   typedef sequence <ValueMember> ValueMemberSeq;

   interface ValueMemberDef : Contained { readonly attribute TypeCode type; attribute IDLType type_def; attribute Visibility access;

   };

   interface ValueDef : Container, Contained, IDLType { // read/write interface

   attribute InterfaceDefSeq supported_interfaces;attribute InitializerSeq initializers;attribute ValueDef base_value;attribute ValueDefSeq abstract_base_values;attribute boolean is_abstract;attribute boolean is_custom;attribute boolean is_truncatable;

   // read interface

boolean is_a(

in RepositoryId

);

struct FullValueDescription {

Identifier

RepositoryId

boolean

boolean

RepositoryId

VersionSpec

OpDescriptionSeq

AttrDescriptionSeq

ValueMemberSeq

InitializerSeq

RepositoryIdSeq

RepositoryIdSeq

boolean

RepositoryId

TypeCode

};

id
name;
id;
is_abstract;
is_custom;
defined_in;
version;
operations;
attributes;
members;
initializers;
supported_interfaces;
abstract_base_values;
is_truncatable;
base_value;
type;

   FullValueDescription describe_value();

   // write interface

   ValueMemberDef create_value_member( in RepositoryId id, in Identifier name, in VersionSpec version, in IDLType type, in Visibility access

   );

   AttributeDef create_attribute( in RepositoryId id, in Identifier name, in VersionSpec version, in IDLType type, in AttributeMode mode

   );

   OperationDef create_operation (

in RepositoryId

in Identifier

in VersionSpec

in IDLType

in OperationMode

in ParDescriptionSeq

in ExceptionDefSeq

in ContextIdSeq

);

};

struct ValueDescription {

Identifier

RepositoryId

id,

name,
version,
result,
mode,
params,
exceptions,
contexts
name;
id;

   boolean is_abstract; boolean is_custom; RepositoryId defined_in; VersionSpec version; RepositoryIdSeq supported_interfaces; RepositoryIdSeq abstract_base_values; boolean is_truncatable; RepositoryId base_value;

   };

   interface ExtValueDef : ValueDef {

   // read/write interfaceattribute ExtInitializerSeq ext_initializers;

   // read interface

   struct ExtFullValueDescription { Identifier name; RepositoryId id; boolean is_abstract; boolean is_custom; RepositoryId defined_in; ExtFullValueDescription describe_ext_value ();

VersionSpec version;
OpDescriptionSeq operations;
ExtAttrDescriptionSeq attributes;
ValueMemberSeq members;
ExtInitializerSeq initializers;
RepositoryIdSeq supported_interfaces;
RepositoryIdSeq abstract_base_values;
boolean is_truncatable;
RepositoryId base_value;
TypeCode type;
};

   // 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 ValueBoxDef : TypedefDef { attribute IDLType original_type_def; };

   interface AbstractInterfaceDef : InterfaceDef { };

   interface ExtAbstractInterfaceDef : AbstractInterfaceDef, InterfaceAttrExtension { };

   interface LocalInterfaceDef : InterfaceDef { };

   interface ExtLocalInterfaceDef : LocalInterfaceDef, InterfaceAttrExtension { };

   // __________________________________________________________

   module ComponentIR { typeprefix ComponentIR “omg.org?;

   interface ComponentDef; interface HomeDef; interface EventDef : ExtValueDef {};

   interface Container{ ComponentDef create_component (

in RepositoryId id,
in Identifier name,
in VersionSpec version,

   in ComponentDef base_component, in InterfaceDefSeq supports_interfaces );

   HomeDef create_home ( in RepositoryId id, in Identifier name, in VersionSpec version, in HomeDef base_home, in ComponentDef managed_component, in InterfaceDefSeq supports_interfaces, in ValueDef primary_key

   );

   EventDef create_event ( in RepositoryId id, in Identifier name, in VersionSpec version, in boolean is_custom, in boolean is_abstract, in ValueDef base_value, in boolean is_truncatable, in ValueDefSeq abstract_base_values, in InterfaceDefSeq supported_interfaces, in ExtInitializerSeq initializers

   ); };

   interface ModuleDef : CORBA::ModuleDef, Container{};

   interface Repository : CORBA::Repository, Container{};

   interface ProvidesDef : Contained { attribute InterfaceDef interface_type; };

   struct ProvidesDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; RepositoryId interface_type;

   };

   interface UsesDef : Contained { attribute InterfaceDef interface_type; attribute boolean is_multiple;

   };

   struct UsesDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; RepositoryId interface_type; boolean is_multiple;

   };

   interface EventPortDef : Contained {

   // read/write interface

   attribute EventDef event;

   // read interface

   boolean is_a (in RepositoryId event_id);

   };

   struct EventPortDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; RepositoryId event;

   };

   interface EmitsDef : EventPortDef {};

   interface PublishesDef : EventPortDef {};

   interface ConsumesDef : EventPortDef {};

   interface ComponentDef : ExtInterfaceDef {

   // read/write interfaceattribute ComponentDef base_component;attribute InterfaceDefSeq supported_interfaces;

   // write interfaceProvidesDef create_provides (

in RepositoryId id,
in Identifier name,
in VersionSpec version,
in InterfaceDef interface_type
);

   UsesDef create_uses (in RepositoryId id,in Identifier name,in VersionSpec version,in InterfaceDef interface_type,in boolean is_multiple

   );

   EmitsDef create_emits (in RepositoryId id,in Identifier name,in VersionSpec version,in EventDef event

   );

   PublishesDef create_publishes (in RepositoryId id,in Identifier name,in VersionSpec version,in EventDef event

   );

   ConsumesDef create_consumes (in RepositoryId id,in Identifier name,in VersionSpec version,in EventDef event

   ); };

   typedef sequence<ProvidesDescription>

   ProvidesDescriptionSeq; typedef sequence<UsesDescription> UsesDescriptionSeq; typedef sequence<EventPortDescription>

   EventPortDescriptionSeq;

   struct ComponentDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; RepositoryId base_component; RepositoryIdSeq supported_interfaces; ProvidesDescriptionSeq provided_interfaces; UsesDescriptionSeq used_interfaces; EventPortDescriptionSeq emits_events; EventPortDescriptionSeq publishes_events; EventPortDescriptionSeq consumes_events; ExtAttrDescriptionSeq attributes; TypeCode type;

   }; interface FactoryDef : OperationDef {};

   interface FinderDef : OperationDef {};

   interface HomeDef : ExtInterfaceDef {

   // read/write interfaceattribute HomeDef base_home;attribute InterfaceDefSeq supported_interfaces;attribute ComponentDef managed_component;attribute ValueDef primary_key;

   // write interface

   FactoryDef create_factory ( in RepositoryId id, in Identifier name, in VersionSpec version, in ParDescriptionSeq params, in ExceptionDefSeq exceptions

   );

   FinderDef create_finder ( in RepositoryId id, in Identifier name, in VersionSpec version, in ParDescriptionSeq params, in ExceptionDefSeq exceptions

   );};

   struct HomeDescription { Identifier name; RepositoryId id; RepositoryId defined_in; VersionSpec version; RepositoryId base_home; RepositoryId managed_component; ValueDescription primary_key; OpDescriptionSeq factories; OpDescriptionSeq finders; OpDescriptionSeq operations; ExtAttrDescriptionSeq attributes; TypeCode type;

   }; }; };