home *** CD-ROM | disk | FTP | other *** search
/ Solo Programadores 22 / SOLO_22.iso / packages / win32ada / data.z / win32-stdio.adb < prev    next >
Encoding:
Text File  |  1995-12-01  |  8.0 KB  |  241 lines

  1. -- $Source: /home/harp/1/proto/monoBANK/winnt/win32-stdio.adb,v $ 
  2. -- $Revision: 1.5 $ $Date: 95/02/06 11:29:47 $ $Author: mg $ 
  3. -------------------------------------------------------------------------------
  4. --
  5. -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT 
  6. -- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED 
  7. -- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR 
  8. -- PURPOSE.  The user assumes the entire risk as to the accuracy and the 
  9. -- use of this file.
  10. --
  11. -- Copyright (c) Intermetrics, Inc. 1995
  12. -- Royalty-free, unlimited, worldwide, non-exclusive use, modification, 
  13. -- reproduction and further distribution of this file is permitted.
  14. --
  15. -------------------------------------------------------------------------------
  16.  
  17.  
  18. with Ada.Unchecked_Conversion;
  19. with Stdarg.Impl;
  20. with Stdarg.Inst;
  21.  
  22. package body Win32.Stdio is
  23.  
  24.     use Stdarg, Stdarg.Impl, Stdarg.Inst;
  25.  
  26.     function feof (Stream: FILE_Access) return Boolean is
  27.         use Interfaces.C;
  28.     begin
  29.         return((Unsigned(Stream.Flag) and IOEOF) /= 0);
  30.     end Feof;
  31.  
  32.     function Ferror (Stream: FILE_Access) return Boolean is
  33.       use Interfaces.C;
  34.     begin
  35.         return((Unsigned(Stream.Flag) and IOERR) /= 0);
  36.     end Ferror;
  37.  
  38.     function Fileno (Stream: FILE_Access) return Interfaces.C.Int is
  39.     begin
  40.       return Stream.File;
  41.     end Fileno;
  42.  
  43.     function "&" is new Stdarg.Concat(FILE_Access);
  44.     function "&" is new Stdarg.Concat(Win32.PCSTR);
  45.     function "&" is new Stdarg.Concat(Win32.PCHAR);
  46.  
  47.     function fprintf (
  48.         stream : FILE_Access;
  49.         format : Win32.PCSTR;
  50.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  51.  
  52.         Complete_Args: Stdarg.Arglist :=
  53.             Stdarg.Empty & Stream & Format & Args;
  54.  
  55.         function C_Fprintf return Win32.INT;
  56.         pragma Import(C, C_Fprintf, "fprintf");
  57.  
  58.         function To_INT is new Ada.Unchecked_Conversion(
  59.                          Stdarg.C_Param, Win32.INT);
  60.     begin
  61.         return To_INT(F_Varargs(
  62.             C_Fprintf'Address,
  63.             ArgCount(Complete_Args),
  64.             Address_of_First_Arg(Complete_Args)));
  65.     end fprintf;
  66.  
  67.     function fscanf (
  68.         stream : FILE_Access;
  69.         format : Win32.PCSTR;
  70.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  71.  
  72.         Complete_Args: Stdarg.Arglist :=
  73.             Stdarg.Empty & Stream & Format & Args;
  74.  
  75.         function C_fscanf return Win32.INT;
  76.         pragma Import(C, C_fscanf, "fscanf");
  77.  
  78.         function To_INT is new Ada.Unchecked_Conversion(
  79.                          Stdarg.C_Param, Win32.INT);
  80.     begin
  81.         return To_INT(F_Varargs(
  82.             C_fscanf'Address,
  83.             ArgCount(Complete_Args),
  84.             Address_of_First_Arg(Complete_Args)));
  85.     end fscanf;
  86.  
  87.     function printf (
  88.         format : Win32.PCSTR;
  89.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  90.  
  91.         Complete_Args: Stdarg.Arglist :=
  92.             Stdarg.Empty & Format & Args;
  93.  
  94.         function C_printf return Win32.INT;
  95.         pragma Import(C, C_printf, "printf");
  96.  
  97.         function To_INT is new Ada.Unchecked_Conversion(
  98.                          Stdarg.C_Param, Win32.INT);
  99.     begin
  100.         -- Dump(Address_of_First_Arg(Complete_Args), ArgCount(Complete_Args));
  101.         return To_INT(F_Varargs(
  102.             C_printf'Address,
  103.             ArgCount(Complete_Args),
  104.             Address_of_First_Arg(Complete_Args)));
  105.     end printf;
  106.  
  107.     function scanf (
  108.         format : Win32.PCSTR;
  109.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  110.  
  111.         Complete_Args: Stdarg.Arglist :=
  112.             Stdarg.Empty & Format & Args;
  113.  
  114.         function C_scanf return Win32.INT;
  115.         pragma Import(C, C_scanf, "scanf");
  116.  
  117.         function To_INT is new Ada.Unchecked_Conversion(
  118.                          Stdarg.C_Param, Win32.INT);
  119.     begin
  120.         return To_INT(F_Varargs(
  121.             C_scanf'Address,
  122.             ArgCount(Complete_Args),
  123.             Address_of_First_Arg(Complete_Args)));
  124.     end scanf;
  125.  
  126.     function snprintf (
  127.         buffer : Win32.PSTR;
  128.         count  : size_t;
  129.         format : Win32.PCSTR;
  130.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  131.  
  132.         Complete_Args: Stdarg.Arglist :=
  133.             Stdarg.Empty & Buffer & Int(Count) & Format & Args;
  134.  
  135.         function C_snprintf return Win32.INT;
  136.         pragma Import(C, C_snprintf, "_snprintf");
  137.  
  138.         function To_INT is new Ada.Unchecked_Conversion(
  139.                          Stdarg.C_Param, Win32.INT);
  140.     begin
  141.         return To_INT(F_Varargs(
  142.             C_snprintf'Address,
  143.             ArgCount(Complete_Args),
  144.             Address_of_First_Arg(Complete_Args)));
  145.     end snprintf;
  146.  
  147.     function sprintf (
  148.         buffer : Win32.PSTR;
  149.         format : Win32.PCSTR;
  150.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  151.  
  152.         Complete_Args: Stdarg.Arglist :=
  153.             Stdarg.Empty & Buffer & Format & Args;
  154.  
  155.         function C_sprintf return Win32.INT;
  156.         pragma Import(C, C_sprintf, "sprintf");
  157.  
  158.         function To_INT is new Ada.Unchecked_Conversion(
  159.                          Stdarg.C_Param, Win32.INT);
  160.     begin
  161.         return To_INT(F_Varargs(
  162.             C_sprintf'Address,
  163.             ArgCount(Complete_Args),
  164.             Address_of_First_Arg(Complete_Args)));
  165.     end sprintf;
  166.  
  167.     function sscanf (
  168.         buffer : Win32.PSTR;
  169.         format : Win32.PCSTR;
  170.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  171.  
  172.         Complete_Args: Stdarg.Arglist :=
  173.             Stdarg.Empty & Buffer & Format & Args;
  174.  
  175.         function C_sscanf return Win32.INT;
  176.         pragma Import(C, C_sscanf, "sscanf");
  177.  
  178.         function To_INT is new Ada.Unchecked_Conversion(
  179.                          Stdarg.C_Param, Win32.INT);
  180.     begin
  181.         return To_INT(F_Varargs(
  182.             C_sscanf'Address,
  183.             ArgCount(Complete_Args),
  184.             Address_of_First_Arg(Complete_Args)));
  185.     end sscanf;
  186.  
  187.     function vfprintf (
  188.         stream : FILE_Access;
  189.         format : Win32.PCSTR;
  190.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  191.  
  192.         function C_Vfprintf(Stream : FILE_Access;
  193.                             Format : Win32.PCSTR;
  194.                             AP     : Param_Access) return Win32.INT;
  195.         pragma Import(C, C_Vfprintf, "vfprintf");
  196.     begin
  197.         return C_Vfprintf(Stream, Format, Address_of_Vararg_List (Args));
  198.     end vfprintf;
  199.  
  200.     function vprintf (
  201.         format : Win32.PCSTR;
  202.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  203.  
  204.         function C_Vprintf(Format  : Win32.PCSTR;
  205.                             AP     : Param_Access) return Win32.INT;
  206.         pragma Import(C, C_Vprintf, "vprintf");
  207.     begin
  208.         return C_Vprintf(Format, Address_of_Vararg_List (Args));
  209.     end vprintf;
  210.  
  211.     function vsnprintf (
  212.         buffer : Win32.PSTR;
  213.         count  : size_t;
  214.         format : Win32.PCSTR;
  215.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  216.  
  217.         function C_Vsnprintf(Buffer  : Win32.PSTR;
  218.                               Count  : size_t;
  219.                               Format : Win32.PCSTR;
  220.                               AP     : Param_Access) return Win32.INT;
  221.         pragma Import(C, C_Vsnprintf, "_vsnprintf");
  222.     begin
  223.         return C_Vsnprintf(Buffer, Count, Format, 
  224.                Address_of_Vararg_List (Args));
  225.     end vsnprintf;
  226.  
  227.     function vsprintf (
  228.         buffer : Win32.PSTR;
  229.         format : Win32.PCSTR;
  230.         args   : Stdarg.ArgList := Stdarg.Empty) return Win32.INT is
  231.  
  232.         function C_Vsprintf(Buffer  : Win32.PSTR;
  233.                              Format : Win32.PCSTR;
  234.                              AP     : Param_Access) return Win32.INT;
  235.         pragma Import(C, C_Vsprintf, "vsprintf");
  236.     begin
  237.         return C_Vsprintf(Buffer, Format, Address_of_Vararg_List (Args));
  238.     end vsprintf;
  239.  
  240. end Win32.Stdio;
  241.