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