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.DataReader; 
  13. with DDS.Domain_Entity_Impl; 
  14. with DDS.Entity_Impl; 
  15. with DDS.Subscriber; 
  16. with DDS.Topic; 
  17. with DDS.TopicDescription; 
  18. with DDS.DataReaderListener; 
  19. with DDS.QueryCondition; 
  20. with DDS.ReadCondition; 
  21. with DDS.MetpTypeSupport; 
  22. with DDS.IndexCondition; 
  23. with System; 
  24. with RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h; 
  25. with RTIDDS.Low_Level.ndds_dds_c_dds_c_subscription_h; 
  26.  
  27. package DDS.DataReader_Impl is 
  28.  
  29.    type Ref is abstract new DDS.Domain_Entity_Impl.Ref and DDS.DataReader.Ref with private; 
  30.    type Ref_Access is access all Ref'Class; 
  31.  
  32.    function Create_Readcondition 
  33.      (Self            : not null access Ref; 
  34.       Sample_States   : in DDS.SampleStateMask; 
  35.       View_States     : in DDS.ViewStateMask; 
  36.       Instance_States : in DDS.InstanceStateMask) 
  37.       return DDS.ReadCondition.Ref_Access; 
  38.  
  39.    function Create_Querycondition 
  40.      (Self             : not null access Ref; 
  41.       Sample_States    : in DDS.SampleStateMask; 
  42.       View_States      : in DDS.ViewStateMask; 
  43.       Instance_States  : in DDS.InstanceStateMask; 
  44.       Query_Expression : in DDS.String; 
  45.       Query_Parameters : in DDS.String_Seq.Sequence) 
  46.       return DDS.QueryCondition.Ref_Access; 
  47.  
  48.    function Create_IndexCondition 
  49.      (Self            : not null access Ref; 
  50.       Index_Name      : in DDS.String; 
  51.       Sample_State    : in DDS.SampleStateMask; 
  52.       view_state      : in DDS.ViewStateMask; 
  53.       instance_state  : in DDS.InstanceStateMask; 
  54.       Sample_Info     : in DDS.SampleInfo) 
  55.       return DDS.IndexCondition.Ref_Access; 
  56.  
  57.    procedure Delete_Readcondition 
  58.      (Self        : not null access Ref; 
  59.       A_Condition : access DDS.ReadCondition.Ref'Class); 
  60.  
  61.    procedure  Delete_Contained_Entities 
  62.      (Self : not null access Ref); 
  63.    --  Deletes all the entities that were created by means of the "create" operations on the DDS_DataReader. 
  64.    --  Deletes all contained DDS_ReadCondition and DDS_QueryCondition objects. 
  65.    --  Once DDS_DataReader_delete_contained_entities returns successfully, 
  66.    --  the application may delete the DDS_DataReader, knowing that it has no contained 
  67.    --- DDS_ReadCondition and DDS_QueryCondition objects. 
  68.    --      rasies exception on error 
  69.  
  70.    procedure Set_Qos 
  71.      (Self : not null access Ref; 
  72.       Qos  : in DDS.DataReaderQoS); 
  73.  
  74.    procedure Set_Qos_With_Profile 
  75.      (Self          : not null access Ref; 
  76.       Library_Name  : in String; 
  77.       Profile_Name  : in String); 
  78.    procedure Set_Qos_With_Profile 
  79.      (Self          : not null access Ref; 
  80.       Library_Name  : in Standard.String; 
  81.       Profile_Name  : in Standard.String); 
  82.  
  83.    procedure Get_Qos 
  84.      (Self : not null access Ref; 
  85.       Qos  : in out DDS.DataReaderQoS); 
  86.  
  87.    procedure Set_Listener 
  88.      (Self       : not null access Ref; 
  89.       A_Listener : in DDS.DataReaderListener.Ref_Access; 
  90.       Mask       : in DDS.StatusMask); 
  91.  
  92.    function Get_Listener 
  93.      (Self : not null access Ref) 
  94.       return DDS.DataReaderListener.Ref_Access; 
  95.  
  96.    procedure Call_ListnerT 
  97.      (Self       : not null access Ref; 
  98.       A_Listener : in DDS.DataReaderListener.Ref_Access; 
  99.       Mask       : in DDS.StatusMask); 
  100.  
  101.    function Get_Topicdescription 
  102.      (Self : not null access Ref) 
  103.       return DDS.TopicDescription.Ref_Access; 
  104.  
  105.    function Get_Subscriber 
  106.      (Self : not null access Ref) 
  107.       return access DDS.Subscriber.Ref'Class; 
  108.  
  109.    procedure Get_Sample_Rejected_Status 
  110.      (Self   : not null access Ref; 
  111.       Status : in out DDS.SampleRejectedStatus); 
  112.  
  113.    procedure Get_Liveliness_Changed_Status 
  114.      (Self   : not null access Ref; 
  115.       Status : in out DDS.LivelinessChangedStatus); 
  116.  
  117.    procedure Get_Requested_Deadline_Missed_Status 
  118.      (Self   : not null access Ref; 
  119.       Status : in out DDS.RequestedDeadlineMissedStatus); 
  120.  
  121.    procedure Get_Requested_Incompatible_Qos_Status 
  122.      (Self   : not null access Ref; 
  123.       Status : in out DDS.RequestedIncompatibleQosStatus); 
  124.  
  125.    procedure Get_Subscription_Matched_Status 
  126.      (Self   : not null access Ref; 
  127.       Status : in out DDS.SubscriptionMatchedStatus); 
  128.  
  129.    procedure Get_Sample_Lost_Status 
  130.      (Self   : not null access Ref; 
  131.       Status : in out DDS.SampleLostStatus); 
  132.  
  133.    procedure Get_Datareader_Cache_Status 
  134.      (Self   : not null access Ref; 
  135.       Status : in out DDS.DataReaderCacheStatus); 
  136.  
  137.    procedure Get_Datareader_Protocol_Status 
  138.      (Self   : not null access Ref; 
  139.       Status : in out DDS.DataReaderProtocolStatus); 
  140.  
  141.    procedure Get_Matched_Publication_Datareader_Protocol_Status 
  142.      (Self               : not null access Ref; 
  143.       Status             : in out DDS.DataReaderProtocolStatus; 
  144.       Publication_Handle : not null access DDS.InstanceHandle_T); 
  145.  
  146.    procedure Wait_For_Historical_Data 
  147.      (Self     : not null access Ref; 
  148.       Max_Wait : in DDS.Duration_T); 
  149.  
  150.    function Get_Matched_Publications 
  151.      (Self                : not null access Ref) 
  152.       return DDS.InstanceHandle_Seq.Sequence; 
  153.  
  154.    function Get_Matched_Publication_Data 
  155.      (Self               : not null access Ref; 
  156.       Publication_Handle : not null access DDS.InstanceHandle_T) 
  157.       return DDS.PublicationBuiltinTopicData; 
  158.  
  159.    procedure Free (This : in out Ref_Access); 
  160.  
  161.    type DDS_DataReader_Access is access all RTIDDS.Low_Level.ndds_dds_c_dds_c_subscription_h.DDS_DataReader with Storage_Size => 0; 
  162.  
  163.    function CreateI (Subscriber : not null DDS.Subscriber.Ref_Access; 
  164.                      Topic      : not null access DDS.TopicDescription.Ref'Class; 
  165.                      Qos        : in DDS.DataReaderQoS; 
  166.                      Listener   : in DDS.DataReaderListener.Ref_Access; 
  167.                      Mask       : in DDS.StatusMask) 
  168.                      return DDS.DataReader.Ref_Access; 
  169.  
  170.    function CreateI (Subscriber   : not null DDS.Subscriber.Ref_Access; 
  171.                      Topic        : not null access DDS.TopicDescription.Ref'Class; 
  172.                      Library_Name : in DDS.String; 
  173.                      Profile_Name : in DDS.String; 
  174.                      Listener     : in DDS.DataReaderListener.Ref_Access; 
  175.                      Mask         : in DDS.StatusMask) 
  176.                      return DDS.DataReader.Ref_Access; 
  177.  
  178.    function Create_WrapperI (Subscriber   : not null DDS.Subscriber.Ref_Access; 
  179.                              C_DataReader : DDS_DataReader_Access; 
  180.                              Topic        : not null access DDS.Topic.Ref'Class) 
  181.                              return Ref_Access; 
  182.  
  183.    function Get_FacadeI (C_DataReader : DDS_DataReader_Access) 
  184.                          return Ref_Access; 
  185.  
  186.  
  187.    procedure Read_Or_Take_UntypedI 
  188.      (Self                                : not null access constant Ref; 
  189.       Is_Loan                             : out DDS.Boolean; 
  190.       Received_Data                       : System.Address; 
  191.       Data_Count                          : out Natural; 
  192.       Info_Seq                            : SampleInfo_Seq.Sequence_Access; 
  193.       Data_Seq_Len                        : Long_Integer; 
  194.       Data_Seq_Max_Len                    : Long_Integer; 
  195.       Data_Seq_Has_Ownership              : Long_Integer; 
  196.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  197.       Data_Size                           : Integer; 
  198.       Max_Samples                         : Long_Integer; 
  199.       Sample_States                       : SampleStateMask; 
  200.       View_States                         : ViewStateMask; 
  201.       Instance_States                     : InstanceStateMask; 
  202.       Take                                : DDS.Boolean); 
  203.    function Read_Or_Take_UntypedI 
  204.      (Self                                : not null access constant Ref; 
  205.       Is_Loan                             : access DDS.Boolean; 
  206.       Received_Data                       : System.Address; 
  207.       Data_Count                          : access Natural; 
  208.       Info_Seq                            : SampleInfo_Seq.Sequence_Access; 
  209.       Data_Seq_Len                        : Long_Integer; 
  210.       Data_Seq_Max_Len                    : Long_Integer; 
  211.       Data_Seq_Has_Ownership              : Long_Integer; 
  212.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  213.       Data_Size                           : Integer; 
  214.       Max_Samples                         : Long_Integer; 
  215.       Sample_States                       : SampleStateMask; 
  216.       View_States                         : ViewStateMask; 
  217.       Instance_States                     : InstanceStateMask; 
  218.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  219.  
  220.  
  221.    procedure ReadI 
  222.      (Self            : not null access Ref; 
  223.       Received_Data   : System.Address; 
  224.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  225.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  226.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  227.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  228.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  229.  
  230.    procedure TakeI 
  231.      (Self            : not null access Ref; 
  232.       Received_Data   : System.Address; 
  233.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  234.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  235.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  236.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  237.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  238.  
  239.    procedure Read_W_Condition 
  240.      (Self          : not null access Ref; 
  241.       Received_Data : System.Address; 
  242.       Info_Seq      : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  243.       Max_Samples   : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  244.       Condition     : access Standard.DDS.ReadCondition.Ref'Class); 
  245.  
  246.    function Read_W_Condition 
  247.      (Self          : not null access Ref; 
  248.       Received_Data : System.Address; 
  249.       Info_Seq      : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  250.       Max_Samples   : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  251.       Condition     : access Standard.DDS.ReadCondition.Ref'Class) return DDS.ReturnCode_T; 
  252.  
  253.  
  254.    procedure Take_W_Condition 
  255.      (Self          : not null access Ref; 
  256.       Received_Data : System.Address; 
  257.       Info_Seq      : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  258.       Max_Samples   : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  259.       Condition     : access Standard.DDS.ReadCondition.Ref'Class); 
  260.  
  261.    function Take_W_Condition 
  262.      (Self          : not null access Ref; 
  263.       Received_Data : System.Address; 
  264.       Info_Seq      : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  265.       Max_Samples   : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  266.       Condition     : access Standard.DDS.ReadCondition.Ref'Class) return DDS.ReturnCode_T; 
  267.  
  268.  
  269.    procedure Read_Next_Sample 
  270.      (Self          : not null access Ref; 
  271.       Received_Data : System.Address; 
  272.       Sample_Info   : not null access Standard.DDS.SampleInfo); 
  273.  
  274.  
  275.    procedure Take_Next_Sample 
  276.      (Self          : not null access Ref; 
  277.       Received_Data : System.Address; 
  278.       Sample_Info   : not null access Standard.DDS.SampleInfo); 
  279.  
  280.  
  281.    procedure Read_Instance 
  282.      (Self            : not null access Ref; 
  283.       Received_Data   : System.Address; 
  284.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  285.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  286.       A_Handle        : access constant Standard.DDS.InstanceHandle_T; 
  287.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  288.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  289.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  290.  
  291.  
  292.    procedure Take_Instance 
  293.      (Self            : not null access Ref; 
  294.       Received_Data   : System.Address; 
  295.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  296.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  297.       A_Handle        : access constant Standard.DDS.InstanceHandle_T; 
  298.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  299.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  300.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  301.  
  302.  
  303.    procedure Read_Next_Instance 
  304.      (Self            : not null access Ref; 
  305.       Received_Data   : System.Address; 
  306.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  307.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  308.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  309.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  310.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  311.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  312.  
  313.  
  314.    procedure Take_Next_Instance 
  315.      (Self            : not null access Ref; 
  316.       Received_Data   : System.Address; 
  317.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  318.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  319.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  320.       Sample_States   : in Standard.DDS.SampleStateMask := Standard.DDS.ANY_SAMPLE_STATE; 
  321.       View_States     : in Standard.DDS.ViewStateMask := Standard.DDS.ANY_VIEW_STATE; 
  322.       Instance_States : in Standard.DDS.InstanceStateMask := Standard.DDS.ANY_INSTANCE_STATE); 
  323.  
  324.  
  325.  
  326.    procedure Read_Next_Instance_W_Condition 
  327.      (Self            : not null access Ref; 
  328.       Received_Data   : System.Address; 
  329.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  330.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  331.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  332.       Condition       : Standard.DDS.ReadCondition.Ref_Access); 
  333.    function Read_Next_Instance_W_Condition 
  334.      (Self            : not null access Ref; 
  335.       Received_Data   : System.Address; 
  336.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  337.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  338.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  339.       Condition       : Standard.DDS.ReadCondition.Ref_Access) return DDS.ReturnCode_T; 
  340.  
  341.  
  342.  
  343.    procedure Take_Next_Instance_W_Condition 
  344.      (Self            : not null access Ref; 
  345.       Received_Data   : System.Address; 
  346.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  347.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  348.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  349.       Condition       : Standard.DDS.ReadCondition.Ref_Access); 
  350.    function Take_Next_Instance_W_Condition 
  351.      (Self            : not null access Ref; 
  352.       Received_Data   : System.Address; 
  353.       Info_Seq        : not null access Standard.DDS.SampleInfo_Seq.Sequence; 
  354.       Max_Samples     : in Standard.DDS.Long := Standard.DDS.LENGTH_UNLIMITED; 
  355.       Previous_Handle : access constant Standard.DDS.InstanceHandle_T; 
  356.       Condition       : Standard.DDS.ReadCondition.Ref_Access) return DDS.ReturnCode_T; 
  357.  
  358.  
  359.  
  360.    procedure Return_Loan 
  361.      (Self          : not null access Ref; 
  362.       Received_Data : System.Address; 
  363.       Info_Seq      : not null access Standard.DDS.SampleInfo_Seq.Sequence); 
  364.  
  365.  
  366.  
  367.    function Lookup_Instance 
  368.      (Self       : not null access Ref; 
  369.       Key_Holder : System.Address) return Standard.DDS.InstanceHandle_T; 
  370.  
  371.    function Is_Data_ConsistentI 
  372.      (Self          : not null access Ref; 
  373.       Sample        : System.Address; 
  374.       Sample_Info   : not null DDS.SampleInfo_Access; 
  375.       MetpImpl      : DDS.MetpTypeSupport.Ref_Access) return Standard.Boolean; 
  376.  
  377.    procedure Finalize_Callback 
  378.      (Arg1 : System.Address; 
  379.       Arg2 : System.Address; 
  380.       Arg3 : access RTIDDS.Low_Level.ndds_reda_reda_worker_impl_h.REDAWorker); 
  381.    pragma Convention (C, Finalize_Callback); 
  382.  
  383.    procedure  call_listener (Self  : not null access Ref; 
  384.                              mask  : StatusMask); 
  385.  
  386.    procedure  set_liveliness_changed_status 
  387.      (Self : not null access Ref; 
  388.       To  : LivelinessChangedStatus); 
  389.  
  390.    function GetInterface (Self : not null access constant Ref) return DDS_DataReader_Access; 
  391.    procedure SetInterface (Self : not null access Ref; To : DDS_DataReader_Access); 
  392.    function as_dds_entety_access is 
  393.      new Ada.Unchecked_Conversion (DDS_DataReader_Access, DDS.Entity_Impl.DDS_Entity_Access); 
  394.  
  395.  
  396.    procedure Get_Key_Value_UntypedI 
  397.      (Self          : not null access constant Ref; 
  398.       Key_Holder    : System.Address; 
  399.       Handle        : access constant DDS.InstanceHandle_T); 
  400.  
  401.    procedure Get_Key_Value 
  402.      (Self       : not null access constant Ref; 
  403.       Key_Holder : System.Address; 
  404.       Handle     : access constant Standard.DDS.InstanceHandle_T) renames Get_Key_Value_UntypedI; 
  405.  
  406.  
  407.    function Lookup_Instance_UntypedI (Self          : not null access constant Ref; 
  408.                                       Key_Holder    : System.Address) return DDS.InstanceHandle_T; 
  409.  
  410.  
  411. --  DDS_InstanceHandle_t TDataReader_lookup_instance(TDataReader* self, 
  412. --                                                   const TData* key_holder) { 
  413. --      return DDS_DataReader_lookup_instance_untypedI( 
  414. --          (DDS_DataReader *)self, key_holder); 
  415. --  } 
  416. -- 
  417. --  DDS.ReturnCode_t TDataReader_add_sample_to_remote_writer_queue(TDataReader* self, 
  418. --                                                              const TData* local_data, 
  419. --                                                              const struct DDS_GUID_t* queue_writer_guid) { 
  420. --      return DDS_DataReader_add_sample_to_remote_writer_queue_untypedI( 
  421. --          (DDS_DataReader *)self, local_data, queue_writer_guid); 
  422. --  } 
  423.  
  424.    function Return_Loan_UntypedI 
  425.      (Self          : not null access constant Ref; 
  426.       Received_Data : System.Address; 
  427.       Data_Count    : Natural; 
  428.       Info_Seq      : Standard.DDS.SampleInfo_Seq.Sequence) return DDS.ReturnCode_T; 
  429.  
  430.    procedure Return_Loan_UntypedI 
  431.      (Self          : not null access constant Ref; 
  432.       Received_Data : System.Address; 
  433.       Data_Count    : Natural; 
  434.       Info_Seq      : Standard.DDS.SampleInfo_Seq.Sequence); 
  435.  
  436.  
  437.    function Read_Or_Take_W_Condition_UntypedI 
  438.      (Self                                : not null access constant Ref; 
  439.       Is_Loan                             : out DDS.Boolean; 
  440.       Received_Data                       : System.Address; 
  441.       Data_Count                          : access Natural; 
  442.       Info_Seq                            : SampleInfo_Seq.Sequence; 
  443.       Data_Seq_Len                        : Long_Integer; 
  444.       Data_Seq_Max_Len                    : Long_Integer; 
  445.       Data_Seq_Has_Ownership              : Long_Integer; 
  446.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  447.       Data_Size                           : Integer; 
  448.       Max_Samples                         : Long_Integer; 
  449.       Condition                           : not null access DDS.ReadCondition.Ref'Class; 
  450.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  451.  
  452.    function Read_Or_Take_Instance_UntypedI 
  453.      (Self                                : not null access constant Ref; 
  454.       Is_Loan                             : out DDS.Boolean; 
  455.       Received_Data                       : System.Address; 
  456.       Data_Count                          : access Natural; 
  457.       Info_Seq                            : SampleInfo_Seq.Sequence; 
  458.       Data_Seq_Len                        : Long_Integer; 
  459.       Data_Seq_Max_Len                    : Long_Integer; 
  460.       Data_Seq_Has_Ownership              : Long_Integer; 
  461.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  462.       Data_Size                           : Integer; 
  463.       Max_Samples                         : Long_Integer; 
  464.       Handle                              : DDS.InstanceHandle_T_Access; 
  465.       Sample_States                       : DDS.SampleStateMask; 
  466.       View_States                         : DDS.ViewStateMask; 
  467.       Instance_States                     : DDS.InstanceStateMask; 
  468.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  469.  
  470.    function Read_Or_Take_Instance_W_Condition_UntypedI 
  471.      (Self                                : not null access constant Ref; 
  472.       Is_Loan                             : access DDS.Boolean; 
  473.       Received_Data                       : System.Address; 
  474.       Data_Count                          : access Natural; 
  475.       Info_Seq                            : SampleInfo_Seq.Sequence; 
  476.       Data_Seq_Len                        : Long_Integer; 
  477.       Data_Seq_Max_Len                    : Long_Integer; 
  478.       Data_Seq_Has_Ownership              : Long_Integer; 
  479.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  480.       Data_Size                           : Integer; 
  481.       Max_Samples                         : Long_Integer; 
  482.       Handle                              : DDS.InstanceHandle_T_Access; 
  483.       Condition                           : not null access DDS.ReadCondition.Ref'Class; 
  484.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  485.  
  486.    function Read_Or_Take_Next_Instance_UntypedI 
  487.      (Self                                : not null access constant Ref; 
  488.       Is_Loan                             : access DDS.Boolean; 
  489.       Received_Data                       : System.Address; 
  490.       Data_Count                          : access Natural; 
  491.       Info_Seq                            : SampleInfo_Seq.Sequence; 
  492.       Data_Seq_Len                        : Long_Integer; 
  493.       Data_Seq_Max_Len                    : Long_Integer; 
  494.       Data_Seq_Has_Ownership              : Long_Integer; 
  495.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  496.       Data_Size                           : Integer; 
  497.       Max_Samples                         : Long_Integer; 
  498.       Previous_Handle                     : DDS.InstanceHandle_T_Access; 
  499.       Sample_States                       : DDS.SampleStateMask; 
  500.       View_States                         : DDS.ViewStateMask; 
  501.       Instance_States                     : DDS.InstanceStateMask; 
  502.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  503.  
  504.    function Read_Or_Take_Next_Instance_W_Condition_UntypedI 
  505.      (Self                                : not null access constant Ref; 
  506.       Is_Loan                             : access DDS.Boolean; 
  507.       Received_Data                       : System.Address; 
  508.       Data_Count                          : access Natural; 
  509.       Info_Seq                            : SampleInfo_Seq.Sequence; 
  510.       Data_Seq_Len                        : Long_Integer; 
  511.       Data_Seq_Max_Len                    : Long_Integer; 
  512.       Data_Seq_Has_Ownership              : Long_Integer; 
  513.       Data_Seq_Contiguous_Buffer_For_Copy : System.Address; 
  514.       Data_Size                           : Integer; 
  515.       Max_Samples                         : Long_Integer; 
  516.       Previous_Handle                     : DDS.InstanceHandle_T_Access; 
  517.       Condition                           : not null access DDS.ReadCondition.Ref'Class; 
  518.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  519.  
  520.    function Read_Or_Take_Next_Sample_UntypedI 
  521.      (Self                                : not null access constant Ref; 
  522.       Received_Data                       : System.Address; 
  523.       Sample_Info                         : DDS.SampleInfo; 
  524.       Take                                : DDS.Boolean) return DDS.ReturnCode_T; 
  525.  
  526.    function Get_Metp (Self : not null access Ref) return not null DDS.MetpTypeSupport.Ref_Access is abstract; 
  527.  
  528. private 
  529.  
  530.    type Ref is abstract new DDS.Domain_Entity_Impl.Ref and DDS.DataReader.Ref with null record; 
  531.  
  532.    procedure Free_Impl is new Ada.Unchecked_Deallocation (Ref'Class, Ref_Access); 
  533.    procedure Free (This : in out Ref_Access) renames Free_Impl; 
  534.  
  535.  
  536. end DDS.DataReader_Impl;