summaryrefslogtreecommitdiff
path: root/TAO/tao/Interface.pidl
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/tao/Interface.pidl')
-rw-r--r--TAO/tao/Interface.pidl1504
1 files changed, 981 insertions, 523 deletions
diff --git a/TAO/tao/Interface.pidl b/TAO/tao/Interface.pidl
index e338817b36d..9d0765b7610 100644
--- a/TAO/tao/Interface.pidl
+++ b/TAO/tao/Interface.pidl
@@ -1,589 +1,1047 @@
//$Id$
-#pragma prefix "omg.org"
-module CORBA {
- typedef string Identifier;
- typedef string ScopedName;
- typedef string RepositoryId;
+#pragma prefix "omg.org"
+module IR
+{
+ typedef CORBA::Identifier Identifier;
+ typedef CORBA::ScopedName ScopedName;
+ typedef CORBA::RepositoryId 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_Component,
+ dk_Home,
+ dk_Factory,
+ dk_Finder,
+ dk_PrimaryKey,
+ dk_Emits,
+ dk_Publishes,
+ dk_Consumes,
+ dk_Provides,
+ dk_Uses
+ };
-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
- };
-
-interface IRObject {
- // read interface
- readonly attribute DefinitionKind def_kind;
- // write interface
- void destroy ();
- };
-
-typedef string VersionSpec;
+ 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 new_container,
- in Identifier new_name,
- in VersionSpec new_version
- );
- };
-
- interface ModuleDef;
- interface ConstantDef;
- interface IDLType;
- interface StructDef;
- interface UnionDef;
- interface EnumDef;
- interface AliasDef;
- interface InterfaceDef;
- interface ExceptionDef;
- interface NativeDef;
- typedef sequence <InterfaceDef> InterfaceDefSeq;
- interface ValueDef;
- typedef sequence <ValueDef> ValueDefSeq;
- interface ValueBoxDef;
-
- typedef sequence <Contained> ContainedSeq;
-
- struct StructMember {
- Identifier name;
- TypeCode type;
- IDLType type_def;
- };
-
- typedef sequence <StructMember> StructMemberSeq;
- struct Initializer {
- StructMemberSeq members;
- };
- typedef sequence <Initializer> InitializerSeq;
-
- 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 InterfaceDef supported_interface,
- 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
- );
- };
-
-
- interface IDLType : IRObject {
- readonly attribute TypeCode type;
+ interface Contained : CORBA::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 new_container,
+ in Identifier new_name,
+ in VersionSpec new_version
+ );
+ };
+
+ interface ModuleDef;
+ interface ConstantDef;
+ interface IDLType;
+ interface StructDef;
+ interface UnionDef;
+ interface EnumDef;
+ interface AliasDef;
+ interface InterfaceDef;
+ interface ExceptionDef;
+ interface NativeDef;
+ typedef sequence <InterfaceDef> InterfaceDefSeq;
+ interface ValueDef;
+ typedef sequence <ValueDef> ValueDefSeq;
+ interface ValueBoxDef;
+ 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;
+ typedef sequence <Contained> ContainedSeq;
+
+ struct StructMember
+ {
+ Identifier name;
+ CORBA::TypeCode type;
+ IDLType type_def;
+ };
+
+ typedef sequence <StructMember> StructMemberSeq;
+
+ struct Initializer
+ {
+ StructMemberSeq members;
+ Identifier name;
+ };
+
+ typedef sequence <Initializer> InitializerSeq;
+
+ struct UnionMember
+ {
+ Identifier name;
+ any label;
+ CORBA:: TypeCode type;
+ IDLType type_def;
+ };
+
+ typedef sequence <UnionMember> UnionMemberSeq;
+ typedef sequence <Identifier> EnumMemberSeq;
+
+ interface Container : CORBA::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,
+ in boolean is_abstract
+ );
+ 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
+ );
};
+ interface IDLType : CORBA::IRObject
+ {
+ readonly attribute CORBA::TypeCode type;
+ };
interface PrimitiveDef;
interface StringDef;
interface SequenceDef;
interface ArrayDef;
- interface WstringDef;
+ 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
- };
+ 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
+ interface Repository : Container
+ {
+ // read interface
+ Contained lookup_id (
+ in RepositoryId search_id
+ );
+ CORBA::TypeCode get_canonical_typecode (
+ in CORBA::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
+ );
+ };
- Contained lookup_id (in RepositoryId search_id);
+ interface ComponentRepository : Repository
+ {
+ 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 ValueDef primary_key
+ );
+ };
- PrimitiveDef get_primitive (in PrimitiveKind kind);
+ interface ModuleDef : Container, Contained
+ {
+ };
- // write interface
+ struct ModuleDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ };
- StringDef create_string (in unsigned long bound);
+ interface ConstantDef : Contained
+ {
+ readonly attribute CORBA::TypeCode type;
+ attribute IDLType type_def;
+ attribute any value;
+ };
- WstringDef create_wstring (in unsigned long bound);
+ struct ConstantDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode type;
+ any value;
+ };
- SequenceDef create_sequence (
- in unsigned long bound,
- in IDLType element_type
- );
+ interface TypedefDef : Contained, IDLType
+ {
+ };
- ArrayDef create_array (
- in unsigned long length,
- in IDLType element_type
- );
-
- FixedDef create_fixed (
- in unsigned short digits,
- in short scale
- );
- };
+ struct TypeDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode type;
+ };
- interface ModuleDef : Container, Contained {
- };
+ interface StructDef : TypedefDef, Container
+ {
+ attribute StructMemberSeq members;
+ };
- struct ModuleDescription {
- Identifier name;
- RepositoryId id;
- RepositoryId defined_in;
- VersionSpec version;
+ interface UnionDef : TypedefDef, Container
+ {
+ readonly attribute CORBA::TypeCode discriminator_type;
+ attribute IDLType discriminator_type_def;
+ attribute UnionMemberSeq members;
};
+ interface EnumDef : TypedefDef
+ {
+ attribute EnumMemberSeq members;
+ };
- interface ConstantDef : Contained {
- readonly attribute TypeCode type;
- attribute IDLType type_def;
- attribute any value;
- };
+ interface AliasDef : TypedefDef
+ {
+ attribute IDLType original_type_def;
+ };
- struct ConstantDescription {
- Identifier name;
- RepositoryId id;
- RepositoryId defined_in;
- VersionSpec version;
- TypeCode type;
- any value;
- };
+ interface NativeDef : TypedefDef
+ {
+ };
+ interface PrimitiveDef: IDLType
+ {
+ readonly attribute PrimitiveKind kind;
+ };
- interface TypedefDef : Contained, IDLType {
- };
+ interface StringDef : IDLType
+ {
+ attribute unsigned long bound;
+ };
- struct TypeDescription {
- Identifier name;
- RepositoryId id;
- RepositoryId defined_in;
- VersionSpec version;
- TypeCode type;
- };
+ interface WstringDef : IDLType
+ {
+ attribute unsigned long bound;
+ };
+ interface FixedDef : IDLType
+ {
+ attribute unsigned short digits;
+ attribute short scale;
+ };
- interface StructDef : TypedefDef, Container {
- attribute StructMemberSeq members;
- };
+ interface SequenceDef : IDLType
+ {
+ attribute unsigned long bound;
+ readonly attribute CORBA::TypeCode element_type;
+ attribute IDLType element_type_def;
+ };
+ interface ArrayDef : IDLType
+ {
+ attribute unsigned long length;
+ readonly attribute CORBA::TypeCode element_type;
+ attribute IDLType element_type_def;
+ };
+ interface ExceptionDef : Contained, Container
+ {
+ readonly attribute CORBA::TypeCode type;
+ attribute StructMemberSeq members;
+ };
- interface UnionDef : TypedefDef, Container {
- readonly attribute TypeCode discriminator_type;
- attribute IDLType discriminator_type_def;
- attribute UnionMemberSeq members;
- };
+ struct ExceptionDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode type;
+ };
+ typedef sequence <ExceptionDef> ExceptionDefSeq;
+ typedef sequence <ExceptionDescription> ExcDescriptionSeq;
- interface EnumDef : TypedefDef {
- attribute EnumMemberSeq members;
+ enum AttributeMode
+ {
+ ATTR_NORMAL,
+ ATTR_READONLY
};
+ interface AttributeDef : Contained
+ {
+ readonly attribute CORBA::TypeCode type;
+ attribute IDLType type_def;
+ attribute AttributeMode mode;
+ };
- interface AliasDef : TypedefDef {
- attribute IDLType original_type_def;
+ struct AttributeDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode type;
+ AttributeMode mode;
+ ExcDescriptionSeq get_exceptions;
+ ExcDescriptionSeq put_exceptions;
};
+ enum OperationMode
+ {
+ OP_NORMAL,
+ OP_ONEWAY
+ };
- interface PrimitiveDef: IDLType {
- readonly attribute PrimitiveKind kind;
- };
+ enum ParameterMode
+ {
+ PARAM_IN,
+ PARAM_OUT,
+ PARAM_INOUT
+ };
+ struct ParameterDescription
+ {
+ Identifier name;
+ CORBA::TypeCode type;
+ IDLType type_def;
+ ParameterMode mode;
+ };
- interface StringDef : IDLType {
- attribute unsigned long bound;
+ typedef sequence <ParameterDescription> ParDescriptionSeq;
+ typedef Identifier ContextIdentifier;
+ typedef sequence <ContextIdentifier> ContextIdSeq;
+
+ interface OperationDef : Contained
+ {
+ readonly attribute CORBA::TypeCode result;
+ attribute IDLType result_def;
+ attribute ParDescriptionSeq params;
+ attribute OperationMode mode;
+ attribute ContextIdSeq contexts;
+ attribute ExceptionDefSeq exceptions;
};
-interface WstringDef : IDLType {
- attribute unsigned long bound;
- };
+ struct OperationDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode result;
+ OperationMode mode;
+ ContextIdSeq contexts;
+ ParDescriptionSeq parameters;
+ ExcDescriptionSeq exceptions;
+ };
- interface FixedDef : IDLType {
- attribute unsigned short digits;
- attribute short scale;
- };
+ typedef sequence <RepositoryId> RepositoryIdSeq;
+ typedef sequence <OperationDescription> OpDescriptionSeq;
+ typedef sequence <AttributeDescription> AttrDescriptionSeq;
+
+ interface InterfaceDef : Container, Contained, IDLType
+ {
+ // read/write interface
+ attribute InterfaceDefSeq base_interfaces;
+ // read interface
+ attribute boolean is_abstract;
+ attribute boolean is_local;
+ boolean is_a (
+ in RepositoryId interface_id
+ );
+ // write interface
+ AttributeDef create_attribute (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in IDLType type,
+ in AttributeMode mode,
+ in ExceptionDefSeq get_exceptions,
+ in ExceptionDefSeq put_exceptions
+ );
+ 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
+ );
+ };
- interface SequenceDef : IDLType {
- attribute unsigned long bound;
- readonly attribute TypeCode element_type;
- attribute IDLType element_type_def;
+ struct InterfaceDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ OpDescriptionSeq operations;
+ AttrDescriptionSeq attributes;
+ RepositoryIdSeq base_interfaces;
+ CORBA::TypeCode type;
+ boolean is_abstract;
+ boolean is_local;
};
+ struct ValueMember
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ CORBA::TypeCode type;
+ IDLType type_def;
+ CORBA::Visibility access;
+ };
+
+ typedef sequence <ValueMember> ValueMemberSeq;
+
+ interface ValueMemberDef : Contained
+ {
+ readonly attribute CORBA::TypeCode type;
+ attribute IDLType type_def;
+ attribute CORBA::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;
+ // read interface
+ attribute boolean is_abstract;
+ attribute boolean is_custom;
+ attribute boolean is_truncatable;
+ boolean is_a (
+ in RepositoryId id
+ );
+ ValueMemberDef create_value_member (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in IDLType type,
+ in CORBA::Visibility access
+ );
+ AttributeDef create_attribute (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in IDLType type,
+ in AttributeMode mode,
+ in ExceptionDefSeq get_exceptions,
+ in ExceptionDefSeq put_exceptions
+ );
+ 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 ValueDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ boolean is_abstract;
+ boolean is_custom;
+ RepositoryId defined_in;
+ VersionSpec version;
+ OpDescriptionSeq operations;
+ AttrDescriptionSeq attributes;
+ ValueMemberSeq members;
+ InitializerSeq initializers;
+ RepositoryIdSeq supported_interfaces;
+ RepositoryIdSeq abstract_base_values;
+ boolean is_truncatable;
+ RepositoryId base_value;
+ CORBA::TypeCode type;
+ };
+
+ interface ValueBoxDef : TypedefDef
+ {
+ attribute IDLType original_type_def;
+ };
+
+ interface ProvidesDef : Contained
+ {
+ // read interface
+ readonly attribute InterfaceDef interface_type;
+ };
+
+ struct ProvidesDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ InterfaceDef interface_type;
+ };
- interface ArrayDef : IDLType {
- attribute unsigned long length;
- readonly attribute TypeCode element_type;
- attribute IDLType element_type_def;
- };
+ interface UsesDef : Contained
+ {
+ // read interface
+ readonly attribute InterfaceDef interface_type;
+ readonly attribute boolean is_multiple;
+ };
+ struct UsesDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ InterfaceDef interface_type;
+ boolean is_multiple;
+ };
- interface ExceptionDef : Contained, Container {
- readonly attribute TypeCode type;
- attribute StructMemberSeq members;
- };
+ typedef sequence <ProvidesDescription> ProvidesDescSeq;
+ typedef sequence <UsesDescription> UsesDescSeq;
-struct ExceptionDescription {
-Identifier name;
- RepositoryId id;
- RepositoryId defined_in;
- VersionSpec version;
- TypeCode type;
- };
-enum AttributeMode {ATTR_NORMAL, ATTR_READONLY};
+ interface EventDef : Contained
+ { // abstract - never instantiated
+ // read interface
+ boolean is_a (in RepositoryId event_id);
+ readonly attribute ValueDef event;
+ };
- interface AttributeDef : Contained {
- readonly attribute TypeCode type;
- attribute IDLType type_def;
- attribute AttributeMode mode;
- };
+ struct EventDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ ValueDef value;
+ };
- struct AttributeDescription {
- Identifier name;
- RepositoryId id;
- RepositoryId defined_in;
- VersionSpec version;
- TypeCode type;
- AttributeMode mode;
- };
+ interface EmitsDef : EventDef
+ {
+ };
+ interface PublishesDef : EventDef
+ {
+ };
- enum OperationMode {OP_NORMAL, OP_ONEWAY};
+ interface ConsumesDef : EventDef
+ {
+ };
- 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;
- typedef sequence <ExceptionDescription> ExcDescriptionSeq;
-
- 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;
-
-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;
- boolean is_abstract;
- };
-
- 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;
- boolean is_abstract;
- };
-
-
- 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 InterfaceDef supported_interface;
- 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 value_id );
-
- struct FullValueDescription {
- Identifier name;
- RepositoryId id;
- boolean is_abstract;
- boolean is_custom;
- RepositoryId defined_in;
- VersionSpec version;
- OpDescriptionSeq operations;
- AttrDescriptionSeq attributes;
- ValueMemberSeq members;
- InitializerSeq initializers;
- RepositoryIdSeq supported_interfaces;
- RepositoryIdSeq abstract_base_values;
- boolean is_truncatable;
- RepositoryId base_value;
- TypeCode type; };
-
- FullValueDescription describe_value();
-
- 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 id,
- in Identifier name,
+ interface ComponentDef : InterfaceDef
+ {
+ // read/write interface
+ attribute 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 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 ValueDef value
+ );
+ PublishesDef create_publishes (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in ValueDef value
+ );
+ ConsumesDef create_consumes (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in 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;
+ AttrDescriptionSeq attributes;
+ EmitsDefSeq emits_events;
+ PublishesDefSeq publishes_events;
+ ConsumesDefSeq consumes_events;
+ boolean is_basic;
+ };
+
+ interface PrimaryKeyDef : Contained
+ {
+ // read interface
+ boolean is_a (in RepositoryId primary_key_id);
+ readonly attribute ValueDef primary_key;
+ };
+
+ struct PrimaryKeyDescription
+ {
+ Identifier name;
+ RepositoryId id;
+ RepositoryId defined_in;
+ VersionSpec version;
+ ValueDef primary_key;
+ };
+
+ interface FactoryDef : OperationDef
+ { // only PARAM_IN parameters
+ };
+
+ interface FinderDef : OperationDef
+ { // only PARAM_IN parameters
+ };
+
+ interface HomeDef : 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 ValueDef primary_key
+ );
+ FactoryDef create_factory (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in ParDescriptionSeq params, // only PARAM_INs
+ in ExceptionDefSeq exceptions
+ );
+ FinderDef create_finder (
+ in RepositoryId id,
+ in Identifier name,
+ in VersionSpec version,
+ in ParDescriptionSeq params, // only PARAM_INs
+ in 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;
+ OpDescriptionSeq operations;
+ AttrDescriptionSeq attributes;
+ boolean is_basic;
+ };
+};
+
+module CORBA
+{
+ typedef string Identifier;
+ typedef string ScopedName;
+ typedef string RepositoryId;
+
+ interface IRObject
+ {
+ // read interface
+ readonly attribute DefinitionKind def_kind;
+ // write interface
+ void destroy ();
+ };
+
+// This just gets put in corbafwd.h.
+#if 0
+ enum TCKind
+ { // PIDL
+ tk_null, tk_void,
+ tk_short, tk_long, tk_ushort, tk_ulong,
+ tk_float, tk_double, tk_boolean, tk_char,
+ tk_octet, tk_any, tk_TypeCode, tk_Principal, tk_objref,
+ tk_struct, tk_union, tk_enum, tk_string,
+ tk_sequence, tk_array, tk_alias, tk_except,
+ tk_longlong, tk_ulonglong, tk_longdouble,
+ tk_wchar, tk_wstring, tk_fixed,
+ tk_value, tk_value_box,
+ tk_native,
+ tk_abstract_interface,
+ tk_component, tk_home
+ };
+#endif /* 0 */
+
+ typedef short ValueModifier; // PIDL
+ const ValueModifier VM_NONE = 0;
+ const ValueModifier VM_CUSTOM = 1;
+ const ValueModifier VM_ABSTRACT = 2;
+ const ValueModifier VM_TRUNCATABLE = 3;
+ typedef short Visibility;
+ const Visibility PRIVATE_MEMBER = 0;
+ const Visibility PUBLIC_MEMBER = 1;
+
+// Not generated.
+#if 0
+ interface TypeCode
+ { // PIDL
+ exception Bounds {};
+ exception BadKind {};
+ // for all TypeCode kinds
+ boolean equal (in TypeCode tc);
+ boolean equivalent(in TypeCode tc);
+ TypeCode get_compact_typecode();
+ TCKind kind ();
+ // for tk_objref, tk_struct, tk_union, tk_enum, tk_alias,
+ // tk_value, tk_value_box, tk_native, tk_abstract_interface,
+ // tk_except, tk_component, tk_home
+ RepositoryId id () raises (BadKind);
+ // for tk_objref, tk_struct, tk_union, tk_enum, tk_alias,
+ // tk_value, tk_value_box, tk_native, tk_abstract_interface
+ // tk_except, tk_component, tk_home
+ Identifier name () raises (BadKind);
+ // for tk_struct, tk_union, tk_enum, tk_value,
+ // and tk_except
+ unsigned long member_count () raises (BadKind);
+ Identifier member_name (in unsigned long index)
+ raises (BadKind, Bounds);
+ // for tk_struct, tk_union, tk_value, and tk_except
+ TypeCode member_type (in unsigned long index)
+ raises (BadKind, Bounds);
+ // for tk_union
+ any member_label (in unsigned long index)
+ raises (BadKind, Bounds);
+ TypeCode discriminator_type () raises (BadKind);
+ long default_index () raises (BadKind);
+ // for tk_string, tk_sequence, and tk_array
+ unsigned long length () raises (BadKind);
+ // for tk_sequence, tk_array, tk_value_box, and tk_alias
+ TypeCode content_type () raises (BadKind);
+ // for tk_fixed
+ unsigned short fixed_digits() raises (BadKind);
+ short fixed_scale() raises (BadKind);
+ // for tk_value
+ Visibility member_visibility(in unsigned long index)
+ raises(BadKind, Bounds);
+ ValueModifier type_modifier() raises(BadKind);
+ TypeCode concrete_base_type() raises(BadKind);
+ };
+#endif /* 0 */
+
+ // The TypeCode related part of interface ORB moved to
+ // the TypeCodeFactory interface.
+ // A reference to this interface can be obtained from
+ // resolve_initial_references with argument "TypeCodeFactory".
+ interface TypeCodeFactory
+ { // PIDL
+ TypeCode create_struct_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in StructMemberSeq members
+ );
+ TypeCode create_union_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in TypeCode discriminator_type,
+ in UnionMemberSeq members
+ );
+ TypeCode create_enum_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in EnumMemberSeq members
+ );
+ TypeCode create_alias_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in TypeCode original_type
+ );
+ TypeCode create_exception_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in StructMemberSeq members
+ );
+ TypeCode create_interface_tc (
+ in RepositoryId id,
+ in Identifier name
+ );
+ TypeCode create_string_tc (
+ in unsigned long bound
+ );
+ TypeCode create_wstring_tc (
+ in unsigned long bound
+ );
+ TypeCode create_fixed_tc (
+ in unsigned short digits,
+ in unsigned short scale
+ );
+ TypeCode create_sequence_tc (
+ in unsigned long bound,
+ in TypeCode element_type
+ );
+ TypeCode create_array_tc (
+ in unsigned long length,
+ in TypeCode element_type
+ );
+ TypeCode create_value_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in ValueModifier type_modifier,
+ in TypeCode concrete_base,
+ in ValueMemberSeq members
+ );
+ TypeCode create_value_box_tc (
+ in RepositoryId id,
+ in Identifier name,
+ in TypeCode boxed_type
+ );
+ TypeCode create_native_tc (
+ in RepositoryId id,
+ in Identifier name
+ );
+ TypeCode create_recursive_tc (
+ in RepositoryId id
+ );
+ TypeCode create_abstract_interface_tc (
+ in RepositoryId id,
+ in Identifier name
+ );
+ TypeCode create_component_tc (
+ in RepositoryId id,
+ in Identifier name
+ );
+ TypeCode create_home_tc (
+ in RepositoryId id,
+ in Identifier name
+ );
+ };
+};
- in IDLType result,
- in OperationMode mode,
- in ParDescriptionSeq params,
- in ExceptionDefSeq exceptions,
- in ContextIdSeq contexts );
-
- };
-
- struct ValueDescription
- {
- Identifier name;
- RepositoryId id;
- boolean is_abstract;
- boolean is_custom;
- RepositoryId defined_in;
- VersionSpec version;
- RepositoryId supported_interface;
- RepositoryIdSeq abstract_base_values;
- boolean is_truncatable;
- RepositoryId base_value;
- };
-
- interface ValueBoxDef : IDLType
- { attribute IDLType original_type_def; };
-
-
-
- typedef short ValueModifier;
- const ValueModifier VM_NONE = 0;
- const ValueModifier VM_CUSTOM = 1;
- const ValueModifier VM_ABSTRACT = 2;
- const ValueModifier VM_TRUNCATABLE = 3;
-
- };