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