pragma Style_Checks ("NM32766");

---------------------------------------------------
--  This file has been generated automatically from
--  /wrkdirs/usr/ports/net/polyorb/work/polyorb-2.9.0/idls/cos/naming/CosNaming.idl
--  by IAC (IDL to Ada Compiler) 2.9.0 (rev. unknown).
---------------------------------------------------
--  NOTE: If you modify this file by hand, your
--  changes will be lost when you re-run the
--  IDL to Ada compiler.
---------------------------------------------------

with CosNaming.NamingContext.Impl;
with CORBA;
pragma Elaborate_All (CORBA);
with CosNaming.Helper;
with PolyORB.Any;
with CORBA.NVList;
with CORBA.Object;
with CORBA.Object.Helper;
with CORBA.ServerRequest;
with CosNaming.NamingContext.Helper;
with CosNaming.BindingIterator.Helper;
with PolyORB.CORBA_P.IR_Hooks;
with PolyORB.CORBA_P.Domain_Management;
with CosNaming_NamingContext_Hash;
with PolyORB.Std;
with PortableServer;
with CORBA.ORB;
with PolyORB.CORBA_P.Exceptions;
with PolyORB.Qos.Exception_Informations;
with PolyORB.Utils.Strings;
with PolyORB.Utils.Strings.Lists;
with PolyORB.Initialization;

