Package: Interfaces.OS2Lib

Dependencies

with Interfaces.C;
with Interfaces.C.Strings;
with System;

Description

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).

Header

package Interfaces.OS2Lib is
 
pragma Preelaborate (OS2Lib);

Known child units

Interfaces.OS2Lib.Errors(package)
Interfaces.OS2Lib.Synchronization(package)
Interfaces.OS2Lib.Threads(package)

Type Summary

AFPREG
APIRET derived from unsigned_long
APIRET16 derived from unsigned_short
AULONG
BOOL32 derived from unsigned_long
DATETIME
FPREG
LHANDLE derived from unsigned_long
PDATETIME
PPVOID
PULONG
UCHAR derived from unsigned_char
ULONG derived from unsigned_long
USHORT derived from unsigned_short

Constants and Named Numbers

False32 : constant BOOL32 := 0;
NULLHANDLE : constant := 0;
Time Management
True32 : constant BOOL32 := 1;

Other Items:

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;

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;

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

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;