------------------------------------------------------------------------------
-- 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 contains stubs for the libfswatch API
with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
with Ada.Containers.Vectors;
with GNATCOLL.VFS; use GNATCOLL.VFS;
package Libfswatch is
Libfswatch_Error : exception;
-- Used to report any library exception
type Event_Flags is
(No_Op,
Platform_Specific,
Created,
Updated,
Removed,
Renamed,
Owner_Modified,
Attribute_Modified,
Moved_From,
Moved_To,
Is_File,
Is_Dir,
Is_Sym_Link,
Link,
Overflow);
package Event_Flags_Vectors is
new Ada.Containers.Vectors (Natural, Event_Flags);
type Event is record
Path : Unbounded_String;
Flags : Event_Flags_Vectors.Vector;
-- TODO: add a platform-independent time representation
end record;
package Event_Vectors is new Ada.Containers.Vectors (Natural, Event);
type Event_Flags_Array is array (Natural range <>) of Event_Flags;
type Root_Event_Monitor is abstract tagged private;
procedure Callback (Self : in out Root_Event_Monitor;
Events : Event_Vectors.Vector) is abstract;
procedure Blocking_Monitor
(Monitor : in out Root_Event_Monitor'Class;
Paths : File_Array;
Events_Allowed : Event_Flags_Array := (1 .. 0 => No_Op)) is null;
procedure Stop_Monitor (Monitor : in out Root_Event_Monitor'Class) is null;
-- Interrupt the monitoring. This is thread-safe.
private
type Root_Event_Monitor is abstract tagged null record;
type Event_Filter is new Integer;
No_Filter : constant Event_Filter := 0;
end Libfswatch;