package body CosNaming.NamingContext.Skel is

   bind_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   bind_Arg_Name_obj_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("obj");

   rebind_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   rebind_Arg_Name_obj_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("obj");

   bind_context_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   bind_context_Arg_Name_nc_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("nc");

   rebind_context_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   rebind_context_Arg_Name_nc_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("nc");

   resolve_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   unbind_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   bind_new_context_Arg_Name_n_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("n");

   list_Arg_Name_how_many_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("how_many");

   list_Arg_Name_bl_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("bl");

   list_Arg_Name_bi_Ü : constant CORBA.Identifier :=
     CORBA.To_CORBA_String
        ("bi");

   N_Operations : constant PolyORB.Std.Natural :=
     15;

   type String_Ptr is
     access PolyORB.Std.String;

   Invoke_Db : array (0 .. (N_Operations
      - 1)) of String_Ptr :=
     (others => null);

   procedure Register_Procedure
     (Operation_Name : PolyORB.Std.String);

   ------------------------
   -- Register_Procedure --
   ------------------------

   procedure Register_Procedure
     (Operation_Name : PolyORB.Std.String)
   is
      Index_Ü : PolyORB.Std.Natural;
      Invoke_Name_Access : String_Ptr;
   begin
      Index_Ü :=
        CosNaming_NamingContext_Hash.Hash
           (Operation_Name);
      if (Invoke_Db
        (Index_Ü)
         /= null)
      then
         raise Program_Error;
      end if;
      Invoke_Name_Access :=
        new PolyORB.Std.String'
           (Operation_Name);
      Invoke_Db
        (Index_Ü) :=
        Invoke_Name_Access;
   end Register_Procedure;

   procedure Invoke
     (Self : PortableServer.Servant;
      Request : CORBA.ServerRequest.Object_Ptr);

   ------------
   -- Invoke --
   ------------

   procedure Invoke
     (Self : PortableServer.Servant;
      Request : CORBA.ServerRequest.Object_Ptr)
   is
      Operation_Ü : constant PolyORB.Std.String :=
        CORBA.To_Standard_String
           (CORBA.ServerRequest.Operation
              (Request.all));
      Argument_List_Ü : CORBA.NVList.Ref;
      Index_Ü : PolyORB.Std.Natural;
      Invoke_Name_Access : String_Ptr;

      procedure Invoke_bind;

      -----------------
      -- Invoke_bind --
      -----------------

      procedure Invoke_bind is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Argument_obj_Ü : CORBA.Object.Ref;
         pragma Warnings (Off, Argument_obj_Ü);
         pragma Suppress (Validity_Check, Argument_obj_Ü);
         Arg_CC_obj_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (Argument_obj_Ü'Unrestricted_Access);
         Arg_Any_obj_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CORBA.Object.Helper.TC_Object,
               Arg_CC_obj_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            bind_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            bind_Arg_Name_obj_Ü,
            Arg_Any_obj_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.bind
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access,
               Argument_n_Ü,
               Argument_obj_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.AlreadyBound =>
               declare
                  Members : CosNaming.NamingContext.AlreadyBound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_bind;

      procedure Invoke_rebind;

      -------------------
      -- Invoke_rebind --
      -------------------

      procedure Invoke_rebind is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Argument_obj_Ü : CORBA.Object.Ref;
         pragma Warnings (Off, Argument_obj_Ü);
         pragma Suppress (Validity_Check, Argument_obj_Ü);
         Arg_CC_obj_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (Argument_obj_Ü'Unrestricted_Access);
         Arg_Any_obj_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CORBA.Object.Helper.TC_Object,
               Arg_CC_obj_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            rebind_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            rebind_Arg_Name_obj_Ü,
            Arg_Any_obj_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.rebind
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access,
               Argument_n_Ü,
               Argument_obj_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_rebind;

      procedure Invoke_bind_context;

      -------------------------
      -- Invoke_bind_context --
      -------------------------

      procedure Invoke_bind_context is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Argument_nc_Ü : CosNaming.NamingContext.Ref;
         pragma Warnings (Off, Argument_nc_Ü);
         pragma Suppress (Validity_Check, Argument_nc_Ü);
         Arg_CC_nc_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (CORBA.Object.Ref
                 (Argument_nc_Ü)'Unrestricted_Access);
         Arg_Any_nc_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.NamingContext.Helper.TC_NamingContext,
               Arg_CC_nc_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            bind_context_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            bind_context_Arg_Name_nc_Ü,
            Arg_Any_nc_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.bind_context
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access,
               Argument_n_Ü,
               Argument_nc_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.AlreadyBound =>
               declare
                  Members : CosNaming.NamingContext.AlreadyBound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_bind_context;

      procedure Invoke_rebind_context;

      ---------------------------
      -- Invoke_rebind_context --
      ---------------------------

      procedure Invoke_rebind_context is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Argument_nc_Ü : CosNaming.NamingContext.Ref;
         pragma Warnings (Off, Argument_nc_Ü);
         pragma Suppress (Validity_Check, Argument_nc_Ü);
         Arg_CC_nc_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (CORBA.Object.Ref
                 (Argument_nc_Ü)'Unrestricted_Access);
         Arg_Any_nc_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.NamingContext.Helper.TC_NamingContext,
               Arg_CC_nc_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            rebind_context_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            rebind_context_Arg_Name_nc_Ü,
            Arg_Any_nc_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.rebind_context
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access,
               Argument_n_Ü,
               Argument_nc_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_rebind_context;

      procedure Invoke_resolve;

      --------------------
      -- Invoke_resolve --
      --------------------

      procedure Invoke_resolve is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Result_Ü : CORBA.Object.Ref;
         pragma Warnings (Off, Result_Ü);
         pragma Suppress (Validity_Check, Result_Ü);
         Arg_CC_Result_Ü_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (Result_Ü'Unrestricted_Access);
         Arg_Any_Result_Ü_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CORBA.Object.Helper.TC_Object,
               Arg_CC_Result_Ü_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            resolve_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            Result_Ü :=
              CosNaming.NamingContext.Impl.resolve
                 (CosNaming.NamingContext.Impl.Object'Class
                    (Self.all)'Access,
                  Argument_n_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         --  Setting the result
         CORBA.ServerRequest.Set_Result
           (Request,
            Arg_Any_Result_Ü_Ü);
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_resolve;

      procedure Invoke_unbind;

      -------------------
      -- Invoke_unbind --
      -------------------

      procedure Invoke_unbind is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            unbind_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.unbind
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access,
               Argument_n_Ü);
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_unbind;

      procedure Invoke_new_context;

      ------------------------
      -- Invoke_new_context --
      ------------------------

      procedure Invoke_new_context is
         Result_Ü : CosNaming.NamingContext.Ref;
         pragma Warnings (Off, Result_Ü);
         pragma Suppress (Validity_Check, Result_Ü);
         Arg_CC_Result_Ü_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (CORBA.Object.Ref
                 (Result_Ü)'Unrestricted_Access);
         Arg_Any_Result_Ü_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.NamingContext.Helper.TC_NamingContext,
               Arg_CC_Result_Ü_Ü'Unchecked_Access);
      begin
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         --  Call Implementation
         Result_Ü :=
           CosNaming.NamingContext.Ref
              (CosNaming.NamingContext.Impl.new_context
                 (CosNaming.NamingContext.Impl.Object'Class
                    (Self.all)'Access));
         --  Setting the result
         CORBA.ServerRequest.Set_Result
           (Request,
            Arg_Any_Result_Ü_Ü);
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_new_context;

      procedure Invoke_bind_new_context;

      -----------------------------
      -- Invoke_bind_new_context --
      -----------------------------

      procedure Invoke_bind_new_context is
         Argument_n_Ü : CosNaming.Name;
         pragma Warnings (Off, Argument_n_Ü);
         pragma Suppress (Validity_Check, Argument_n_Ü);
         Arg_CC_n_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_NameComponent.Sequence
                 (Argument_n_Ü)'Unrestricted_Access);
         Arg_Any_n_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_Name,
               Arg_CC_n_Ü'Unchecked_Access);
         Result_Ü : CosNaming.NamingContext.Ref;
         pragma Warnings (Off, Result_Ü);
         pragma Suppress (Validity_Check, Result_Ü);
         Arg_CC_Result_Ü_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (CORBA.Object.Ref
                 (Result_Ü)'Unrestricted_Access);
         Arg_Any_Result_Ü_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.NamingContext.Helper.TC_NamingContext,
               Arg_CC_Result_Ü_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            bind_new_context_Arg_Name_n_Ü,
            Arg_Any_n_Ü,
            CORBA.ARG_IN);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            Result_Ü :=
              CosNaming.NamingContext.Ref
                 (CosNaming.NamingContext.Impl.bind_new_context
                    (CosNaming.NamingContext.Impl.Object'Class
                       (Self.all)'Access,
                     Argument_n_Ü));
         exception
            when E : CosNaming.NamingContext.NotFound =>
               declare
                  Members : CosNaming.NamingContext.NotFound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.AlreadyBound =>
               declare
                  Members : CosNaming.NamingContext.AlreadyBound_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.CannotProceed =>
               declare
                  Members : CosNaming.NamingContext.CannotProceed_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
            when E : CosNaming.NamingContext.InvalidName =>
               declare
                  Members : CosNaming.NamingContext.InvalidName_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         --  Setting the result
         CORBA.ServerRequest.Set_Result
           (Request,
            Arg_Any_Result_Ü_Ü);
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_bind_new_context;

      procedure Invoke_destroy;

      --------------------
      -- Invoke_destroy --
      --------------------

      procedure Invoke_destroy is
      begin
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         begin
            --  Call Implementation
            CosNaming.NamingContext.Impl.destroy
              (CosNaming.NamingContext.Impl.Object'Class
                 (Self.all)'Access);
         exception
            when E : CosNaming.NamingContext.NotEmpty =>
               declare
                  Members : CosNaming.NamingContext.NotEmpty_Members;
               begin
                  CosNaming.NamingContext.Get_Members
                    (E,
                     Members);
                  CORBA.ServerRequest.Set_Exception
                    (Request,
                     CosNaming.NamingContext.Helper.To_Any
                       (Members));
                  return;
               end;
         end;
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_destroy;

      procedure Invoke_list;

      -----------------
      -- Invoke_list --
      -----------------

      procedure Invoke_list is
         Argument_how_many_Ü : CORBA.Unsigned_Long;
         pragma Warnings (Off, Argument_how_many_Ü);
         pragma Suppress (Validity_Check, Argument_how_many_Ü);
         Arg_CC_how_many_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Wrap
              (Argument_how_many_Ü'Unrestricted_Access);
         Arg_Any_how_many_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CORBA.TC_Unsigned_Long,
               Arg_CC_how_many_Ü'Unchecked_Access);
         Argument_bl_Ü : CosNaming.BindingList;
         pragma Warnings (Off, Argument_bl_Ü);
         pragma Suppress (Validity_Check, Argument_bl_Ü);
         Arg_CC_bl_Ü : aliased PolyORB.Any.Content'Class :=
           CosNaming.Helper.Internals.Wrap
              (CosNaming.IDL_SEQUENCE_CosNaming_Binding.Sequence
                 (Argument_bl_Ü)'Unrestricted_Access);
         Arg_Any_bl_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.Helper.TC_BindingList,
               Arg_CC_bl_Ü'Unchecked_Access);
         Argument_bi_Ü : CosNaming.BindingIterator_Forward.Ref;
         pragma Warnings (Off, Argument_bi_Ü);
         pragma Suppress (Validity_Check, Argument_bi_Ü);
         Arg_CC_bi_Ü : aliased PolyORB.Any.Content'Class :=
           CORBA.Object.Helper.Wrap
              (CORBA.Object.Ref
                 (Argument_bi_Ü)'Unrestricted_Access);
         Arg_Any_bi_Ü : constant CORBA.Any :=
           CORBA.Internals.Get_Wrapper_Any
              (CosNaming.BindingIterator.Helper.TC_BindingIterator,
               Arg_CC_bi_Ü'Unchecked_Access);
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            list_Arg_Name_how_many_Ü,
            Arg_Any_how_many_Ü,
            CORBA.ARG_IN);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            list_Arg_Name_bl_Ü,
            Arg_Any_bl_Ü,
            CORBA.ARG_OUT);
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            list_Arg_Name_bi_Ü,
            Arg_Any_bi_Ü,
            CORBA.ARG_OUT);
         --  Processing request
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         --  Call Implementation
         CosNaming.NamingContext.Impl.list
           (CosNaming.NamingContext.Impl.Object'Class
              (Self.all)'Access,
            Argument_how_many_Ü,
            Argument_bl_Ü,
            Argument_bi_Ü);
         CORBA.NVList.Internals.Clone_Out_Args
           (Argument_List_Ü);
      end Invoke_list;

      procedure Invoke_Uis_a;

      ------------------
      -- Invoke_Uis_a --
      ------------------

      procedure Invoke_Uis_a is
         Type_Id_Ü : CORBA.String;
         Arg_Name_Type_Id_Ü : constant CORBA.Identifier :=
           CORBA.To_CORBA_String
              ("Type_Id_Ü");
         Argument_Type_Id_Ü : constant CORBA.Any :=
           CORBA.To_Any
              (Type_Id_Ü);
         Result_Ü : CORBA.Boolean;
      begin
         CORBA.NVList.Add_Item
           (Argument_List_Ü,
            Arg_Name_Type_Id_Ü,
            Argument_Type_Id_Ü,
            CORBA.ARG_IN);
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         Type_Id_Ü :=
           CORBA.From_Any
              (Argument_Type_Id_Ü);
         Result_Ü :=
           Is_A
              (CORBA.To_Standard_String
                 (Type_Id_Ü));
         CORBA.ServerRequest.Set_Result
           (Request,
            CORBA.To_Any
              (Result_Ü));
      end Invoke_Uis_a;

      procedure Invoke_Uinterface;

      -----------------------
      -- Invoke_Uinterface --
      -----------------------

      procedure Invoke_Uinterface is
      begin
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         CORBA.ServerRequest.Set_Result
           (Request,
            CORBA.Object.Helper.To_Any
              (CORBA.Object.Ref
                 (PolyORB.CORBA_P.IR_Hooks.Get_Interface_Definition
                    (CORBA.To_CORBA_String
                       (Repository_Id)))));
      end Invoke_Uinterface;

      procedure Invoke_Udomain_managers;

      -----------------------------
      -- Invoke_Udomain_managers --
      -----------------------------

      procedure Invoke_Udomain_managers is
      begin
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         CORBA.ServerRequest.Set_Result
           (Request,
            PolyORB.CORBA_P.Domain_Management.Get_Domain_Managers
              (Self));
      end Invoke_Udomain_managers;

      procedure Invoke_Unon_existent;

      --------------------------
      -- Invoke_Unon_existent --
      --------------------------

      procedure Invoke_Unon_existent is
      begin
         CORBA.ServerRequest.Arguments
           (Request,
            Argument_List_Ü);
         CORBA.ServerRequest.Set_Result
           (Request,
            CORBA.To_Any
              (CORBA.Boolean'
                 (False)));
      end Invoke_Unon_existent;

      procedure Dispatch;

      --------------
      -- Dispatch --
      --------------

      procedure Dispatch is
      begin
         case Index_Ü is
            when 0 =>
               Invoke_bind;
            when 1 =>
               Invoke_rebind;
            when 2 =>
               Invoke_bind_context;
            when 3 =>
               Invoke_rebind_context;
            when 4 =>
               Invoke_resolve;
            when 5 =>
               Invoke_unbind;
            when 6 =>
               Invoke_new_context;
            when 7 =>
               Invoke_bind_new_context;
            when 8 =>
               Invoke_destroy;
            when 9 =>
               Invoke_list;
            when 11 =>
               Invoke_Uinterface;
            when 12 =>
               Invoke_Udomain_managers;
            when 13
               | 14 =>
               Invoke_Unon_existent;
            when 10 =>
               Invoke_Uis_a;
            pragma Warnings (Off);
            when others =>
               raise Program_Error;
            pragma Warnings (On);

         end case;
      end Dispatch;

   begin
      CORBA.ORB.Create_List
        (0,
         Argument_List_Ü);
      Index_Ü :=
        CosNaming_NamingContext_Hash.Hash
           (Operation_Ü);
      Invoke_Name_Access :=
        Invoke_Db
           (Index_Ü);
      begin
         if (Operation_Ü
            = Invoke_Name_Access.all)
         then
            Dispatch;
         else
            CORBA.Raise_Bad_Operation
              (CORBA.Default_Sys_Member);
         end if;
      exception
         when E : others =>
            CORBA.ServerRequest.Set_Exception
              (Request,
               PolyORB.CORBA_P.Exceptions.System_Exception_To_Any
                 (E));
            PolyORB.Qos.Exception_Informations.Set_Exception_Information
              (Request.all,
               E);
      end;
   end Invoke;

   function Servant_Is_A
     (Obj : PortableServer.Servant)
     return Boolean;

   ------------------
   -- Servant_Is_A --
   ------------------

   function Servant_Is_A
     (Obj : PortableServer.Servant)
     return Boolean
   is
   begin
      return (Obj.all
         in CosNaming.NamingContext.Impl.Object'Class);
   end Servant_Is_A;

   -----------------------------
   -- Deferred_Initialization --
   -----------------------------

   procedure Deferred_Initialization is
   begin
      PortableServer.Internals.Register_Skeleton
        (CosNaming.NamingContext.Repository_Id,
         Servant_Is_A'Access,
         Is_A'Access,
         Invoke'Access);
      Register_Procedure
        ("bind");
      Register_Procedure
        ("rebind");
      Register_Procedure
        ("bind_context");
      Register_Procedure
        ("rebind_context");
      Register_Procedure
        ("resolve");
      Register_Procedure
        ("unbind");
      Register_Procedure
        ("new_context");
      Register_Procedure
        ("bind_new_context");
      Register_Procedure
        ("destroy");
      Register_Procedure
        ("list");
      Register_Procedure
        ("_is_a");
      Register_Procedure
        ("_interface");
      Register_Procedure
        ("_domain_managers");
      Register_Procedure
        ("_non_existent");
      Register_Procedure
        ("_not_existent");
   end Deferred_Initialization;

begin
   declare
      use PolyORB.Utils.Strings;
      use PolyORB.Utils.Strings.Lists;
   begin
      PolyORB.Initialization.Register_Module
        (PolyORB.Initialization.Module_Info'
           (Name => +"CosNaming.NamingContext.Skel",
            Conflicts => PolyORB.Utils.Strings.Lists.Empty,
            Depends => PolyORB.Utils.Strings.Lists.Empty,
            Provides => PolyORB.Utils.Strings.Lists.Empty,
            Implicit => False,
            Init => Deferred_Initialization'Access,
            Shutdown => null));
   end;
end CosNaming.NamingContext.Skel;
