duke@1: /* ohair@158: * Copyright (c) 1997, 2009, Oracle and/or its affiliates. All rights reserved. duke@1: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. duke@1: * duke@1: * This code is free software; you can redistribute it and/or modify it duke@1: * under the terms of the GNU General Public License version 2 only, as ohair@158: * published by the Free Software Foundation. Oracle designates this duke@1: * particular file as subject to the "Classpath" exception as provided ohair@158: * by Oracle in the LICENSE file that accompanied this code. duke@1: * duke@1: * This code is distributed in the hope that it will be useful, but WITHOUT duke@1: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or duke@1: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License duke@1: * version 2 for more details (a copy is included in the LICENSE file that duke@1: * accompanied this code). duke@1: * duke@1: * You should have received a copy of the GNU General Public License version duke@1: * 2 along with this work; if not, write to the Free Software Foundation, duke@1: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. duke@1: * ohair@158: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA ohair@158: * or visit www.oracle.com if you need additional information or have any ohair@158: * questions. duke@1: */ duke@1: duke@1: /* duke@1: * This file contains OMG IDL from CORBA V2.0, July 1995. duke@1: * It also contains the TypeCode creation APIs in CORBA::ORB duke@1: **/ duke@1: duke@1: #pragma prefix "omg.org" duke@1: //#pragma javaPackage org.omg duke@1: duke@1: module CORBA { duke@1: typedef string Identifier; duke@1: typedef string ScopedName; duke@1: typedef string RepositoryId; duke@1: duke@1: enum DefinitionKind { duke@1: dk_none, dk_all, duke@1: dk_Attribute, dk_Constant, dk_Exception, dk_Interface, duke@1: dk_Module, dk_Operation, dk_Typedef, duke@1: dk_Alias, dk_Struct, dk_Union, dk_Enum, duke@1: dk_Primitive, dk_String, dk_Sequence, dk_Array, duke@1: dk_Repository, duke@1: dk_Wstring, dk_Fixed, duke@1: dk_Value, dk_ValueBox, dk_ValueMember, // orbos 98-01-18: Objects By Value duke@1: dk_Native duke@1: }; duke@1: duke@1: duke@1: interface IRObject duke@1: /** duke@1: An IRObject IDL interface represents the most generic interface duke@1: from which all other Interface Repository interfaces are derived, duke@1: even the Repository itself. duke@1: */ duke@1: { duke@1: // read interface duke@1: readonly attribute DefinitionKind def_kind; duke@1: duke@1: // write interface duke@1: void destroy (); duke@1: }; duke@1: duke@1: duke@1: duke@1: typedef string VersionSpec; duke@1: duke@1: interface Contained; duke@1: interface Repository; duke@1: interface Container; duke@1: duke@1: interface Contained : IRObject duke@1: /** duke@1: The Contained Interface is inherited by all Interface Repository duke@1: interfaces that are contained by other objects. duke@1: */ duke@1: { duke@1: // read/write interface duke@1: duke@1: attribute RepositoryId id; duke@1: attribute Identifier name; duke@1: attribute VersionSpec version; duke@1: duke@1: // read interface duke@1: duke@1: readonly attribute Container defined_in; duke@1: readonly attribute ScopedName absolute_name; duke@1: readonly attribute Repository containing_repository; duke@1: duke@1: struct Description { duke@1: DefinitionKind kind; duke@1: any value; duke@1: }; duke@1: duke@1: Description describe (); duke@1: duke@1: // write interface duke@1: duke@1: void move ( duke@1: in Container new_container, duke@1: in Identifier new_name, duke@1: in VersionSpec new_version duke@1: ); duke@1: }; duke@1: duke@1: duke@1: interface ModuleDef; duke@1: interface ConstantDef; duke@1: interface IDLType; duke@1: interface StructDef; duke@1: interface UnionDef; duke@1: interface EnumDef; duke@1: interface AliasDef; duke@1: interface InterfaceDef; duke@1: interface ExceptionDef; duke@1: interface ValueDef; // orbos 98-01-18: Objects By Value duke@1: interface ValueMemberDef; // orbos 98-01-18: Objects By Value duke@1: interface ValueBoxDef; // orbos 98-01-18: Objects By Value duke@1: interface NativeDef; duke@1: duke@1: duke@1: typedef sequence InterfaceDefSeq; duke@1: duke@1: duke@1: typedef sequence ContainedSeq; duke@1: duke@1: struct StructMember { duke@1: Identifier name; duke@1: TypeCode type; duke@1: IDLType type_def; duke@1: }; duke@1: typedef sequence StructMemberSeq; duke@1: duke@1: struct UnionMember { duke@1: Identifier name; duke@1: any label; duke@1: TypeCode type; duke@1: IDLType type_def; duke@1: }; duke@1: typedef sequence UnionMemberSeq; duke@1: duke@1: duke@1: typedef sequence EnumMemberSeq; duke@1: duke@1: // orbos 98-01-18: Objects By Value -- begin duke@1: typedef short Visibility; duke@1: const Visibility PRIVATE_MEMBER = 0; duke@1: const Visibility PUBLIC_MEMBER = 1; duke@1: duke@1: struct ValueMember { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode type; duke@1: IDLType type_def; duke@1: Visibility access; duke@1: }; duke@1: typedef sequence ValueMemberSeq; duke@1: duke@1: struct Initializer { duke@1: StructMemberSeq members; duke@1: }; duke@1: typedef sequence InitializerSeq; duke@1: duke@1: typedef sequence ValueDefSeq; duke@1: duke@1: // orbos 98-01-18: Objects By Value -- end duke@1: duke@1: duke@1: interface Container : IRObject duke@1: /** duke@1: The Container interface is used to form a containment hierarchy duke@1: in the Interface Repository. A Container can contain any number duke@1: of objects derived from the Contained interface. duke@1: */ duke@1: { duke@1: // read interface duke@1: duke@1: Contained lookup ( in ScopedName search_name); duke@1: duke@1: ContainedSeq contents ( duke@1: in DefinitionKind limit_type, duke@1: in boolean exclude_inherited duke@1: ); duke@1: duke@1: ContainedSeq lookup_name ( duke@1: in Identifier search_name, duke@1: in long levels_to_search, duke@1: in DefinitionKind limit_type, duke@1: in boolean exclude_inherited duke@1: ); duke@1: duke@1: struct Description { duke@1: Contained contained_object; duke@1: DefinitionKind kind; duke@1: any value; duke@1: }; duke@1: duke@1: typedef sequence DescriptionSeq; duke@1: duke@1: DescriptionSeq describe_contents ( duke@1: in DefinitionKind limit_type, duke@1: in boolean exclude_inherited, duke@1: in long max_returned_objs duke@1: ); duke@1: duke@1: // write interface duke@1: duke@1: ModuleDef create_module ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version duke@1: ); duke@1: duke@1: ConstantDef create_constant ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType type, duke@1: in any value duke@1: ); duke@1: duke@1: StructDef create_struct ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in StructMemberSeq members duke@1: ); duke@1: duke@1: UnionDef create_union ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType discriminator_type, duke@1: in UnionMemberSeq members duke@1: ); duke@1: duke@1: EnumDef create_enum ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in EnumMemberSeq members duke@1: ); duke@1: duke@1: AliasDef create_alias ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType original_type duke@1: ); duke@1: duke@1: ExceptionDef create_exception ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in StructMemberSeq members duke@1: ); duke@1: duke@1: duke@1: InterfaceDef create_interface ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in boolean is_abstract, duke@1: in InterfaceDefSeq base_interfaces duke@1: ); duke@1: duke@1: // orbos 98-01-18: Objects By Value duke@1: ValueDef create_value( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in boolean is_custom, duke@1: in boolean is_abstract, duke@1: in octet flags, // must be 0 duke@1: in ValueDef base_value, duke@1: in boolean has_safe_base, duke@1: in ValueDefSeq abstract_base_values, duke@1: in InterfaceDefSeq supported_interfaces, duke@1: in InitializerSeq initializers duke@1: ); duke@1: duke@1: // orbos 98-01-18: Objects By Value duke@1: ValueBoxDef create_value_box( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType original_type_def duke@1: ); duke@1: duke@1: NativeDef create_native( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version duke@1: ); duke@1: duke@1: }; duke@1: duke@1: duke@1: duke@1: interface IDLType : IRObject duke@1: /** duke@1: The IDLType interface is an abstract interface inherited by all duke@1: IR objects that represent the OMG IDL types. It provides access duke@1: to the TypeCode describing the type, and is used in defining the duke@1: other interfaces wherever definitions of IDLType must be referenced. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode type; duke@1: }; duke@1: duke@1: duke@1: duke@1: interface PrimitiveDef; duke@1: interface StringDef; duke@1: interface SequenceDef; duke@1: interface ArrayDef; duke@1: duke@1: enum PrimitiveKind { duke@1: pk_null, pk_void, pk_short, pk_long, pk_ushort, pk_ulong, duke@1: pk_float, pk_double, pk_boolean, pk_char, pk_octet, duke@1: pk_any, pk_TypeCode, pk_Principal, pk_string, pk_objref duke@1: }; duke@1: duke@1: interface Repository : Container duke@1: /** duke@1: Repository is an interface that provides global access to the duke@1: Interface Repository. Repository objects can contain constants, duke@1: typedefs, exceptions, interfaces, and modules. duke@1: */ duke@1: { duke@1: // read interface duke@1: duke@1: Contained lookup_id (in RepositoryId search_id); duke@1: duke@1: PrimitiveDef get_primitive (in PrimitiveKind kind); duke@1: duke@1: // write interface duke@1: duke@1: StringDef create_string (in unsigned long bound); duke@1: duke@1: SequenceDef create_sequence ( duke@1: in unsigned long bound, duke@1: in IDLType element_type duke@1: ); duke@1: duke@1: ArrayDef create_array ( duke@1: in unsigned long length, duke@1: in IDLType element_type duke@1: ); duke@1: }; duke@1: duke@1: duke@1: interface ModuleDef : Container, Contained duke@1: /** duke@1: A ModuleDef can contain constants, typedefs, exceptions, interfaces, duke@1: and other module objects. duke@1: */ duke@1: { duke@1: }; duke@1: duke@1: struct ModuleDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: }; duke@1: duke@1: duke@1: interface ConstantDef : Contained duke@1: /** duke@1: A ConstantDef object defines a named constant. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode type; duke@1: attribute IDLType type_def; duke@1: attribute any value; duke@1: }; duke@1: duke@1: struct ConstantDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode type; duke@1: any value; duke@1: }; duke@1: duke@1: duke@1: interface TypedefDef : Contained, IDLType duke@1: /** duke@1: TypedefDef is an abstract interface used as a base interface for duke@1: all named non-object types(structures, unions, enumerations, duke@1: aliases). The TypedefDef interface is not inherited by the definition duke@1: objects for the primitive or anonymous types. duke@1: */ duke@1: { duke@1: }; duke@1: duke@1: struct TypeDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode type; duke@1: }; duke@1: duke@1: duke@1: interface StructDef : TypedefDef, Container duke@1: /** duke@1: A StructDef represents an OMG IDL structure definition. duke@1: */ duke@1: { duke@1: attribute StructMemberSeq members; duke@1: }; duke@1: duke@1: duke@1: interface UnionDef : TypedefDef, Container duke@1: /** duke@1: A UnionDef represents an OMG IDL union definition. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode discriminator_type; duke@1: attribute IDLType discriminator_type_def; duke@1: attribute UnionMemberSeq members; duke@1: }; duke@1: duke@1: duke@1: interface EnumDef : TypedefDef duke@1: /** duke@1: A EnumDef represents an OMG IDL enum definition. duke@1: */ duke@1: { duke@1: attribute EnumMemberSeq members; duke@1: }; duke@1: duke@1: duke@1: interface AliasDef : TypedefDef duke@1: /** duke@1: An AliasDef represents an OMG IDL typedef that aliases other duke@1: definition. duke@1: */ duke@1: { duke@1: attribute IDLType original_type_def; duke@1: }; duke@1: duke@1: duke@1: interface PrimitiveDef: IDLType duke@1: /** duke@1: A PrimitiveDef represents one of the IDL primitive types. As duke@1: primitive types are unnamed, this interface is not derived from duke@1: TypedefDef or Contained. duke@1: */ duke@1: { duke@1: readonly attribute PrimitiveKind kind; duke@1: }; duke@1: duke@1: duke@1: interface StringDef : IDLType duke@1: /** duke@1: A StringDef represents an OMG IDL string type. As string duke@1: types are anonymous, this interface is not derived from TypedefDef duke@1: or Contained. duke@1: */ duke@1: { duke@1: attribute unsigned long bound; duke@1: }; duke@1: duke@1: duke@1: interface SequenceDef : IDLType duke@1: /** duke@1: A SequenceDef represents an OMG IDL sequence type. As sequence duke@1: types are anonymous, this interface is not derived from TypedefDef duke@1: or Contained. duke@1: */ duke@1: { duke@1: attribute unsigned long bound; duke@1: readonly attribute TypeCode element_type; duke@1: attribute IDLType element_type_def; duke@1: }; duke@1: duke@1: interface ArrayDef : IDLType duke@1: /** duke@1: An ArrayDef represents an OMG IDL array type. As array duke@1: types are anonymous, this interface is not derived from TypedefDef duke@1: or Contained. duke@1: */ duke@1: { duke@1: attribute unsigned long length; duke@1: readonly attribute TypeCode element_type; duke@1: attribute IDLType element_type_def; duke@1: }; duke@1: duke@1: duke@1: interface ExceptionDef : Contained, Container duke@1: /** duke@1: An ExceptionDef represents an exception definition. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode type; duke@1: attribute StructMemberSeq members; duke@1: }; duke@1: struct ExceptionDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode type; duke@1: }; duke@1: duke@1: duke@1: duke@1: enum AttributeMode {ATTR_NORMAL, ATTR_READONLY}; duke@1: duke@1: interface AttributeDef : Contained duke@1: /** duke@1: An AttributeDef represents the information that defines an duke@1: attribute of an interface. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode type; duke@1: attribute IDLType type_def; duke@1: attribute AttributeMode mode; duke@1: }; duke@1: duke@1: struct AttributeDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode type; duke@1: AttributeMode mode; duke@1: }; duke@1: duke@1: duke@1: duke@1: enum OperationMode {OP_NORMAL, OP_ONEWAY}; duke@1: duke@1: enum ParameterMode {PARAM_IN, PARAM_OUT, PARAM_INOUT}; duke@1: struct ParameterDescription { duke@1: Identifier name; duke@1: TypeCode type; duke@1: IDLType type_def; duke@1: ParameterMode mode; duke@1: }; duke@1: typedef sequence ParDescriptionSeq; duke@1: duke@1: typedef Identifier ContextIdentifier; duke@1: typedef sequence ContextIdSeq; duke@1: duke@1: typedef sequence ExceptionDefSeq; duke@1: typedef sequence ExcDescriptionSeq; duke@1: duke@1: interface OperationDef : Contained duke@1: /** duke@1: An OperationDef represents the information that defines an duke@1: operation of an interface. duke@1: */ duke@1: { duke@1: readonly attribute TypeCode result; duke@1: attribute IDLType result_def; duke@1: attribute ParDescriptionSeq params; duke@1: attribute OperationMode mode; duke@1: attribute ContextIdSeq contexts; duke@1: attribute ExceptionDefSeq exceptions; duke@1: }; duke@1: duke@1: struct OperationDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: TypeCode result; duke@1: OperationMode mode; duke@1: ContextIdSeq contexts; duke@1: ParDescriptionSeq parameters; duke@1: ExcDescriptionSeq exceptions; duke@1: }; duke@1: duke@1: duke@1: duke@1: typedef sequence RepositoryIdSeq; duke@1: typedef sequence OpDescriptionSeq; duke@1: typedef sequence AttrDescriptionSeq; duke@1: duke@1: interface InterfaceDef : Container, Contained, IDLType duke@1: /** duke@1: An InterfaceDef object represents an interface definition. It can duke@1: contains constants, typedefs, exceptions, operations, and duke@1: attributes. duke@1: */ duke@1: { duke@1: // read/write interface duke@1: duke@1: attribute InterfaceDefSeq base_interfaces; duke@1: attribute boolean is_abstract; duke@1: duke@1: // read interface duke@1: duke@1: boolean is_a (in RepositoryId interface_id); duke@1: duke@1: struct FullInterfaceDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: boolean is_abstract; duke@1: OpDescriptionSeq operations; duke@1: AttrDescriptionSeq attributes; duke@1: RepositoryIdSeq base_interfaces; duke@1: TypeCode type; duke@1: }; duke@1: duke@1: FullInterfaceDescription describe_interface(); duke@1: duke@1: // write interface duke@1: duke@1: AttributeDef create_attribute ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType type, duke@1: in AttributeMode mode duke@1: ); duke@1: duke@1: OperationDef create_operation ( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType result, duke@1: in OperationMode mode, duke@1: in ParDescriptionSeq params, duke@1: in ExceptionDefSeq exceptions, duke@1: in ContextIdSeq contexts duke@1: ); duke@1: }; duke@1: duke@1: struct InterfaceDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: RepositoryIdSeq base_interfaces; duke@1: }; duke@1: duke@1: duke@1: // orbos 98-01-18: Objects By Value -- begin duke@1: duke@1: interface ValueMemberDef : Contained duke@1: duke@1: /** A ValueMemberDef object represents the public duke@1: and private data member definition of a Value type duke@1: */ duke@1: duke@1: { duke@1: readonly attribute TypeCode type; duke@1: attribute IDLType type_def; duke@1: attribute Visibility access; duke@1: }; duke@1: duke@1: interface ValueDef : Container, Contained, IDLType duke@1: /** duke@1: A ValueDef object represents the definition of the duke@1: Value object used to pass the object state duke@1: between hosts duke@1: */ duke@1: duke@1: { duke@1: // read/write interface duke@1: attribute InterfaceDefSeq supported_interfaces; duke@1: attribute InitializerSeq initializers; duke@1: attribute ValueDef base_value; duke@1: attribute ValueDefSeq abstract_base_values; duke@1: attribute boolean is_abstract; duke@1: attribute boolean is_custom; duke@1: attribute octet flags; // always 0 duke@1: attribute boolean has_safe_base; duke@1: duke@1: // read interface duke@1: boolean is_a(in RepositoryId value_id); duke@1: duke@1: struct FullValueDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: boolean is_abstract; duke@1: boolean is_custom; duke@1: octet flags; // always 0 duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: OpDescriptionSeq operations; duke@1: AttrDescriptionSeq attributes; duke@1: ValueMemberSeq members; duke@1: InitializerSeq initializers; duke@1: RepositoryIdSeq supported_interfaces; duke@1: RepositoryIdSeq abstract_base_values; duke@1: boolean has_safe_base; duke@1: RepositoryId base_value; duke@1: TypeCode type; duke@1: }; duke@1: duke@1: FullValueDescription describe_value(); duke@1: duke@1: // write interface duke@1: duke@1: ValueMemberDef create_value_member( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType type_def, duke@1: in Visibility access duke@1: ); duke@1: duke@1: AttributeDef create_attribute( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType type, duke@1: in AttributeMode mode duke@1: ); duke@1: duke@1: OperationDef create_operation( duke@1: in RepositoryId id, duke@1: in Identifier name, duke@1: in VersionSpec version, duke@1: in IDLType result, duke@1: in OperationMode mode, duke@1: in ParDescriptionSeq params, duke@1: in ExceptionDefSeq exceptions, duke@1: in ContextIdSeq contexts duke@1: ); duke@1: }; duke@1: struct ValueDescription { duke@1: Identifier name; duke@1: RepositoryId id; duke@1: boolean is_abstract; duke@1: boolean is_custom; duke@1: octet flags; // always 0 duke@1: RepositoryId defined_in; duke@1: VersionSpec version; duke@1: RepositoryIdSeq supported_interfaces; duke@1: RepositoryIdSeq abstract_base_values; duke@1: boolean has_safe_base; duke@1: RepositoryId base_value; duke@1: }; duke@1: duke@1: interface ValueBoxDef : IDLType duke@1: duke@1: /** ValueBoxDef is an interface that reresents a value type with duke@1: a single data member inside its state section and no duke@1: inheritance or methods. For example, when transmitting a duke@1: string or sequence as an actual parameter on an interface duke@1: operation or as a data member of a value type that is an duke@1: actual parameter, it may be important to preserve any sharing duke@1: of the string or sequence within the object graph being duke@1: transmitted. Because current IDL data types do not preserve duke@1: referential integrity in this way, this requirement is duke@1: conveniently handled by using a value type. Value types also duke@1: support the transmission of nulls (as a distinguished value), duke@1: whereas IDL data types such as string and sequence (which are duke@1: mapped to empty strings and sequences) do not. The Java to IDL duke@1: mapping requires both preservation of referential integrity duke@1: and transmission of nulls. Because it would be cumbersome to duke@1: require the full IDL syntax for a value type for this specific duke@1: usage, this shorthand notation is introduced to cover this use duke@1: of value types for simple containment of a single data member. duke@1: */ duke@1: duke@1: { duke@1: attribute IDLType original_type_def; duke@1: }; duke@1: duke@1: // orbos 98-01-18: Objects By Value -- end duke@1: ohair@5: enum TCKind { ohair@5: tk_null, tk_void, duke@1: tk_short, tk_long, tk_ushort, tk_ulong, ohair@5: tk_float, tk_double, tk_boolean, tk_char, ohair@5: tk_octet, tk_any, tk_TypeCode, tk_Principal, tk_objref, ohair@5: tk_struct, tk_union, tk_enum, tk_string, ohair@5: tk_sequence, tk_array, tk_alias, tk_except, ohair@5: tk_longlong, tk_ulonglong, tk_longdouble, ohair@5: tk_wchar, tk_wstring, tk_fixed, ohair@5: tk_value, tk_value_box, ohair@5: tk_native, ohair@5: tk_abstract_interface duke@1: }; duke@1: duke@1: interface NativeDef : TypedefDef { duke@1: }; duke@1: };