1. -- Allegro 4.2.2 - File and compression routines 
  2. -- 
  3. -- This package is a high-level API for reading packfiles located in memory. 
  4. -- Writing to memory is not supported. 
  5.  
  6. with Ada.Streams;                       use Ada.Streams; 
  7.  
  8. package Allegro.Files.Memory is 
  9.  
  10.     function Pack_FOpen( mem     : access Stream_Element_Array; 
  11.                          consume : Boolean := False ) return A_Packfile; 
  12.  
  13. private 
  14.  
  15.     type Memory_Info is 
  16.         record 
  17.             mem      : access Stream_Element_Array; 
  18.             offset   : Stream_Element_Offset; 
  19.             consumed : Boolean := False; 
  20.         end record; 
  21.     type A_Memory_Info is access all Memory_Info; 
  22.     pragma No_Strict_Aliasing( A_Memory_Info ); 
  23.  
  24.     ---------------------------------------------------------------------------- 
  25.  
  26.     function Mem_pf_close( userdata : Address ) return Integer; 
  27.     pragma Convention( C, Mem_pf_close ); 
  28.  
  29.     function Mem_pf_getc( userdata : Address ) return Integer; 
  30.     pragma Convention( C, Mem_pf_getc ); 
  31.  
  32.     function Mem_pf_ungetc( c : Integer; userdata : Address ) return Integer; 
  33.     pragma Convention( C, Mem_pf_ungetc ); 
  34.  
  35.     function Mem_pf_fread( p        : Address; 
  36.                            n        : Interfaces.C.long; 
  37.                            userdata : Address ) return Interfaces.C.long; 
  38.     pragma Convention( C, Mem_pf_fread ); 
  39.  
  40.     function Mem_pf_putc( c : Integer; userdata : Address ) return Integer; 
  41.     pragma Convention( C, Mem_pf_putc ); 
  42.  
  43.     function Mem_pf_fwrite( p        : Address; 
  44.                             n        : Interfaces.C.long; 
  45.                             userdata : Address ) return Interfaces.C.long; 
  46.     pragma Convention( C, Mem_pf_fwrite ); 
  47.  
  48.     function Mem_pf_seek( userdata : Address; offset : Integer ) return Integer; 
  49.     pragma Convention( C, Mem_pf_seek ); 
  50.  
  51.     function Mem_pf_feof( userdata : Address ) return Integer; 
  52.     pragma Convention( C, Mem_pf_feof ); 
  53.  
  54.     function Mem_pf_ferror( userdata : Address ) return Integer; 
  55.     pragma Convention( C, Mem_pf_ferror ); 
  56.  
  57. end Allegro.Files.Memory;