
-- 1: --------------------------------------------------
-- 2: -- This package was written by OCTAGRAM in 2009 --
-- 3: --------------------------------------------------

-- 4:

-- 5: with

-- 6:   Interfaces, System;
with interfaces;
with system;

-- 7:

-- 8: use
use interfaces;
jwa_E : boolean := false;

-- 9:   Interfaces;

-- 10:

-- 11: package Jwa is
package jwa is

-- 12:    pragma Preelaborate;
   pragma preelaborate;

-- 13:
-- 14:    ------------------------------------
-- 15:    -- Pointer types for Interfaces.* --
-- 16:    ------------------------------------

-- 17:

-- 18:    type Integer_8_Ptr is access all Integer_8;
   type jwa__integer_8_ptr is access all interfaces__integer_8;

-- 19:    type Integer_8_CPtr is access constant Integer_8;
   type jwa__integer_8_cptr is access constant interfaces__integer_8;

-- 20:

-- 21:    type Integer_16_Ptr is access all Integer_16;
   type jwa__integer_16_ptr is access all interfaces__integer_16;

-- 22:    type Integer_16_CPtr is access constant Integer_16;
   type jwa__integer_16_cptr is access constant interfaces__integer_16;

-- 23:

-- 24:    type Integer_32_Ptr is access all Integer_32;
   type jwa__integer_32_ptr is access all interfaces__integer_32;

-- 25:    type Integer_32_CPtr is access constant Integer_32;
   type jwa__integer_32_cptr is access constant interfaces__integer_32;

-- 26:

-- 27:    type Integer_64_Ptr is access all Integer_64;
   type jwa__integer_64_ptr is access all interfaces__integer_64;

-- 28:    type Integer_64_CPtr is access constant Integer_64;
   type jwa__integer_64_cptr is access constant interfaces__integer_64;

-- 29:

-- 30:

-- 31:    type Unsigned_8_Ptr is access all Unsigned_8;
   type jwa__unsigned_8_ptr is access all interfaces__unsigned_8;

-- 32:    type Unsigned_8_CPtr is access constant Unsigned_8;
   type jwa__unsigned_8_cptr is access constant interfaces__unsigned_8;

-- 33:

-- 34:    type Unsigned_16_Ptr is access all Unsigned_16;
   type jwa__unsigned_16_ptr is access all interfaces__unsigned_16;

-- 35:    type Unsigned_16_CPtr is access constant Unsigned_16;
   type jwa__unsigned_16_cptr is access constant
     interfaces__unsigned_16;

-- 36:

-- 37:    type Unsigned_32_Ptr is access all Unsigned_32;
   type jwa__unsigned_32_ptr is access all interfaces__unsigned_32;

-- 38:    type Unsigned_32_CPtr is access constant Unsigned_32;
   type jwa__unsigned_32_cptr is access constant
     interfaces__unsigned_32;

-- 39:

-- 40:    type Unsigned_64_Ptr is access all Unsigned_64;
   type jwa__unsigned_64_ptr is access all interfaces__unsigned_64;

-- 41:    type Unsigned_64_CPtr is access constant Unsigned_64;
   type jwa__unsigned_64_cptr is access constant
     interfaces__unsigned_64;

-- 42:
-- 43:    ----------------
-- 44:    -- Boolean_32 --
-- 45:    ----------------

-- 46:

-- 47:    type Boolean_32 is private;
   type jwa__boolean_32 is private;

-- 48:    type Boolean_32_Ptr is access all Boolean_32;
   type jwa__boolean_32_ptr is access all jwa__boolean_32;

-- 49:    type Boolean_32_CPtr is access constant Boolean_32;
   type jwa__boolean_32_cptr is access constant jwa__boolean_32;
   jwa__false_32 : constant jwa__boolean_32;
   jwa__true_32 : constant jwa__boolean_32;

-- 50:

-- 51:    False_32 : constant Boolean_32;

-- 52:    True_32  : constant Boolean_32;

-- 53:

-- 54:    function "+" (Item : Boolean_32) return Boolean;
   function jwa__Oadd (item : jwa__boolean_32) return boolean;

