with System;
with Interfaces.C;
with Interfaces.C.Strings;

use Interfaces.C;

generic

   with procedure Mount (Success : out Boolean);

   with procedure Open (File_Path : String; Success : out Boolean);
   with procedure Close;

   with procedure Read (Buf : out Buffer_Type; Success : out Boolean);

package FS.FILO.VFS
with
   SPARK_Mode => Off
is

   function C_Mount return int is (0);

   function C_Open (File_Path : Strings.chars_ptr) return int is (0);
   procedure C_Close is null;
   
   function C_Read (Buf : System.Address; Len : int) return int is (0);

end FS.FILO.VFS;
