You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ad...@apache.org on 2005/11/09 22:21:53 UTC

svn commit: r332145 [4/4] - in /geronimo/specs/trunk/geronimo-spec-corba: ./ src/idl/ src/java/ src/main/ src/main/idl/ src/main/java/

Added: geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/_orb.idl
URL: http://svn.apache.org/viewcvs/geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/_orb.idl?rev=332145&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/_orb.idl (added)
+++ geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/_orb.idl Wed Nov  9 13:21:41 2005
@@ -0,0 +1,690 @@
+/**
+ * some definitions from the CORBA module which are not covered
+ * by the OMG's standard Java mapping files. We need the classes
+ * generated from this file, but it is not suitable to be
+ * included in user-defined IDL files!
+ *
+ * $Id: _orb.idl,v 1.2 2001/09/22 14:51:13 jso Exp $
+ */
+
+#ifndef _MYORB_IDL
+#define _MYORB_IDL
+
+
+#pragma prefix "omg.org"
+
+module CORBA 
+{
+
+    typedef unsigned long PolicyType;
+
+    interface Policy
+	{
+	    readonly attribute PolicyType policy_type;
+	    Policy copy();
+	    void destroy();
+	};
+
+    typedef sequence <Policy> PolicyList;
+
+    interface DomainManager
+    {
+	Policy get_domain_policy(in PolicyType policy_type);
+    };
+
+
+    interface InterfaceDef; // forward
+
+    interface ConstructionPolicy: Policy
+    {
+	void make_domain_manager(in InterfaceDef object_type,
+				 in boolean constr_policy);
+    };
+
+    typedef sequence <DomainManager> DomainManagersList;
+	
+
+    typedef short PolicyErrorCode;
+    const PolicyErrorCode BAD_POLICY = 0;
+    const PolicyErrorCode UNSUPPORTED_POLICY = 1;
+    const PolicyErrorCode BAD_POLICY_TYPE = 2;
+    const PolicyErrorCode BAD_POLICY_VALUE = 3;
+    const PolicyErrorCode UNSUPPORTED_POLICY_VALUE = 4;
+    // ... to be continued
+
+    exception PolicyError
+    {
+	PolicyErrorCode reason;
+    };
+
+    enum CompletionStatus {COMPLETED_YES, COMPLETED_NO, COMPLETED_MAYBE } ;
+
+    typedef string Identifier;
+
+    // for PortableInterceptors
+    typedef sequence<string> StringSeq;
+    typedef sequence<wstring> WStringSeq;
+    typedef sequence<octet> OctetSeq;
+
+
+    // Chapter 10, Interface Repository
+
+    interface TypeCode; // forward declaration
+
+    //#include <InterfaceRepository.idl>
+
+    interface AliasDef;
+    interface ArrayDef;
+    interface AttributeDef;
+    interface ConstantDef;
+    interface Contained;
+    interface Container;
+    interface EnumDef;
+    interface ExceptionDef;
+    interface FixedDef;
+    interface IDLType;
+    interface InterfaceDef;
+    interface IRObject;
+    interface ModuleDef;
+    interface NativeDef;
+    interface OperationDef;
+    interface PrimitiveDef; 
+    interface Repository;
+    interface SequenceDef;
+    interface StringDef;
+    interface StructDef;
+    interface TypeCode;
+    interface TypedefDef;
+    interface UnionDef;
+    interface ValueDef;
+    interface ValueBoxDef;
+    interface ValueMemberDef;
+    interface WstringDef;
+
+    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
+    };
+    
+    interface IRObject {
+        // read interface
+        readonly attribute  DefinitionKind  def_kind;
+        // write interface
+        void                destroy ();
+    };
+    
+    typedef string VersionSpec;
+
+    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
+                                    );
+    };
+
+    typedef sequence <InterfaceDef> InterfaceDefSeq;
+    typedef sequence <ValueDef> ValueDefSeq;
+    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 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,
+                                       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 : IRObject {
+        readonly attribute TypeCode     type;
+    };
+
+    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 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;
+    };
+    struct ExceptionDescription {
+        Identifier                      name; 
+        RepositoryId                    id; 
+        RepositoryId                    defined_in; 
+        VersionSpec                     version;
+        TypeCode                        type; 
+    };
+    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; 
+    };
+    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;
+    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;
+        attribute boolean               is_abstract;
+
+        // 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 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    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,
+                                       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;
+        RepositoryIdSeq                 supported_interfaces;
+        RepositoryIdSeq                 abstract_base_values;
+        boolean                         is_truncatable;
+        RepositoryId                    base_value; 
+    };
+
+    interface ValueBoxDef : TypedefDef {
+        attribute IDLType original_type_def;
+    };
+
+    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
+    };
+    typedef short ValueModifier;                        // PIDL
+    const ValueModifier VM_NONE         = 0;
+    const ValueModifier VM_CUSTOM       = 1;
+    const ValueModifier VM_ABSTRACT     = 2;
+    const ValueModifier VM_TRUNCATABLE  = 3;
+
+    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
+        // and tk_except
+        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
+        // and tk_except
+        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);
+    };
+
+
+
+    /* this is the original PIDL from the lang. mapping, 
+       but we do not use it! Instead...
+
+    interface Principal
+    { 
+	attribute sequence<octet> name;
+    };
+    */
+
+    /* ... we use this little hack. It saves us fiddling with 
+       the generated code that uses  Principals. Actually, we 
+       should not be doing this....
+    */
+
+    typedef sequence<octet> Principal;
+
+	
+};
+
+
+#endif /* _MYORB_IDL */