-- 55:

-- 56:    function "+" (Item : Boolean_32) return Integer_32;
   function jwa__Oadd__2 (item : jwa__boolean_32) return
     interfaces__integer_32;

-- 57:

-- 58:    function "+" (Item : Boolean) return Boolean_32;
   function jwa__Oadd__3 (item : boolean) return jwa__boolean_32;

-- 59:

-- 60:    function "+" (Item : Integer_32) return Boolean_32;
   function jwa__Oadd__4 (item : interfaces__integer_32) return
     jwa__boolean_32;

-- 61:

-- 62:    function "=" (Left : Boolean_32; Right : Boolean) return Boolean;
   function jwa__Oeq (left : jwa__boolean_32; right : boolean) return
     boolean;

-- 63:    function "=" (Left : Boolean; Right : Boolean_32) return Boolean;
   function jwa__Oeq__2 (left : boolean; right : jwa__boolean_32)
     return boolean;

-- 64:    function "=" (Left, Right : Boolean_32) return Boolean;
   function jwa__Oeq__3 (left : jwa__boolean_32; right :
     jwa__boolean_32) return boolean;

-- 65:

-- 66:    function "and" (Left : Boolean_32; Right : Boolean) return Boolean;
   function jwa__Oand (left : jwa__boolean_32; right : boolean) return
     boolean;

-- 67:    function "and" (Left : Boolean; Right : Boolean_32) return Boolean;
   function jwa__Oand__2 (left : boolean; right : jwa__boolean_32)
     return boolean;

-- 68:    function "and" (Left, Right : Boolean_32) return Boolean;
   function jwa__Oand__3 (left : jwa__boolean_32; right :
     jwa__boolean_32) return boolean;

-- 69:

-- 70:    function "or" (Left : Boolean_32; Right : Boolean) return Boolean;
   function jwa__Oor (left : jwa__boolean_32; right : boolean) return
     boolean;

-- 71:    function "or" (Left : Boolean; Right : Boolean_32) return Boolean;
   function jwa__Oor__2 (left : boolean; right : jwa__boolean_32)
     return boolean;

-- 72:    function "or" (Left, Right : Boolean_32) return Boolean;
   function jwa__Oor__3 (left : jwa__boolean_32; right :
     jwa__boolean_32) return boolean;

-- 73:

-- 74:    function "xor" (Left : Boolean_32; Right : Boolean) return Boolean;
   function jwa__Oxor (left : jwa__boolean_32; right : boolean) return
     boolean;

-- 75:    function "xor" (Left : Boolean; Right : Boolean_32) return Boolean;
   function jwa__Oxor__2 (left : boolean; right : jwa__boolean_32)
     return boolean;

-- 76:    function "xor" (Left, Right : Boolean_32) return Boolean;
   function jwa__Oxor__3 (left : jwa__boolean_32; right :
     jwa__boolean_32) return boolean;

-- 77:

-- 78:    function "not" (Item : Boolean_32) return Boolean;
   function jwa__Onot (item : jwa__boolean_32) return boolean;

-- 79:

-- 80:    pragma Inline ("=", "+", "and", "or", "xor", "not");
   pragma inline (Oeq, Oadd, Oand, Oor, Oxor, Onot);

-- 81:
-- 82:    ---------------
-- 83:    -- Boolean_8 --
-- 84:    ---------------

-- 85:

-- 86:    type Boolean_8 is private;
   type jwa__boolean_8 is private;

-- 87:    type Boolean_8_Ptr is access all Boolean_8;
   type jwa__boolean_8_ptr is access all jwa__boolean_8;

-- 88:    type Boolean_8_CPtr is access constant Boolean_8;
   type jwa__boolean_8_cptr is access constant jwa__boolean_8;
   jwa__false_8 : constant jwa__boolean_8;
   jwa__true_8 : constant jwa__boolean_8;

-- 89:

-- 90:    False_8 : constant Boolean_8;

-- 91:    True_8  : constant Boolean_8;

-- 92:

