Differences From Artifact [d85b79a6d3b758cc]:
- File        
src/win32/windef.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
 
 
To Artifact [305164202924dd1b]:
- File        
src/win32/windef.d
- 
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate] 
 - 
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
 
    1                                                                                   <
    2  /***********************************************************************\              1  /***********************************************************************\
    3  *                                windef.d                               *              2  *                                windef.d                               *
    4  *                                                                       *              3  *                                                                       *
    5  *                       Windows API header module                       *              4  *                       Windows API header module                       *
    6  *                                                                       *              5  *                                                                       *
    7  *                 Translated from MinGW Windows headers                 *              6  *                 Translated from MinGW Windows headers                 *
    8  *                           by Stewart Gordon                           *              7  *                           by Stewart Gordon                           *
................................................................................................................................................................................
   12  module win32.windef;                                                                  11  module win32.windef;
   13                                                                                        12  
   14  public import win32.winnt;                                                            13  public import win32.winnt;
   15  private import win32.w32api;                                                          14  private import win32.w32api;
   16                                                                                        15  
   17  const size_t MAX_PATH = 260;                                                          16  const size_t MAX_PATH = 260;
   18                                                                                        17  
   19  ushort MAKEWORD(ubyte a, ubyte b)                                                |    18  ushort MAKEWORD(ubyte a, ubyte b) {
                                                                                        >    19          return cast(ushort) ((b << 8) | a);
                                                                                        >    20  }
   20  {                                                                                |    21  
                                                                                        >    22  ushort MAKEWORD(ushort a, ushort b) {
                                                                                        >    23      assert((a & 0xFF00) == 0);
                                                                                        >    24      assert((b & 0xFF00) == 0);
                                                                                        >    25      return MAKEWORD(cast(ubyte)a, cast(ubyte)b);
                                                                                        >    26  }
                                                                                        >    27  
                                                                                        >    28  uint MAKELONG(ushort a, ushort b) {
                                                                                        >    29          return cast(uint) ((b << 16) | a);
                                                                                        >    30  }
                                                                                        >    31  
                                                                                        >    32  uint MAKELONG(uint a, uint b) {
                                                                                        >    33      assert((a & 0xFFFF0000) == 0);
                                                                                        >    34      assert((b & 0xFFFF0000) == 0);
                                                                                        >    35      return MAKELONG(cast(ushort)a, cast(ushort)b);
                                                                                        >    36  }
                                                                                        >    37  
                                                                                        >    38  ushort LOWORD(ulong l) {
   21      return cast(ushort) ((b << 8) | a);                                          |    39          return cast(ushort) l;
                                                                                        >    40  }
                                                                                        >    41  
                                                                                        >    42  ushort HIWORD(ulong l) {
                                                                                        >    43          return cast(ushort) (l >>> 16);
   22  }                                                                                     44  }
   23                                                                                        45  
   24                                                                                   <
   25  uint MAKELONG(ushort a, ushort b)                                                <
   26  {                                                                                <
                                                                                        >    46  ubyte LOBYTE(ushort w) {
   27      return cast(uint) ((b << 16) | a);                                           |    47          return cast(ubyte) w;
   28  }                                                                                     48  }
   29                                                                                        49  
   30                                                                                   <
   31  ushort LOWORD(uint l)                                                            <
   32  {                                                                                <
                                                                                        >    50  ubyte HIBYTE(ushort w) {
   33      return cast(ushort) l;                                                       |    51          return cast(ubyte) (w >>> 8);
   34  }                                                                                <
   35                                                                                   <
   36                                                                                   <
   37  ushort HIWORD(uint l)                                                            <
   38  {                                                                                <
   39      return cast(ushort) (l >>> 16);                                              <
   40  }                                                                                     52  }
   41                                                                                        53  
   42                                                                                   <
   43  ubyte LOBYTE(ushort w)                                                           <
   44  {                                                                                <
   45      return cast(ubyte) w;                                                        <
   46  }                                                                                <
   47                                                                                   <
   48                                                                                   <
   49  ubyte HIBYTE(ushort w)                                                           <
   50  {                                                                                <
   51      return cast(ubyte) (w >>> 8);                                                <
   52  }                                                                                <
   53                                                                                   <
   54                                                                                   <
   55  /+ template max(T) {                                                             |    54  template max(T) {
   56      T max(T a, T b)                                                              |    55          T max(T a, T b) {
   57      {                                                                            <
   58          return a > b ? a : b;                                                    |    56                  return a > b ? a : b;
   59      }                                                                            |    57          }
   60  }                                                                                     58  }
   61                                                                                        59  
   62  template min(T) {                                                                     60  template min(T) {
   63      T min(T a, T b)                                                              |    61          T min(T a, T b) {
   64      {                                                                            <
   65          return a < b ? a : b;                                                    |    62                  return a < b ? a : b;
   66      }                                                                            |    63          }
   67  } +/                                                                             <
                                                                                        >    64  }
   68                                                                                        65  
   69  enum NULL = null;                                                                |    66  enum void* NULL = null;
   70  //~ alias null NULL;                                                             <
   71  //~ const void  *NULL = null;                                                    <
   72  alias ubyte  BYTE;                                                               |    67  alias ubyte        BYTE;
   73  alias ubyte *PBYTE, LPBYTE;                                                      |    68  alias ubyte*       PBYTE, LPBYTE;
   74  alias ushort USHORT, WORD, ATOM;                                                 |    69  alias ushort       USHORT, WORD, ATOM;
   75  alias ushort*PUSHORT, PWORD, LPWORD;                                             |    70  alias ushort*      PUSHORT, PWORD, LPWORD;
   76  alias uint   ULONG, DWORD, UINT, COLORREF;                                       |    71  alias uint         ULONG, DWORD, UINT, COLORREF;
   77  alias uint  *PULONG, PDWORD, LPDWORD, PUINT, LPUINT;                             |    72  alias uint*        PULONG, PDWORD, LPDWORD, PUINT, LPUINT;
   78  alias int WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;                              |    73  alias int          WINBOOL, BOOL, INT, LONG, HFILE, HRESULT;
   79  alias int*PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;               |    74  alias int*         PWINBOOL, LPWINBOOL, PBOOL, LPBOOL, PINT, LPINT, LPLONG;
   80  alias float FLOAT;                                                               |    75  alias float        FLOAT;
   81  alias float*PFLOAT;                                                              |    76  alias float*       PFLOAT;
   82  alias CPtr!(void) PCVOID, LPCVOID;                                               |    77  alias const(void)* PCVOID, LPCVOID;
   83                                                                                        78  
   84  alias UINT_PTR WPARAM;                                                                79  alias UINT_PTR WPARAM;
   85  alias LONG_PTR LPARAM, LRESULT;                                                       80  alias LONG_PTR LPARAM, LRESULT;
   86                                                                                        81  
   87  alias HANDLE HGLOBAL, HLOCAL, GLOBALHANDLE, LOCALHANDLE, HGDIOBJ, HACCEL,        |    82  mixin DECLARE_HANDLE!("HGLOBAL");
   88               HBITMAP, HBRUSH, HCOLORSPACE, HDC, HGLRC, HDESK, HENHMETAFILE, HFON |    83  mixin DECLARE_HANDLE!("HLOCAL");
   89               HICON, HINSTANCE, HKEY, HMENU, HMETAFILE, HMODULE, HMONITOR, HPALET |    84  mixin DECLARE_HANDLE!("GLOBALHANDLE");
   90               HRGN, HRSRC, HSTR, HTASK, HWND, HWINSTA, HKL, HCURSOR;              |    85  mixin DECLARE_HANDLE!("LOCALHANDLE");
                                                                                        >    86  mixin DECLARE_HANDLE!("HGDIOBJ");
                                                                                        >    87  mixin DECLARE_HANDLE!("HACCEL");
                                                                                        >    88  mixin DECLARE_HANDLE!("HBITMAP", HGDIOBJ);
                                                                                        >    89  mixin DECLARE_HANDLE!("HBRUSH", HGDIOBJ);
                                                                                        >    90  mixin DECLARE_HANDLE!("HCOLORSPACE");
                                                                                        >    91  mixin DECLARE_HANDLE!("HDC");
                                                                                        >    92  mixin DECLARE_HANDLE!("HGLRC");
                                                                                        >    93  mixin DECLARE_HANDLE!("HDESK");
                                                                                        >    94  mixin DECLARE_HANDLE!("HENHMETAFILE");
                                                                                        >    95  mixin DECLARE_HANDLE!("HFONT", HGDIOBJ);
                                                                                        >    96  mixin DECLARE_HANDLE!("HICON");
                                                                                        >    97  mixin DECLARE_HANDLE!("HINSTANCE");
                                                                                        >    98  mixin DECLARE_HANDLE!("HKEY");
                                                                                        >    99  mixin DECLARE_HANDLE!("HMENU");
                                                                                        >   100  mixin DECLARE_HANDLE!("HMETAFILE");
                                                                                        >   101  mixin DECLARE_HANDLE!("HMODULE");
                                                                                        >   102  mixin DECLARE_HANDLE!("HMONITOR");
                                                                                        >   103  mixin DECLARE_HANDLE!("HPALETTE");
                                                                                        >   104  mixin DECLARE_HANDLE!("HPEN", HGDIOBJ);
                                                                                        >   105  mixin DECLARE_HANDLE!("HRGN", HGDIOBJ);
                                                                                        >   106  mixin DECLARE_HANDLE!("HRSRC");
                                                                                        >   107  mixin DECLARE_HANDLE!("HSTR");
                                                                                        >   108  mixin DECLARE_HANDLE!("HTASK");
                                                                                        >   109  mixin DECLARE_HANDLE!("HWND");
                                                                                        >   110  mixin DECLARE_HANDLE!("HWINSTA");
                                                                                        >   111  mixin DECLARE_HANDLE!("HKL");
                                                                                        >   112  mixin DECLARE_HANDLE!("HCURSOR");
   91  alias HANDLE*PHKEY;                                                              |   113  alias HKEY* PHKEY;
   92                                                                                   <
   93  static                                                                           <
   94                                                                                       114  
   95  if (WINVER >= 0x500)                                                             |   115  static if (_WIN32_WINNT >= 0x500) {
   96  {                                                                                <
                                                                                        >   116          mixin DECLARE_HANDLE!("HTERMINAL");
   97      alias HANDLE HTERMINAL, HWINEVENTHOOK;                                       |   117          mixin DECLARE_HANDLE!("HWINEVENTHOOK");
   98  }                                                                                    118  }
   99                                                                                       119  
  100  alias extern (Windows) int function() FARPROC, NEARPROC, PROC;                   |   120  alias extern (Windows) INT_PTR function() FARPROC, NEARPROC, PROC;
  101                                                                                       121  
  102  struct RECT                                                                      |   122  struct RECT {
  103  {                                                                                <
  104      LONG left;                                                                   |   123          LONG left;
  105      LONG top;                                                                    |   124          LONG top;
  106      LONG right;                                                                  |   125          LONG right;
  107      LONG bottom;                                                                 |   126          LONG bottom;
  108  }                                                                                    127  }
  109  alias RECT RECTL;                                                                    128  alias RECT RECTL;
  110  alias RECT*PRECT, LPRECT, PRECTL, LPRECTL;                                       |   129  alias RECT*        PRECT, LPRECT, PRECTL, LPRECTL;
  111  alias CPtr!(RECT) LPCRECT, LPCRECTL;                                             |   130  alias const(RECT)* LPCRECT, LPCRECTL;
  112                                                                                       131  
  113  struct POINT                                                                     |   132  struct POINT {
  114  {                                                                                <
  115      LONG x;                                                                      |   133          LONG x;
  116      LONG y;                                                                      |   134          LONG y;
  117      alias x e1;                                                                  <
  118      alias y e2;                                                                  <
  119  }                                                                                    135  }
  120  alias POINT POINTL;                                                                  136  alias POINT POINTL;
  121  alias POINT*PPOINT, LPPOINT, PPOINTL, LPPOINTL;                                  |   137  alias POINT* PPOINT, LPPOINT, PPOINTL, LPPOINTL;
  122                                                                                       138  
  123  struct SIZE                                                                      |   139  struct SIZE {
  124  {                                                                                <
  125      LONG cx;                                                                     |   140          LONG cx;
  126      LONG cy;                                                                     |   141          LONG cy;
  127  }                                                                                    142  }
  128  alias SIZE SIZEL;                                                                    143  alias SIZE SIZEL;
  129  alias SIZE*PSIZE, LPSIZE, PSIZEL, LPSIZEL;                                       |   144  alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL;
  130                                                                                       145  
  131  struct POINTS                                                                    |   146  struct POINTS {
  132  {                                                                                <
  133      SHORT x;                                                                     |   147          SHORT x;
  134      SHORT y;                                                                     |   148          SHORT y;
  135  }                                                                                    149  }
  136  alias POINTS*PPOINTS, LPPOINTS;                                                  |   150  alias POINTS* PPOINTS, LPPOINTS;
  137                                                                                       151  
  138  enum : BOOL {                                                                        152  enum : BOOL {
  139      FALSE = 0,                                                                   |   153          FALSE = 0,
  140      TRUE  = 1                                                                    |   154          TRUE  = 1
  141  }                                                                                    155  }