You've already forked ada_language_server
mirror of
https://github.com/AdaCore/ada_language_server.git
synced 2026-02-12 12:45:50 -08:00
84 lines
2.9 KiB
Ada
84 lines
2.9 KiB
Ada
------------------------------------------------------------------------------
|
|
-- 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. --
|
|
------------------------------------------------------------------------------
|
|
|
|
with Interfaces.C;
|
|
with Ada.IO_Exceptions;
|
|
|
|
package body LSP.Stdio_Streams is
|
|
|
|
package C renames Interfaces.C;
|
|
|
|
procedure Initialize;
|
|
-- Do OS dependent lowlevel initialization, if required.
|
|
|
|
procedure Initialize is separate;
|
|
|
|
----------
|
|
-- Read --
|
|
----------
|
|
|
|
overriding procedure Read
|
|
(Stream : in out Stdio_Stream;
|
|
Item : out Ada.Streams.Stream_Element_Array;
|
|
Last : out Ada.Streams.Stream_Element_Offset)
|
|
is
|
|
pragma Unreferenced (Stream);
|
|
use type Ada.Streams.Stream_Element_Offset;
|
|
|
|
function read
|
|
(fildes : C.int;
|
|
buf : out Ada.Streams.Stream_Element_Array;
|
|
nbyte : C.size_t) return C.size_t
|
|
with Import => True,
|
|
Convention => C,
|
|
External_Name => "read";
|
|
Done : C.size_t;
|
|
begin
|
|
Done := read (0, Item, Item'Length);
|
|
Last := Item'First + Ada.Streams.Stream_Element_Offset (Done) - 1;
|
|
|
|
if Last < Item'First then
|
|
raise Ada.IO_Exceptions.End_Error with "end of file";
|
|
end if;
|
|
end Read;
|
|
|
|
-----------
|
|
-- Write --
|
|
-----------
|
|
|
|
overriding procedure Write
|
|
(Stream : in out Stdio_Stream;
|
|
Item : Ada.Streams.Stream_Element_Array)
|
|
is
|
|
function write
|
|
(fildes : C.int;
|
|
buf : Ada.Streams.Stream_Element_Array;
|
|
nbyte : C.size_t) return C.size_t
|
|
with Import => True,
|
|
Convention => C,
|
|
External_Name => "write";
|
|
pragma Unreferenced (Stream);
|
|
|
|
Ignore : C.size_t := write (1, Item, Item'Length);
|
|
begin
|
|
null;
|
|
end Write;
|
|
|
|
begin
|
|
Initialize;
|
|
end LSP.Stdio_Streams;
|