-- 93:    function "+" (Item : Boolean_8) return Boolean;
   function jwa__Oadd__5 (item : jwa__boolean_8) return boolean;

-- 94:

-- 95:    function "+" (Item : Boolean_8) return Integer_8;
   function jwa__Oadd__6 (item : jwa__boolean_8) return
     interfaces__integer_8;

-- 96:

-- 97:    function "+" (Item : Boolean) return Boolean_8;
   function jwa__Oadd__7 (item : boolean) return jwa__boolean_8;

-- 98:

-- 99:    function "+" (Item : Integer_8) return Boolean_8;
   function jwa__Oadd__8 (item : interfaces__integer_8) return
     jwa__boolean_8;

-- 100:

-- 101:    function "=" (Left : Boolean_8; Right : Boolean) return Boolean;
   function jwa__Oeq__4 (left : jwa__boolean_8; right : boolean)
     return boolean;

-- 102:    function "=" (Left : Boolean; Right : Boolean_8) return Boolean;
   function jwa__Oeq__5 (left : boolean; right : jwa__boolean_8)
     return boolean;

-- 103:    function "=" (Left, Right : Boolean_8) return Boolean;
   function jwa__Oeq__6 (left : jwa__boolean_8; right : jwa__boolean_8)
     return boolean;

-- 104:

-- 105:    function "and" (Left : Boolean_8; Right : Boolean) return Boolean;
   function jwa__Oand__4 (left : jwa__boolean_8; right : boolean)
     return boolean;

-- 106:    function "and" (Left : Boolean; Right : Boolean_8) return Boolean;
   function jwa__Oand__5 (left : boolean; right : jwa__boolean_8)
     return boolean;

-- 107:    function "and" (Left, Right : Boolean_8) return Boolean;
   function jwa__Oand__6 (left : jwa__boolean_8; right : jwa__boolean_8)
     return boolean;

-- 108:

-- 109:    function "or" (Left : Boolean_8; Right : Boolean) return Boolean;
   function jwa__Oor__4 (left : jwa__boolean_8; right : boolean)
     return boolean;

-- 110:    function "or" (Left : Boolean; Right : Boolean_8) return Boolean;
   function jwa__Oor__5 (left : boolean; right : jwa__boolean_8)
     return boolean;

-- 111:    function "or" (Left, Right : Boolean_8) return Boolean;
   function jwa__Oor__6 (left : jwa__boolean_8; right : jwa__boolean_8)
     return boolean;

-- 112:

-- 113:    function "xor" (Left : Boolean_8; Right : Boolean) return Boolean;
   function jwa__Oxor__4 (left : jwa__boolean_8; right : boolean)
     return boolean;

-- 114:    function "xor" (Left : Boolean; Right : Boolean_8) return Boolean;
   function jwa__Oxor__5 (left : boolean; right : jwa__boolean_8)
     return boolean;

-- 115:    function "xor" (Left, Right : Boolean_8) return Boolean;
   function jwa__Oxor__6 (left : jwa__boolean_8; right : jwa__boolean_8)
     return boolean;

-- 116:

-- 117:    function "not" (Item : Boolean_8) return Boolean;
   function jwa__Onot__2 (item : jwa__boolean_8) return boolean;

-- 118:

-- 119:    pragma Inline ("=", "+", "and", "or", "xor", "not");
   pragma inline (Oeq, Oadd, Oand, Oor, Oxor, Onot);

-- 120:
-- 121:    -------------
-- 122:    -- Strings --
-- 123:    -------------

-- 124:
-- 125: --     function "+" (Source : String) return access String;

-- 126:

-- 127:    type String_8_Buffer is new String;
   type jwa__string_8_buffer is new string;

-- 128:    type String_16_Buffer is new Wide_String;
   type jwa__string_16_buffer is new wide_string;

-- 129:

-- 130:    subtype Char_8 is Character;
   subtype jwa__char_8 is character;

-- 131:    subtype Char_16 is Character;
   subtype jwa__char_16 is character;
   jwa__nul_8 : constant jwa__char_8 := '["00"]';
   jwa__nul_16 : constant jwa__char_16 := '["00"]';

