Specification of package Corba.Impl







 ========================================================================= --
 ===                                                                   === --
 ===                 Top Graph'X CORBA Implementation                  === --
 ===                                                                   === --
 ===                 Copyright (c) 2000, Top Graph'X.                  === --
 ===                                                                   === --
 ===                     --- Copyright Notice ---                      === --
 ===                                                                   === --
 ===    This software is protected as an unpublished work under the    === --
 ===     Copyright Act of 1976.  All rights reserved.  Top Graph'X.    === --
 ===                                                                   === --
 ========================================================================= --

with Ada.Finalization ;
with Ada.Unchecked_Deallocation ;
package Corba.Impl is
    The following type is the common ancestor of all object implementations
   type Object is abstract tagged
   record
      Ref_Count : Unsigned_Long := 0 ;  Reference count
   end record;

   type Object_Ptr is access all Object'Class;

    The following procedure must be defined for all non abstract
    object implementations. It must contain all backup and cleanup operations
    needed before the destruction of the object, destruction which will
    immediately occur after the termination of this procedure.
    Finalize is automatically called when the Ref_Count becomes 0, providing
    that the pointer to the Object is stored in a Controller defined below
    (which is a mandatory requirement, as doing otherwise may lead to
    impredictable results)
    If Finalize needs to avoid the deallocation of the object (for example
    because it stores it in a "free list" for later reuse), it may either
    put it in another controller or increment the Ref_Count
   procedure Finalize (Self : access Object) ;

    This procedure dispatches operations for local interfaces and values
   procedure Invoke ( Self      : access Object ;
                      Operation : in Standard.String ;
                      Stream    : access Corba_Ios.Iop_Stream_Type) ;

    Deallocation procedure automatically called by finalization
    operations
   procedure Free is new Ada.Unchecked_Deallocation
      (Object => Object'Class, Name => Object_Ptr) ;

    Object_Ptr must always be stored inside a controlling object
    The following type must be used for this purpose
   type Controller is new Ada.Finalization.Controlled with
   record
      Ptr : Object_Ptr ;
   end record ;

    Finalisation routines
   procedure Adjust (Self : in out Controller) ;
   procedure Finalize (Self : in out Controller) ;

    The following procedure must be used to set the contents
    of a Controller for proper finalization to be done
    This may cause the previous object stored in the controller
    to be finalized and destroyed if its Ref_Count becomes 0
    indicating that it is no longer used
   procedure Set (Self : in out Controller ; Ptr : in Object_Ptr) ;

    Operations signatures for fast dispatching
   type Operation_Signature is new Unsigned_Long ;
   type Operation_Signatures is array (Positive range <>) of
      Operation_Signature ;

   function Get_Index ( Operation  : in Standard.String ;
                        Scale      : in Operation_Signature ;
                        Signatures : in Operation_Signatures) return Natural ;
end Corba.Impl;




List of definition uses










This page was generated by PrismTech's ada2html on Friday Mai 12 2006 16:18