| ------------------------------------------------------------------------------ |
| -- -- |
| -- GNAT COMPILER COMPONENTS -- |
| -- -- |
| -- I N T E R F A C E S . O S 2 L I B -- |
| -- -- |
| -- S p e c -- |
| -- -- |
| -- Copyright (C) 1993-1997 Free Software Foundation, Inc. -- |
| -- -- |
| -- GNAT is free software; you can redistribute it and/or modify it under -- |
| -- terms of the GNU General Public License as published by the Free Soft- -- |
| -- ware Foundation; either version 2, or (at your option) any later ver- -- |
| -- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- |
| -- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- |
| -- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -- |
| -- for more details. You should have received a copy of the GNU General -- |
| -- Public License distributed with GNAT; see file COPYING. If not, write -- |
| -- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, -- |
| -- MA 02111-1307, USA. -- |
| -- -- |
| -- As a special exception, if other files instantiate generics from this -- |
| -- unit, or you link this unit with other files to produce an executable, -- |
| -- this unit does not by itself cause the resulting executable to be -- |
| -- covered by the GNU General Public License. This exception does not -- |
| -- however invalidate any other reasons why the executable file might be -- |
| -- covered by the GNU Public License. -- |
| -- -- |
| -- GNAT was originally developed by the GNAT team at New York University. -- |
| -- Extensive contributions were provided by Ada Core Technologies Inc. -- |
| -- -- |
| ------------------------------------------------------------------------------ |
| |
| -- This package (and children) provide interface definitions to the standard |
| -- OS/2 Library. They are merely a translation of the various <bse*.h> files. |
| |
| -- It is intended that higher level interfaces (with better names, and |
| -- stronger typing!) be built on top of this one for Ada (i.e. clean) |
| -- programming. |
| |
| -- We have chosen to keep names, types, etc. as close as possible to the |
| -- C definition to provide easier reference to the documentation. The main |
| -- exception is when a formal and its type (in C) differed only by the case |
| -- of letters (like in HMUX hmux). In this case, we have prepended "F_" to |
| -- the formal (i.e. F_hmux : HMUX). |
| |
| with Interfaces.C; |
| with Interfaces.C.Strings; |
| with System; |
| |
| package Interfaces.OS2Lib is |
| pragma Preelaborate (OS2Lib); |
| |
| package IC renames Interfaces.C; |
| package ICS renames Interfaces.C.Strings; |
| |
| ------------------- |
| -- General Types -- |
| ------------------- |
| |
| type APIRET is new IC.unsigned_long; |
| type APIRET16 is new IC.unsigned_short; |
| subtype APIRET32 is APIRET; |
| |
| subtype PSZ is ICS.chars_ptr; |
| subtype PCHAR is ICS.chars_ptr; |
| subtype PVOID is System.Address; |
| type PPVOID is access all PVOID; |
| |
| type BOOL32 is new IC.unsigned_long; |
| False32 : constant BOOL32 := 0; |
| True32 : constant BOOL32 := 1; |
| |
| type UCHAR is new IC.unsigned_char; |
| type USHORT is new IC.unsigned_short; |
| type ULONG is new IC.unsigned_long; |
| type PULONG is access all ULONG; |
| |
| -- Coprocessor stack register element. |
| |
| type FPREG is record |
| losig : ULONG; -- Low 32-bits of the mantissa |
| hisig : ULONG; -- High 32-bits of the mantissa |
| signexp : USHORT; -- Sign and exponent |
| end record; |
| pragma Convention (C, FPREG); |
| |
| type AULONG is array (IC.size_t range <>) of ULONG; |
| type AFPREG is array (IC.size_t range <>) of FPREG; |
| |
| type LHANDLE is new IC.unsigned_long; |
| |
| NULLHANDLE : constant := 0; |
| |
| --------------------- |
| -- Time Management -- |
| --------------------- |
| |
| function DosSleep (How_long : ULONG) return APIRET; |
| pragma Import (C, DosSleep, "DosSleep"); |
| |
| type DATETIME is record |
| hours : UCHAR; |
| minutes : UCHAR; |
| seconds : UCHAR; |
| hundredths : UCHAR; |
| day : UCHAR; |
| month : UCHAR; |
| year : USHORT; |
| timezone : IC.short; |
| weekday : UCHAR; |
| end record; |
| |
| type PDATETIME is access all DATETIME; |
| |
| function DosGetDateTime (pdt : PDATETIME) return APIRET; |
| pragma Import (C, DosGetDateTime, "DosGetDateTime"); |
| |
| function DosSetDateTime (pdt : PDATETIME) return APIRET; |
| pragma Import (C, DosSetDateTime, "DosSetDateTime"); |
| |
| ---------------------------- |
| -- Miscelleneous Features -- |
| ---------------------------- |
| |
| -- Features which do not fit any child |
| |
| function DosBeep (Freq : ULONG; Dur : ULONG) return APIRET; |
| pragma Import (C, DosBeep, "DosBeep"); |
| |
| procedure Must_Not_Fail (Return_Code : OS2Lib.APIRET); |
| pragma Inline (Must_Not_Fail); |
| -- Many OS/2 functions return APIRET and are not supposed to fail. In C |
| -- style, these would be called as procedures, disregarding the returned |
| -- value. This procedure can be used to achieve the same effect with a |
| -- call of the form: Must_Not_Fail (Some_OS2_Function (...)); |
| |
| procedure Sem_Must_Not_Fail (Return_Code : OS2Lib.APIRET); |
| pragma Inline (Sem_Must_Not_Fail); |
| -- Similar to Must_Not_Fail, but used in the case of DosPostEventSem, |
| -- where the "error" code ERROR_ALREADY_POSTED is not really an error. |
| |
| end Interfaces.OS2Lib; |