-- 132:

-- 133:    NUL_8 : constant Char_8 := Char_8'Val (0);

-- 134:    NUL_16 : constant Char_16 := Char_16'Val (0);

-- 135:

-- 136:    type Char_8_Ptr is new System.Address;
   [type jwa__Tchar_8_ptrB is  mod 16#1000_0000_0#]
   freeze jwa__Tchar_8_ptrB []

-- 137:    type Char_16_Ptr is new System.Address;
   type jwa__char_8_ptr is new system.system__address;
   [type jwa__Tchar_16_ptrB is  mod 16#1000_0000_0#]
   freeze jwa__Tchar_16_ptrB []

-- 138:

-- 139:    type Char_8_Ptr_Ptr is access all Char_8_Ptr;
   type jwa__char_16_ptr is new system.system__address;

-- 140:    type Char_16_Ptr_Ptr is access all Char_16_Ptr;
   type jwa__char_8_ptr_ptr is access all jwa__char_8_ptr;
   type jwa__char_16_ptr_ptr is access all jwa__char_16_ptr;

-- 141:
-- 142:    -----------------
-- 143:    -- Address_Ptr --
-- 144:    -----------------

-- 145:

-- 146:    type Address_Ptr is access all System.Address;
   type jwa__address_ptr is access all system.system__address;
-- 147: --     type Address_Ptr_Ptr is access all Address_Ptr;

-- 148:
-- 149:    ----------
-- 150:    -- GUID --
-- 151:    ----------

-- 152:

-- 153:    type GUID_D4_Type is
   type jwa__guid_d4_type is array (0 .. 7) of interfaces__unsigned_8;

-- 154:      array (0 .. 7) of Unsigned_8;

-- 155:    pragma Pack (GUID_D4_Type);
   pragma pack (jwa__guid_d4_type);

-- 156:

-- 157:    type GUID_Type is record
   type jwa__guid_type is record

-- 158:       D1 : Unsigned_32;
      d1 : interfaces__unsigned_32;

-- 159:       D2 : Unsigned_16;
      d2 : interfaces__unsigned_16;

-- 160:       D3 : Unsigned_16;
      d3 : interfaces__unsigned_16;

-- 161:       D4 : GUID_D4_Type;
      d4 : jwa__guid_d4_type;

-- 162:    end record;
   end record;

-- 163:    pragma Pack (GUID_Type);
   pragma pack (jwa__guid_type);

-- 164:

-- 165:    type GUID_Ptr is access all GUID_Type;
   type jwa__guid_ptr is access all jwa__guid_type;

-- 166:
-- 167:    ------------
-- 168:    -- Handle --
-- 169:    ------------

-- 170:

-- 171:    type Handle_Type is new System.Address;
   [type jwa__Thandle_typeB is  mod 16#1000_0000_0#]
   freeze jwa__Thandle_typeB []

-- 172:    type Handle_Ptr is access all Handle_Type;
   type jwa__handle_type is new system.system__address;
   type jwa__handle_ptr is access all jwa__handle_type;

-- 173:

-- 174: private
private

-- 175:

-- 176:    type Boolean_32 is new Integer_32;
   [type interfaces__Tinteger_32B is new integer]
   [type jwa__Tboolean_32B is new interfaces__Tinteger_32B]
   freeze jwa__Tboolean_32B []
   type jwa__boolean_32 is new interfaces__integer_32;

-- 177:

-- 178:    False_32 : constant Boolean_32 := 0;
   freeze jwa__boolean_32 []
   jwa__false_32 : constant jwa__boolean_32 := 0;
   jwa__true_32 : constant jwa__boolean_32 := 1;

-- 179:    True_32  : constant Boolean_32 := 1;

-- 180:

-- 181:    type Boolean_8 is new Integer_8;
   [type interfaces__Tinteger_8B is new short_short_integer]
   [type jwa__Tboolean_8B is new interfaces__Tinteger_8B]
   freeze jwa__Tboolean_8B []
   type jwa__boolean_8 is new interfaces__integer_8;

-- 182:

-- 183:    False_8 : constant Boolean_8 := 0;
   freeze jwa__boolean_8 []
   jwa__false_8 : constant jwa__boolean_8 := 0;
   jwa__true_8 : constant jwa__boolean_8 := 1;

-- 184:    True_8  : constant Boolean_8 := 1;
   freeze jwa__integer_8_ptr []
   freeze jwa__integer_8_cptr []
   freeze jwa__integer_16_ptr []
   freeze jwa__integer_16_cptr []
   freeze jwa__integer_32_ptr []
   freeze jwa__integer_32_cptr []
   freeze jwa__integer_64_ptr []
   freeze jwa__integer_64_cptr []
   freeze jwa__unsigned_8_ptr []
   freeze jwa__unsigned_8_cptr []
   freeze jwa__unsigned_16_ptr []
   freeze jwa__unsigned_16_cptr []
   freeze jwa__unsigned_32_ptr []
   freeze jwa__unsigned_32_cptr []
   freeze jwa__unsigned_64_ptr []
   freeze jwa__unsigned_64_cptr []
   freeze jwa__boolean_32_ptr []
   freeze jwa__boolean_32_cptr []
   freeze jwa__Oadd []
   freeze jwa__Oadd__2 []
   freeze jwa__Oadd__3 []
   freeze jwa__Oadd__4 []
   freeze jwa__Oeq []
   freeze jwa__One []
   freeze jwa__Oeq__2 []
   freeze jwa__One__2 []
   freeze jwa__Oeq__3 []
   freeze jwa__One__3 []
   freeze jwa__Oand []
   freeze jwa__Oand__2 []
   freeze jwa__Oand__3 []
   freeze jwa__Oor []
   freeze jwa__Oor__2 []
   freeze jwa__Oor__3 []
   freeze jwa__Oxor []
   freeze jwa__Oxor__2 []
   freeze jwa__Oxor__3 []
   freeze jwa__Onot []
   freeze jwa__boolean_8_ptr []
   freeze jwa__boolean_8_cptr []
   freeze jwa__Oadd__5 []
   freeze jwa__Oadd__6 []
   freeze jwa__Oadd__7 []
   freeze jwa__Oadd__8 []
   freeze jwa__Oeq__4 []
   freeze jwa__One__4 []
   freeze jwa__Oeq__5 []
   freeze jwa__One__5 []
   freeze jwa__Oeq__6 []
   freeze jwa__One__6 []
   freeze jwa__Oand__4 []
   freeze jwa__Oand__5 []
   freeze jwa__Oand__6 []
   freeze jwa__Oor__4 []
   freeze jwa__Oor__5 []
   freeze jwa__Oor__6 []
   freeze jwa__Oxor__4 []
   freeze jwa__Oxor__5 []
   freeze jwa__Oxor__6 []
   freeze jwa__Onot__2 []
   freeze jwa__string_8_buffer []
   freeze jwa__string_16_buffer []
   freeze jwa__char_8_ptr []
   freeze jwa__One__7 []
   freeze jwa__char_16_ptr []
   freeze jwa__One__8 []
   freeze jwa__char_8_ptr_ptr []
   freeze jwa__char_16_ptr_ptr []
   freeze jwa__address_ptr []
   [type jwa__Tguid_d4_typeB is array (0 .. 7 range <>) of
     interfaces__unsigned_8]
   freeze jwa__Tguid_d4_typeB [
      procedure jwa__Tguid_d4_typeBIP (_init : in out
        jwa__Tguid_d4_typeB) is
      begin
         null;
         return;
      end jwa__Tguid_d4_typeBIP;
   ]
   freeze jwa__guid_d4_type []
   freeze jwa__guid_type [
      procedure jwa__guid_typeIP (_init : in out jwa__guid_type) is
      begin
         null;
         return;
      end jwa__guid_typeIP;
   ]
   freeze jwa__guid_ptr []
   freeze jwa__handle_type []
   freeze jwa__One__9 []
   freeze jwa__handle_ptr []

-- 185:

-- 186: end Jwa;
end jwa;
