-- -- Copyright (C) 2023, AdaCore -- -- SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -- private with Ada.Containers.Vectors; package VSS.JSON.Pull_Readers.Buffered is pragma Preelaborate; type JSON_Buffered_Pull_Reader (Reader : not null access JSON_Pull_Reader'Class) is limited new JSON_Pull_Reader with private; procedure Mark (Self : in out JSON_Buffered_Pull_Reader'Class); -- Mark position in the input stream. Call of the Reset subprogram -- reposition stream to the marked position. procedure Reset (Self : in out JSON_Buffered_Pull_Reader'Class); -- Reposition stream to the last marked position. procedure Unmark (Self : in out JSON_Buffered_Pull_Reader'Class); -- Remove position mark. -- GNAT 20230603: subprograms below are invisible when declared in the -- private part. overriding function Element_Kind (Self : JSON_Buffered_Pull_Reader) return VSS.JSON.Streams.JSON_Stream_Element_Kind; overriding function Key_Name (Self : JSON_Buffered_Pull_Reader) return VSS.Strings.Virtual_String; overriding function String_Value (Self : JSON_Buffered_Pull_Reader) return VSS.Strings.Virtual_String; overriding function Number_Value (Self : JSON_Buffered_Pull_Reader) return VSS.JSON.JSON_Number; overriding function Boolean_Value (Self : JSON_Buffered_Pull_Reader) return Boolean; private package JSON_Stream_Element_Vectors is new Ada.Containers.Vectors (Index_Type => Positive, Element_Type => VSS.JSON.Streams.JSON_Stream_Element, "=" => VSS.JSON.Streams."="); type JSON_Buffered_Pull_Reader (Reader : not null access JSON_Pull_Reader'Class) is limited new JSON_Pull_Reader with record Buffer : JSON_Stream_Element_Vectors.Vector; Current : Natural := 0; Store : Boolean := False; end record with Preelaborable_Initialization; overriding function At_End (Self : JSON_Buffered_Pull_Reader) return Boolean; overriding function Read_Next (Self : in out JSON_Buffered_Pull_Reader) return VSS.JSON.Streams.JSON_Stream_Element_Kind; overriding procedure Clear (Self : in out JSON_Buffered_Pull_Reader); overriding function Error (Self : JSON_Buffered_Pull_Reader) return JSON_Reader_Error; overriding function Error_Message (Self : JSON_Buffered_Pull_Reader) return VSS.Strings.Virtual_String; overriding procedure Raise_Error (Self : in out JSON_Buffered_Pull_Reader; Message : VSS.Strings.Virtual_String); overriding procedure Skip_Current_Array (Self : in out JSON_Buffered_Pull_Reader); overriding procedure Skip_Current_Object (Self : in out JSON_Buffered_Pull_Reader); overriding procedure Skip_Current_Value (Self : in out JSON_Buffered_Pull_Reader); end VSS.JSON.Pull_Readers.Buffered;