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