------------------------------------------------------------------------------ -- Language Server Protocol -- -- -- -- Copyright (C) 2018-2019, AdaCore -- -- -- -- This is free software; you can redistribute it and/or modify it under -- -- terms of the GNU General Public License as published by the Free Soft- -- -- ware Foundation; either version 3, or (at your option) any later ver- -- -- sion. This software is distributed in the hope that it will be useful, -- -- but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHAN- -- -- TABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public -- -- License for more details. You should have received a copy of the GNU -- -- General Public License distributed with this software; see file -- -- COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy -- -- of the license. -- ------------------------------------------------------------------------------ -- This package provides generic vector to implement Language Server Protocol. with Ada.Containers.Vectors; with Ada.Streams; generic type Element is private; Write_Empty : LSP.On_Empty_Array; -- How to write an empty array: skip, write `[]` or write `null` with function "=" (Left, Right : Element) return Boolean is <>; package LSP.Generic_Vectors is package Element_Vectors is new Ada.Containers.Vectors (Positive, Element); type Vector is new Element_Vectors.Vector with null record; overriding function "=" (Left, Right : Vector) return Boolean is (Element_Vectors."=" (Element_Vectors.Vector (Left), Element_Vectors.Vector (Right))); procedure Read_Vector (S : access Ada.Streams.Root_Stream_Type'Class; V : out Vector); procedure Write_Vector (S : access Ada.Streams.Root_Stream_Type'Class; V : Vector); for Vector'Read use Read_Vector; for Vector'Write use Write_Vector; end LSP.Generic_Vectors;