home *** CD-ROM | disk | FTP | other *** search
/ Solo Programadores 22 / SOLO_22.iso / packages / win32ada / data.z / win32-stdio.ads < prev    next >
Encoding:
Text File  |  1996-03-15  |  11.4 KB  |  375 lines

  1. -- $Source: /home/harp/1/proto/monoBANK/winnt/win32-stdio.ads,v $ 
  2. -- $Revision: 1.12 $ $Date: 96/03/15 12:56:04 $ $Author: stm $ 
  3. -- See end of file for Copyright (c) information.
  4.  
  5. with Stdarg;
  6. with Win32;
  7. with Win32.Strings;
  8.  
  9. package Win32.Stdio is
  10.  
  11.     use type Interfaces.C.Char_Array;
  12.     
  13.     BUFSIZ : constant := 512;  
  14.     NSTREAM: constant := 40;  
  15.     NFILE  : constant := NSTREAM;  
  16.     EOF    : constant := -1;  
  17.  
  18.     subtype size_t is Win32.Strings.size_t;  
  19.     subtype wchar_t is Win32.wchar_t;  
  20.     subtype wint_t is wchar_t;  
  21.     subtype wctype_t is wchar_t;  
  22.     
  23.     type FILE is
  24.         record
  25.             ptr     : Win32.PSTR; 
  26.             cnt     : Win32.INT; 
  27.             base    : Win32.PSTR; 
  28.             flag    : Win32.INT; 
  29.             file    : Win32.INT; 
  30.             charbuf : Win32.INT; 
  31.             bufsiz  : Win32.INT; 
  32.             tmpfname: Win32.PSTR; 
  33.         end record; 
  34.     
  35.     type FILE_Access is access all FILE;  
  36.  
  37.     P_tmpdir: constant CHAR_Array := "\" & Nul;
  38.     
  39.     L_tmpnam: constant := 14;                               -- P_tmpdir'Length + 12 + 1;
  40.     
  41.     SEEK_CUR    : constant := 1;  
  42.     SEEK_END    : constant := 2;  
  43.     SEEK_SET    : constant := 0;  
  44.     FILENAME_MAX: constant := 260;  
  45.     FOPEN_MAX   : constant := 20;  
  46.     SYS_OPEN    : constant := 20;  
  47.     TMP_MAX     : constant := 32767;  
  48.  
  49.     subtype fpos_t is Win32.LONG;  
  50.  
  51.     IOREAD : constant := 16#0001#;  
  52.     IOWRT  : constant := 16#0002#;  
  53.     IOFBF  : constant := 16#0000#;  
  54.     IOLBF  : constant := 16#0040#;  
  55.     IONBF  : constant := 16#0004#;  
  56.     IOMYBUF: constant := 16#0008#;  
  57.     IOEOF  : constant := 16#0010#;  
  58.     IOERR  : constant := 16#0020#;  
  59.     IOSTRG : constant := 16#0040#;  
  60.     IORW   : constant := 16#0080#;  
  61.     
  62.     function filbuf (stream: FILE_Access) return Win32.INT;  
  63.     
  64.     function flsbuf
  65.         (c      : in Win32.INT; 
  66.          stream : FILE_Access)
  67.         return Win32.INT;  
  68.     
  69.     function fsopen
  70.         (filename : Win32.PCSTR;
  71.          mode     : Win32.PCSTR;
  72.          shflag   : in Win32.INT) return FILE_Access;  
  73.     
  74.     type FILE_array is array (0..NSTREAM-1) of aliased FILE;
  75.  
  76.     -- auxiliary declarations
  77.     type Access_File_Array is access FILE_array;
  78.     function IOB_Addr return Access_File_Array;
  79.     pragma Import(C, IOB_Addr, "__iob_addr");
  80.     -- end auxiliary declarations
  81.  
  82.     iob: FILE_array renames IOB_Addr.all;
  83.  
  84.     stdin : constant FILE_Access := iob(0)'access;
  85.     stdout: constant FILE_Access := iob(1)'access;
  86.     stderr: constant FILE_Access := iob(2)'access;
  87.     
  88.     procedure clearerr (stream : FILE_Access);  
  89.     
  90.     function fclose
  91.         (stream : in FILE_Access) return Win32.INT;  
  92.     
  93.     function fcloseall return Win32.INT;  
  94.     
  95.     function fdopen
  96.         (handle : in Win32.INT;
  97.          mode   : Win32.PCSTR) return FILE_Access;  
  98.     
  99.     function fflush
  100.         (stream : in FILE_Access) return Win32.INT;  
  101.     
  102.     function fgetc
  103.         (stream : in FILE_Access) return Win32.INT;  
  104.     
  105.     function fgetchar return Win32.INT;  
  106.     
  107.     function fgetpos
  108.         (stream : in FILE_Access;
  109.          pos    : access fpos_t) return Win32.INT;  
  110.     
  111.     function fgets
  112.         (string1 : in Win32.PSTR;
  113.          n       : in Win32.INT;
  114.          stream  : in FILE_Access) return Win32.PSTR;  
  115.     
  116.     function feof (Stream: FILE_Access) return Boolean;
  117.  
  118.     function ferror (Stream: FILE_Access) return Boolean;
  119.  
  120.     function fileno (Stream: FILE_Access) return Win32.INT;
  121.  
  122.     function flushall return Win32.INT;  
  123.     
  124.     function fopen
  125.         (filename: Win32.PCSTR;
  126.          mode    : Win32.PCSTR) return FILE_Access;  
  127.     
  128.     function fputc
  129.         (c      : in Win32.INT;
  130.          stream : in FILE_Access)
  131.         return Win32.INT;  
  132.     
  133.     function fputchar
  134.         (c : in Win32.INT) return Win32.INT;  
  135.     
  136.     function fputs
  137.         (string : Win32.PCSTR;
  138.          stream : in FILE_Access) return Win32.INT;  
  139.     
  140.     function fread
  141.         (buffer : in Win32.PVOID;
  142.          size   : in size_t;
  143.          count  : in size_t;
  144.          stream : in FILE_Access) return size_t;  
  145.     
  146.     function freopen
  147.         (path   : Win32.PCSTR;
  148.          mode   : Win32.PCSTR;
  149.          stream : in FILE_Access) return FILE_Access;  
  150.     
  151.     function fsetpos
  152.         (stream : in FILE_Access;
  153.          pos    : access Win32.LONG) return Win32.INT;  
  154.     
  155.     function fseek
  156.         (stream : in FILE_Access;
  157.          offset : in Win32.LONG;
  158.          origin : in Win32.INT) return Win32.INT;  
  159.     
  160.     function ftell
  161.         (stream : in FILE_Access) return Win32.LONG;  
  162.     
  163.     function fwrite
  164.         (buffer : in Win32.PCVOID;
  165.          size   : in size_t;
  166.          count  : in size_t;
  167.          stream : in FILE_Access) return size_t;  
  168.     
  169.     function getc (stream : in FILE_Access) return Win32.INT;  
  170.     
  171.     function getchar return Win32.INT;  
  172.     
  173.     function gets
  174.         (buffer : in Win32.PSTR)
  175.         return Win32.PSTR;  
  176.     
  177.     function getw (stream : in FILE_Access) return Win32.INT;  
  178.     
  179.     procedure perror (string1: Win32.PCSTR);  
  180.     
  181.     function pclose
  182.         (stream : in FILE_Access) return Win32.INT;  
  183.     
  184.     function popen
  185.         (command: Win32.PCSTR;
  186.          mode   : Win32.PCSTR) return FILE_Access;  
  187.     
  188.     function putc
  189.         (c      : in Win32.INT;
  190.          stream : in FILE_Access)
  191.         return Win32.INT;  
  192.     
  193.     function putchar
  194.         (c : in Win32.INT) return Win32.INT;  
  195.     
  196.     function puts
  197.         (string1: Win32.PCSTR) return Win32.INT; 
  198.          
  199.     
  200.     function putw
  201.         (binint : in Win32.INT;
  202.          stream : in FILE_Access)
  203.         return Win32.INT;  
  204.     
  205.     function remove
  206.         (path: Win32.PCSTR) return Win32.INT; 
  207.          
  208.     
  209.     function rename
  210.         (oldname: Win32.PCSTR;
  211.          newname: Win32.PCSTR) return Win32.INT;  
  212.     
  213.     procedure rewind (stream : FILE_Access);  
  214.     
  215.     function rmtmp return Win32.INT;  
  216.     
  217.     procedure setbuf
  218.         (stream : FILE_Access;
  219.          buffer : Win32.PSTR);  
  220.     
  221.     function setvbuf
  222.         (stream : in FILE_Access;
  223.          buffer : in Win32.PSTR;
  224.          mode   : in Win32.INT;
  225.          size   : in size_t) return Win32.INT;  
  226.     
  227.     function tempnam
  228.         (dir    : in Win32.PSTR;
  229.          prefix : in Win32.PSTR)
  230.         return Win32.PSTR;  
  231.     
  232.     function tmpfile return FILE_Access;  
  233.     
  234.     function tmpnam
  235.         (string1 : in Win32.PSTR)
  236.         return Win32.PSTR;  
  237.     
  238.     function ungetc
  239.         (c      : in Win32.INT;
  240.          stream : in FILE_Access)
  241.         return Win32.INT;  
  242.     
  243.     function unlink 
  244.         (filename: Win32.PCSTR) 
  245.         return Win32.INT;  
  246.     
  247.     function fprintf (
  248.         stream : FILE_Access;
  249.         format : Win32.PCSTR;
  250.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  251.  
  252.     function fscanf (
  253.         stream : FILE_Access;
  254.         format : Win32.PCSTR;
  255.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  256.  
  257.     function printf (
  258.         format : Win32.PCSTR;
  259.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  260.  
  261.     function scanf (
  262.         format : Win32.PCSTR;
  263.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  264.  
  265.     function snprintf (
  266.         buffer : Win32.PSTR;
  267.         count  : size_t;
  268.         format : Win32.PCSTR;
  269.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  270.  
  271.     function sprintf (
  272.         buffer : Win32.PSTR;
  273.         format : Win32.PCSTR;
  274.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  275.  
  276.     function sscanf (
  277.         buffer : Win32.PSTR;
  278.         format : Win32.PCSTR;
  279.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  280.  
  281.     function vfprintf (
  282.         stream : FILE_Access;
  283.         format : Win32.PCSTR;
  284.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  285.  
  286.     function vprintf (
  287.         format : Win32.PCSTR;
  288.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  289.  
  290.     function vsnprintf (
  291.         buffer : Win32.PSTR;
  292.         count  : size_t;
  293.         format : Win32.PCSTR;
  294.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  295.  
  296.     function vsprintf (
  297.         buffer : Win32.PSTR;
  298.         format : Win32.PCSTR;
  299.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT;
  300.  
  301. private
  302.  
  303.     pragma Convention(C, FILE); 
  304.     
  305.     pragma Inline(feof);
  306.     pragma Inline(ferror);
  307.     pragma Inline(fileno);
  308.  
  309.     pragma Import(C, filbuf, "_filbuf"); 
  310.     pragma Import(C, flsbuf, "_flsbuf"); 
  311.     pragma Import(C, fsopen, "_fsopen"); 
  312.     pragma Import(C, clearerr, "clearerr"); 
  313.     pragma Import(C, fclose, "fclose"); 
  314.     pragma Import(C, fcloseall, "_fcloseall"); 
  315.     pragma Import(C, fdopen, "_fdopen"); 
  316.     pragma Import(C, fflush, "fflush"); 
  317.     pragma Import(C, fgetc, "fgetc"); 
  318.     pragma Import(C, fgetchar, "_fgetchar"); 
  319.     pragma Import(C, fgetpos, "fgetpos"); 
  320.     pragma Import(C, fgets, "fgets"); 
  321.     pragma Import(C, flushall, "_flushall"); 
  322.     pragma Import(C, fopen, "fopen"); 
  323.     pragma Import(C, fputc, "fputc"); 
  324.     pragma Import(C, fputchar, "_fputchar"); 
  325.     pragma Import(C, fputs, "fputs"); 
  326.     pragma Import(C, fread, "fread"); 
  327.     pragma Import(C, freopen, "freopen"); 
  328.     pragma Import(C, fsetpos, "fsetpos"); 
  329.     pragma Import(C, fseek, "fseek"); 
  330.     pragma Import(C, ftell, "ftell"); 
  331.     pragma Import(C, fwrite, "fwrite"); 
  332.     pragma Import(C, getc, "getc"); 
  333.     pragma Import(C, getchar, "getchar"); 
  334.     pragma Import(C, gets, "gets"); 
  335.     pragma Import(C, getw, "_getw"); 
  336.     pragma Import(C, perror, "perror"); 
  337.     pragma Import(C, pclose, "_pclose"); 
  338.     pragma Import(C, popen, "_popen"); 
  339.     pragma Import(C, putc, "putc"); 
  340.     pragma Import(C, putchar, "putchar"); 
  341.     pragma Import(C, puts, "puts"); 
  342.     pragma Import(C, putw, "_putw"); 
  343.     pragma Import(C, remove, "remove"); 
  344.     pragma Import(C, rename, "rename"); 
  345.     pragma Import(C, rewind, "rewind"); 
  346.     pragma Import(C, rmtmp, "_rmtmp"); 
  347.     pragma Import(C, setbuf, "setbuf"); 
  348.     pragma Import(C, setvbuf, "setvbuf"); 
  349.     pragma Import(C, tempnam, "_tempnam"); 
  350.     pragma Import(C, tmpfile, "tmpfile"); 
  351.     pragma Import(C, tmpnam, "tmpnam"); 
  352.     pragma Import(C, ungetc, "ungetc"); 
  353.     pragma Import(C, unlink, "_unlink"); 
  354.  
  355. -------------------------------------------------------------------------------
  356. --
  357. -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS PROVIDED WITHOUT CHARGE
  358. -- "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING
  359. -- BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
  360. -- FITNESS FOR A PARTICULAR PURPOSE.  The user assumes the entire risk as to
  361. -- the accuracy and the use of this file.  This file may be used, copied,
  362. -- modified and distributed only by licensees of Microsoft Corporation's
  363. -- WIN32 Software Development Kit in accordance with the terms of the 
  364. -- licensee's End-User License Agreement for Microsoft Software for the
  365. -- WIN32 Development Kit.
  366. --
  367. -- Copyright (c) Intermetrics, Inc. 1995
  368. -- Portions (c) 1985-1994 Microsoft Corporation with permission.
  369. -- Microsoft is a registered trademark and Windows and Windows NT are
  370. -- trademarks of Microsoft Corporation.
  371. --
  372. -------------------------------------------------------------------------------
  373.  
  374. end Win32.Stdio;
  375.