1. --  (c) Copyright, Real-Time Innovations, $Date:: 2012-02-16 #$ 
  2. --  All rights reserved. 
  3. -- 
  4. --  No duplications, whole or partial, manual or electronic, may be made 
  5. --  without express written permission.  Any such copies, or 
  6. --  revisions thereof, must display this notice unaltered. 
  7. --  This code contains trade secrets of Real-Time Innovations, Inc. 
  8.  
  9.  
  10.  
  11. with Ada.Unchecked_Conversion; 
  12. with DDS.DomainParticipantListener; 
  13. with DDS.TopicListener; 
  14. with DDS.SubscriberListener; 
  15. with DDS.PublisherListener; 
  16. with DDS.Publisher; 
  17. with DDS.PublisherSeq; 
  18. with DDS.Topic; 
  19. with DDS.TopicDescription; 
  20. with DDS.Subscriber; 
  21. with DDS.SubscriberSeq; 
  22. with DDS.ContentFilteredTopic; 
  23. with DDS.MultiTopic; 
  24. with DDS.DomainParticipant; 
  25. limited with dds.DomainParticipantFactory; 
  26. --  limited with DDS.FlowController; 
  27. with DDS.Entity_Impl; 
  28. with DDS.Entity; 
  29. with DDS.DataWriter; 
  30. with DDS.DataWriterListener; 
  31. with DDS.DataReader; 
  32. with DDS.DataReaderListener; 
  33. with RTIDDS.Low_Level.ndds_dds_c_dds_c_infrastructure_h; use RTIDDS.Low_Level.ndds_dds_c_dds_c_infrastructure_h; 
  34. package DDS.DomainParticipant_Impl is 
  35.  
  36.    type Ref is new DDS.Entity_Impl.Ref and DDS.DomainParticipant.Ref with record 
  37.       Domain_Id : DDS.DomainId_T := 0; 
  38.    end record; 
  39.  
  40.    type Ref_Access is access all Ref'Class; 
  41.  
  42.    function Create_Publisher 
  43.      (Self       : not null access Ref; 
  44.       Qos        : in DDS.PublisherQos; 
  45.       A_Listener : in DDS.PublisherListener.Ref_Access; 
  46.       Mask       : in DDS.StatusMask) 
  47.       return DDS.Publisher.Ref_Access; 
  48.  
  49.    function Create_Publisher_With_Profile 
  50.      (Self         : not null access Ref; 
  51.       Library_Name : in DDS.String; 
  52.       Profile_Name : in DDS.String; 
  53.       A_Listener   : in DDS.PublisherListener.Ref_Access := null; 
  54.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  55.       return DDS.Publisher.Ref_Access; 
  56.    function Create_Publisher_With_Profile 
  57.      (Self         : not null access Ref; 
  58.       Library_Name : in Standard.String; 
  59.       Profile_Name : in Standard.String; 
  60.       A_Listener   : in DDS.PublisherListener.Ref_Access := null; 
  61.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  62.       return DDS.Publisher.Ref_Access; 
  63.  
  64.    procedure Delete_Publisher 
  65.      (Self      : not null access Ref; 
  66.       Publisher : in out DDS.Publisher.Ref_Access); 
  67.  
  68.  
  69.    function Create_Subscriber 
  70.      (Self       : not null access Ref; 
  71.       Qos        : in DDS.SubscriberQos; 
  72.       A_Listener : in DDS.SubscriberListener.Ref_Access; 
  73.       Mask       : in DDS.StatusMask) 
  74.       return DDS.Subscriber.Ref_Access; 
  75.  
  76.    function Create_Subscriber_With_Profile 
  77.      (Self         : not null access Ref; 
  78.       Library_Name : in DDS.String; 
  79.       Profile_Name : in DDS.String; 
  80.       A_Listener   : in DDS.SubscriberListener.Ref_Access  := null; 
  81.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  82.       return DDS.Subscriber.Ref_Access; 
  83.  
  84.    function Create_Subscriber_With_Profile 
  85.      (Self         : not null access Ref; 
  86.       Library_Name : in Standard.String; 
  87.       Profile_Name : in Standard.String; 
  88.       A_Listener   : in DDS.SubscriberListener.Ref_Access  := null; 
  89.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  90.       return DDS.Subscriber.Ref_Access; 
  91.  
  92.  
  93.    procedure Delete_Subscriber 
  94.      (Self       :  not null access Ref; 
  95.       Subscriber :  in out DDS.Subscriber.Ref_Access); 
  96.  
  97.  
  98.    function Create_DataWriter 
  99.      (Self       : not null access Ref; 
  100.       A_Topic    : in DDS.Topic.Ref_Access; 
  101.       Qos        : in DDS.DataWriterQos := DDS.Publisher.DATAWRITER_QOS_DEFAULT; 
  102.       A_Listener : in DDS.DataWriterListener.Ref_Access := null; 
  103.       Mask       : in DDS.StatusMask := STATUS_MASK_NONE) 
  104.       return DDS.DataWriter.Ref_Access; 
  105.  
  106.    function Create_DataWriter_With_Profile 
  107.      (Self         : not null access Ref; 
  108.       A_Topic      : in DDS.Topic.Ref_Access; 
  109.       Library_Name : in DDS.String; 
  110.       Profile_Name : in DDS.String; 
  111.       A_Listener   : in DDS.DataWriterListener.Ref_Access := null; 
  112.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  113.       return DDS.DataWriter.Ref_Access; 
  114.    function Create_DataWriter_With_Profile 
  115.      (Self         : not null access Ref; 
  116.       A_Topic      : in DDS.Topic.Ref_Access; 
  117.       Library_Name : in Standard.String; 
  118.       Profile_Name : in Standard.String; 
  119.       A_Listener   : in DDS.DataWriterListener.Ref_Access := null; 
  120.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  121.       return DDS.DataWriter.Ref_Access; 
  122.  
  123.    procedure Delete_DataWriter 
  124.      (Self         : not null access Ref; 
  125.       A_DataWriter : in out DDS.DataWriter.Ref_Access); 
  126.  
  127.  
  128.    function Create_DataReader 
  129.      (Self       : not null access Ref; 
  130.       Topic      : not null access DDS.TopicDescription.Ref'Class; 
  131.       Qos        : in DDS.DataReaderQoS := DDS.Subscriber.DATAREADER_QOS_DEFAULT; 
  132.       A_Listener : in DDS.DataReaderListener.Ref_Access := null; 
  133.       Mask       : in DDS.StatusMask := STATUS_MASK_NONE) 
  134.       return DDS.DataReader.Ref_Access; 
  135.  
  136.    function Create_DataReader_With_Profile 
  137.      (Self         : not null access Ref; 
  138.       Topic        : not null access DDS.TopicDescription.Ref'Class; 
  139.       Library_Name : in DDS.String; 
  140.       Profile_Name : in DDS.String; 
  141.       A_Listener   : in DDS.DataReaderListener.Ref_Access := null; 
  142.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  143.       return DDS.DataReader.Ref_Access; 
  144.    function Create_DataReader_With_Profile 
  145.      (Self         : not null access Ref; 
  146.       Topic        : not null access DDS.TopicDescription.Ref'Class; 
  147.       Library_Name : in Standard.String; 
  148.       Profile_Name : in Standard.String; 
  149.       A_Listener   : in DDS.DataReaderListener.Ref_Access := null; 
  150.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  151.       return DDS.DataReader.Ref_Access; 
  152.  
  153.    procedure Delete_DataReader 
  154.      (Self         : not null access Ref; 
  155.       A_DataReader : in out DDS.DataReader.Ref_Access); 
  156.  
  157.  
  158.    function Get_Builtin_Subscriber 
  159.      (Self :  not null access Ref) 
  160.       return DDS.Subscriber.Ref_Access; 
  161.  
  162.    function Get_Implicit_Publisher 
  163.      (Self :  not null access Ref) 
  164.       return DDS.Publisher.Ref_Access; 
  165.  
  166.    function Get_Implicit_Subscriber 
  167.      (Self :  not null access Ref) 
  168.       return DDS.Subscriber.Ref_Access; 
  169.  
  170.    function Create_Topic 
  171.      (Self       : not null access Ref; 
  172.       Topic_Name : in DDS.String; 
  173.       Type_Name  : in DDS.String; 
  174.       Qos        : in DDS.TopicQos; 
  175.       A_Listener : in DDS.TopicListener.Ref_Access; 
  176.       Mask       : in DDS.StatusMask) 
  177.       return DDS.Topic.Ref_Access; 
  178.  
  179.    function Create_Topic_With_Profile 
  180.      (Self         : not null access Ref; 
  181.       Topic_Name   : in DDS.String; 
  182.       Type_Name    : in DDS.String; 
  183.       Library_Name : in DDS.String; 
  184.       Profile_Name : in DDS.String; 
  185.       A_Listener   : in DDS.TopicListener.Ref_Access := null; 
  186.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  187.       return DDS.Topic.Ref_Access; 
  188.  
  189.    function Create_Topic_With_Profile 
  190.      (Self         : not null access Ref; 
  191.       Topic_Name   : in DDS.String; 
  192.       Type_Name    : in DDS.String; 
  193.       Library_Name : in Standard.String; 
  194.       Profile_Name : in Standard.String; 
  195.       A_Listener   : in DDS.TopicListener.Ref_Access := null; 
  196.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) 
  197.       return DDS.Topic.Ref_Access; 
  198.  
  199.    function  Get_Or_Create_Topic 
  200.      (Self       : not null access Ref; 
  201.       Topic_Name : in DDS.String; 
  202.       Type_Name  : in DDS.String; 
  203.       Qos        : in DDS.TopicQos := DDS.DomainParticipant.TOPIC_QOS_DEFAULT; 
  204.       A_Listener : in DDS.TopicListener.Ref_Access := null; 
  205.       Mask       : in DDS.StatusMask := STATUS_MASK_NONE) return  DDS.Topic.Ref_Access; 
  206.  
  207.    function  Get_Or_Create_Topic_With_Profile 
  208.      (Self         : not null access Ref; 
  209.       Topic_Name   : in DDS.String; 
  210.       Type_Name    : in DDS.String; 
  211.       Library_Name : in DDS.String; 
  212.       Profile_Name : in DDS.String; 
  213.       A_Listener   : in DDS.TopicListener.Ref_Access := null; 
  214.       Mask         : in DDS.StatusMask := STATUS_MASK_NONE) return  DDS.Topic.Ref_Access; 
  215.    procedure Delete_Topic 
  216.      (Self    : not null access Ref; 
  217.       A_Topic : in out DDS.Topic.Ref_Access); 
  218.  
  219.  
  220.    function Find_Topic 
  221.      (Self       : not null access Ref; 
  222.       Topic_Name : in DDS.String; 
  223.       Timeout    : in DDS.Duration_T) 
  224.       return DDS.Topic.Ref_Access; 
  225.  
  226.    function Lookup_Entity 
  227.      (Self : not null access Ref; 
  228.       Key  : in DDS.BuiltinTopicKey_T) 
  229.       return DDS.Entity.Ref_Access; 
  230.  
  231.    function Lookup_Topicdescription 
  232.      (Self : not null access Ref; 
  233.       Name : in DDS.String) 
  234.       return DDS.TopicDescription.Ref_Access; 
  235.  
  236.    function Create_Contentfilteredtopic 
  237.      (Self                  : not null access Ref; 
  238.       Name                  : in DDS.String; 
  239.       Related_Topic         : in DDS.Topic.Ref_Access; 
  240.       Filter_Expression     : in DDS.String; 
  241.       Filter_Parameters     : access DDS.String_Seq.Sequence) 
  242.       return DDS.ContentFilteredTopic.Ref_Access; 
  243.  
  244.    function Create_Contentfilteredtopic_With_Filter 
  245.      (Self                  : not null access Ref; 
  246.       Name                  : in DDS.String; 
  247.       Related_Topic         : in DDS.Topic.Ref_Access; 
  248.       Filter_Expression     : in DDS.String; 
  249.       Filter_Parameters     : access DDS.String_Seq.Sequence; 
  250.       Filter_Name           : in DDS.String) 
  251.       return DDS.ContentFilteredTopic.Ref_Access; 
  252.  
  253.    function Create_Correlation_Contentfilteredtopic 
  254.      (Participant      : not null access Ref; 
  255.       Topic            : not null DDS.Topic.Ref_Access; 
  256.       Correlation_Guid : DDS.Guid_T) 
  257.       return DDS.ContentFilteredTopic.Ref_Access; 
  258.  
  259.  
  260.    procedure Delete_Contentfilteredtopic 
  261.      (Self    : not null access Ref; 
  262.       CFTopic : in out DDS.ContentFilteredTopic.Ref_Access); 
  263.  
  264.    function Create_MultiTopic 
  265.      (Self                    : not null access Ref; 
  266.       Name                    : in DDS.String; 
  267.       Type_Name               : in DDS.String; 
  268.       Subscription_Expression : in DDS.String; 
  269.       Expression_Parameters   : access DDS.String_Seq.Sequence) 
  270.       return DDS.MultiTopic.Ref_Access; 
  271.  
  272.    procedure Delete_MultiTopic 
  273.      (Self     : not null access Ref; 
  274.       MTopic  : in out DDS.MultiTopic.Ref_Access); 
  275.  
  276. --     function Create_FlowController 
  277. --       (Self         : not null access Ref; 
  278. --        name         : DDS.String; 
  279. --        prop         : access DDS.FlowControllerProperty_T) 
  280. --        return access DDS.FlowController.Ref'Class; 
  281.  
  282.    procedure Delete_Contained_Entities 
  283.      (Self :  not null access Ref); 
  284.  
  285.  
  286.    procedure Set_Qos 
  287.      (Self : not null access Ref; 
  288.       Qos  : in DDS.DomainParticipantQos); 
  289.  
  290.    procedure Set_Qos_With_Profile 
  291.      (Self          : not null access Ref; 
  292.       Library_Name  : in String; 
  293.       Profile_Name  : in String); 
  294.    procedure Set_Qos_With_Profile 
  295.      (Self          : not null access Ref; 
  296.       Library_Name  : in Standard.String; 
  297.       Profile_Name  : in Standard.String); 
  298.  
  299.    procedure Get_Qos 
  300.      (Self : not null access Ref; 
  301.       Qos  : in out DDS.DomainParticipantQos); 
  302.  
  303.    procedure Set_Listener 
  304.      (Self       : not null access Ref; 
  305.       A_Listener : DDS.DomainParticipantListener.Ref_Access; 
  306.       Mask       : in DDS.StatusMask); 
  307.  
  308.    function Get_Listener 
  309.      (Self :  not null access Ref) 
  310.       return DDS.DomainParticipantListener.Ref_Access; 
  311.  
  312.  
  313.    procedure Ignore_Participant 
  314.      (Self   : not null access Ref; 
  315.       Handle : in DDS.InstanceHandle_T); 
  316.  
  317.  
  318.    procedure Ignore_Topic 
  319.      (Self   : not null access Ref; 
  320.       Handle : in DDS.InstanceHandle_T); 
  321.  
  322.    procedure Ignore_Publication 
  323.      (Self   : not null access Ref; 
  324.       Handle : in DDS.InstanceHandle_T); 
  325.  
  326.    procedure Ignore_Subscription 
  327.      (Self   : not null access Ref; 
  328.       Handle : in DDS.InstanceHandle_T); 
  329.  
  330.    function Get_Domain_Id 
  331.      (Self :  not null access Ref) 
  332.       return DDS.DomainId_T; 
  333.  
  334.    procedure Assert_Liveliness 
  335.      (Self :  not null access Ref); 
  336.  
  337.    procedure Set_Default_DataReader_Qos 
  338.      (Self : not null access Ref; 
  339.       Qos  : in DDS.DataReaderQoS); 
  340.  
  341.    procedure Set_Default_DataReader_Qos_With_Profile 
  342.      (Self     : not null access Ref; 
  343.       LibName  : DDS.String; 
  344.       ProfName : DDS.String); 
  345.    procedure Set_Default_DataReader_Qos_With_Profile 
  346.      (Self     : not null access Ref; 
  347.       LibName  : Standard.String; 
  348.       ProfName : Standard.String); 
  349.  
  350.    procedure Set_Default_DataWriter_Qos 
  351.      (Self : not null access Ref; 
  352.       Qos  : in DDS.DataWriterQos); 
  353.  
  354.    procedure Set_Default_DataWriter_Qos_With_Profile 
  355.      (Self     : not null access Ref; 
  356.       LibName  : DDS.String; 
  357.       ProfName : DDS.String); 
  358.    procedure Set_Default_DataWriter_Qos_With_Profile 
  359.      (Self     : not null access Ref; 
  360.       LibName  : Standard.String; 
  361.       ProfName : Standard.String); 
  362.  
  363.    procedure Set_Default_Publisher_Qos 
  364.      (Self : not null access Ref; 
  365.       Qos  : in DDS.PublisherQos); 
  366.  
  367.    procedure Set_Default_Publisher_Qos_With_Profile 
  368.      (Self     : not null access Ref; 
  369.       LibName  : DDS.String; 
  370.       ProfName : DDS.String); 
  371.    procedure Set_Default_Publisher_Qos_With_Profile 
  372.      (Self     : not null access Ref; 
  373.       LibName  : Standard.String; 
  374.       ProfName : Standard.String); 
  375.  
  376.    procedure Get_Default_Publisher_Qos 
  377.      (Self    : not null access Ref; 
  378.       Qos     : in out DDS.PublisherQos); 
  379.  
  380.    procedure Set_Default_Subscriber_Qos 
  381.      (Self : not null access Ref; 
  382.       Qos  : in DDS.SubscriberQos); 
  383.  
  384.    procedure Set_Default_Subscriber_Qos_With_Profile 
  385.      (Self : not null access Ref; 
  386.       LibraryName : DDS.String; 
  387.       ProfileName : DDS.String); 
  388.    procedure Set_Default_Subscriber_Qos_With_Profile 
  389.      (Self : not null access Ref; 
  390.       LibraryName : Standard.String; 
  391.       ProfileName : Standard.String); 
  392.  
  393.    procedure Get_Default_Subscriber_Qos 
  394.      (Self    : not null access Ref; 
  395.       Qos     : in out DDS.SubscriberQos); 
  396.  
  397.    procedure Get_Default_DataReader_Qos 
  398.      (Self : not null access Ref; 
  399.       Qos  : in out DDS.DataReaderQoS); 
  400.  
  401.    procedure Get_Default_DataWriter_Qos 
  402.      (Self : not null access Ref; 
  403.       Qos  : in out DDS.DataWriterQos); 
  404.  
  405.    procedure Set_Default_Topic_Qos 
  406.      (Self : not null access Ref; 
  407.       Qos  : in DDS.TopicQos); 
  408.  
  409.    procedure Set_Default_Topic_Qos_With_Profile 
  410.      (Self        : not null access Ref; 
  411.       LibraryName : DDS.String; 
  412.       ProfileName : DDS.String); 
  413.    procedure Set_Default_Topic_Qos_With_Profile 
  414.      (Self        : not null access Ref; 
  415.       LibraryName : Standard.String; 
  416.       ProfileName : Standard.String); 
  417.  
  418.    procedure Get_Default_Topic_Qos 
  419.      (Self    : not null access Ref; 
  420.       Qos     : in out DDS.TopicQos); 
  421.  
  422.    procedure Set_Default_Profile 
  423.      (Self          : not null access Ref; 
  424.       Library_Name  : DDS.String; 
  425.       Profile_Name  : DDS.String); 
  426.  
  427.    procedure Set_Default_Library 
  428.      (Self          : not null access Ref; 
  429.       Library_Name   : DDS.String); 
  430.  
  431.    function Get_Default_Library 
  432.      (Self : not null access Ref) 
  433.       return DDS.String; 
  434.  
  435.    function Get_Default_Profile 
  436.      (Self : not null access Ref) 
  437.       return DDS.String; 
  438.  
  439.    function Get_Default_Profile_Library 
  440.      (Self : not null access Ref) 
  441.       return DDS.String; 
  442.  
  443.    procedure Get_Default_Flowcontroller_Property 
  444.      (Self : not null access Ref; 
  445.       Property : in out DDS.FlowControllerProperty_T); 
  446.  
  447.    procedure Set_Default_Flowcontroller_Property 
  448.      (Self : not null access Ref; 
  449.       Property : in DDS.FlowControllerProperty_T); 
  450.  
  451.    function Get_Discovered_Participants 
  452.      (Self                :  access Ref) 
  453.       return DDS.InstanceHandle_Seq.Sequence; 
  454.  
  455.    function Get_Discovered_Participant_Data 
  456.      (Self               : not null access Ref; 
  457.       Participant_Handle : in DDS.InstanceHandle_T) 
  458.       return DDS.ParticipantBuiltinTopicData; 
  459.  
  460.    function Get_Discovered_Topics 
  461.      (Self :  access Ref) 
  462.       return DDS.InstanceHandle_Seq.Sequence; 
  463.  
  464.    function Get_Discovered_Topic_Data 
  465.      (Self         : not null access Ref; 
  466.       Topic_Handle : in DDS.InstanceHandle_T) 
  467.       return DDS.TopicBuiltinTopicData; 
  468.  
  469.    procedure Get_Discovered_Topic_Data 
  470.      (Self         : not null access Ref; 
  471.       Topic_Handle : in DDS.InstanceHandle_T; 
  472.       Data         : access DDS.TopicBuiltinTopicData); 
  473.  
  474.    function Contains_Entity 
  475.      (Self     : not null access Ref; 
  476.       A_Handle : in DDS.InstanceHandle_T) 
  477.       return Boolean; 
  478.  
  479.    function Get_Current_Time 
  480.      (Self : not null access Ref) 
  481.       return DDS.Time_T; 
  482.  
  483.    procedure Free (This : in out Ref_Access); 
  484.  
  485.    function CreateI 
  486.      (Participant_Factory   : not null access DDS.DomainParticipantFactory.ref; 
  487.       Domain_Id             : in DDS.DomainId_T; 
  488.       Qos                   : in DDS.DomainParticipantQos; 
  489.       A_Listener            : in DDS.DomainParticipantListener.Ref_Access; 
  490.       Mask                  : in DDS.StatusMask) 
  491.       return DDS.DomainParticipant.Ref_Access; 
  492.  
  493.    function CreateI 
  494.      (Participant_Factory : not null access DDS.DomainParticipantFactory.ref; 
  495.       Domain_Id             : in DDS.DomainId_T; 
  496.       Library_Name          : in DDS.String; 
  497.       Profile_Name          : in DDS.String; 
  498.       A_Listener            : in DDS.DomainParticipantListener.Ref_Access; 
  499.       Mask                  : in DDS.StatusMask) 
  500.       return DDS.DomainParticipant.Ref_Access; 
  501.  
  502.  
  503.    type DDS_DomainParticipant_Access is access all DDS_DomainParticipant with Storage_Size => 0; 
  504.    function Get_FacadeI (C_DomainParticpant : DDS_DomainParticipant_Access) 
  505.                          return Ref_Access; 
  506.    function As_Dds_Entety_Access is new Ada.Unchecked_Conversion (DDS_DomainParticipant_Access, DDS.Entity_Impl.DDS_Entity_Access); 
  507.  
  508.    function GetInterface (Self : not null access Ref) return DDS_DomainParticipant_Access; 
  509.    procedure SetInterface (Self : not null access Ref; To : DDS_DomainParticipant_Access); 
  510.  
  511.    procedure Add_Peer 
  512.      (Self             : not null access Ref; 
  513.       Peer_Desc_String : DDS.String); 
  514.  
  515.    procedure Register_Builtin_TypesI (Self : not null access Ref); 
  516.  
  517.    procedure Register_User_TypesI (Self : not null access Ref); 
  518.  
  519.    procedure Delete_Implicit_EntitiesI (Self : not null access Ref); 
  520.  
  521.    procedure Get_Publishers 
  522.      (Self : not null access Ref; 
  523.       Publishers : access DDS.PublisherSeq.Sequence); 
  524.  
  525.    procedure Get_Subscribers 
  526.      (Self        : not null access Ref; 
  527.       Subscribers : access DDS.SubscriberSeq.Sequence); 
  528.  
  529.    type Register_Type_Procedure is not null access procedure 
  530.      (Participant :  not null access DDS.DomainParticipant.Ref'Class); 
  531.  
  532.    procedure Register_Type_Registration (P : Register_Type_Procedure); 
  533. private 
  534.  
  535.    procedure Free_Impl is new Ada.Unchecked_Deallocation (Ref'Class, Ref_Access); 
  536.    procedure Free_Mem (This : in out Ref_Access) renames Free_Impl; 
  537.  
  538. end DDS.DomainParticipant_Impl;