Added: geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/orb.idl
URL: http://svn.apache.org/viewcvs/geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/orb.idl?rev=332145&view=auto
==============================================================================
--- geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/orb.idl (added)
+++ geronimo/specs/trunk/geronimo-spec-corba/src/main/idl/orb.idl Wed Nov  9 13:21:41 2005
@@ -0,0 +1,160 @@
+
+// Some definitions from the CORBA module as needed
+// by other modules. This file is for declaration
+// purposes only!!
+
+// $Id: orb.idl,v 1.2 2001/09/22 14:51:13 jso Exp $
+
+#ifndef _MYORB_IDL
+#define _MYORB_IDL
+
+#pragma prefix "omg.org"
+
+
+module CORBA 
+{
+    typedef unsigned short ServiceOption;
+    typedef unsigned short ServiceDetailType;
+
+    // for PortableInterceptors
+    typedef sequence<string> StringSeq;
+    typedef sequence<wstring> WStringSeq;
+    typedef sequence<octet> OctetSeq;
+
+    typedef unsigned long PolicyType;
+	
+    // actually, Current is pseudo, but we need it this way so everything compiles
+    interface Current {}; 
+
+    interface Environment{};
+    interface NamedValue {};
+    interface NVList {};	
+
+    // not suitable for deriving user-defined interfaces !
+    enum TCKind { 
+	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
+    };
+    
+    // not suitable for deriving user-defined interfaces
+    typedef string Identifier;
+    typedef string RepositoryId;
+
+    interface TypeCode { // PIDL
+	exception Bounds {};
+	exception BadKind {};
+	
+	// for all TypeCode kinds
+	boolean equal (in TypeCode tc);
+	TCKind kind ();
+
+	boolean equivalent(in TypeCode tc);
+	TypeCode get_compact_typecode();
+
+	// for tk_objref, tk_struct, tk_union, tk_enum, 
+	// tk_alias, and tk_except
+	RepositoryId id () raises (BadKind);
+	
+	// for tk_objref, tk_struct, tk_union, tk_enum, 
+	// tk_alias, and tk_except
+	Identifier name () raises (BadKind);
+	
+	// for tk_struct, tk_union, tk_enum, and tk_except
+	unsigned long member_count () raises (BadKind);
+	Identifier member_name (in unsigned long index) 
+	    raises (BadKind, Bounds);
+	
+	// for tk_struct, tk_union, 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, and tk_alias
+	TypeCode content_type () raises (BadKind);
+       	
+    };
+
+
+    interface InterfaceDef     {};
+
+    /* this is the original PIDL from the lang. mapping, 
+       but we do not use it! Instead...
+
+    interface Principal
+    { 
+	attribute sequence<octet> name;
+    };
+    */
+
+    /* ... we use this little hack. It saves us fiddling with 
+       the generated code that uses  Principals. Actually, we 
+       should not be doing this....
+    */
+
+    typedef sequence<octet> Principal;
+
+    interface IDLType {};
+
+    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;
+	
+    interface Policy
+    {
+	readonly attribute PolicyType policy_type;
+	Policy copy();
+	void destroy();
+    };
+	
+    typedef sequence <Policy> PolicyList;
+
+    interface DomainManager
+    {
+	Policy get_domain_policy(in PolicyType policy_type);
+    };
+
+    interface ConstructionPolicy: Policy
+    {
+	void make_domain_manager(in InterfaceDef object_type,
+				 in boolean constr_policy);
+    };
+
+    typedef sequence <DomainManager> DomainManagersList;
+	
+
+    typedef short PolicyErrorCode;
+    const PolicyErrorCode BAD_POLICY = 0;
+    // ... to be continued
+
+    exception PolicyError
+    {
+	PolicyErrorCode reason;
+    };
+
+};
+
+
+#endif /* _MYORB_IDL */