Re: Generated Headers - Quite the Can of Worms

Vin Shelton <[email protected]>
Newsgroups gmane.emacs.xemacs.beta
Message-ID <CACeGjnXM6YssX0NpNAyUFEH2V-CwOfrS6cQ_5GGAMJUFSc+NoA@mail.gmail.com>
Hi, Henry!

Thanks for your efforts on this.  I have copied xemacs-beta on my reply.

On Sun, Mar 29, 2015 at 9:52 PM, Henry S. Thompson <[email protected]> wrote:
> OK, small progress.  Using VS6:
>
> Adding the following to syswindows.h at around line 605, in the
> _non_-CYGWIN_HEADERS branch
>
>    typedef int WINBOOL;
>    typedef intptr_t LONG_PTR;
>    typedef uintptr_t ULONG_PTR;
>    typedef uintptr_t DWORD_PTR;
>    /* #define PCIDLIST_ABSOLUTE_ARRAY LPCITEMIDLIST *
>       typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY;* */
>    typedef LPCITEMIDLIST PCIDLIST_ABSOLUTE;
>
> allows several of the -msw.c files to compile.
>
> More similar work is required, I think.
>
> Oops: the last typedef above is wrong - I read the commented-lines above
> that backwards!

Thanks for making sure the native Windows build continues to work.
I appreciate your taking the lead on this, because I haven't made any
substantive progress on this over the weekend.

Here are a few comments:

1. I have checked in the configure changes, so please make your next
   patchsets based off of current version control.  Please split your
   patchset into two patches: one containing the w32api refactoring /
   unicode regeneration and a second one containing the 64-bit
   (DEVICE_TYPE_) changes.

2. Back when I was looking at updating the unicode definitions, I had
    a slightly different regexp in lib-sr/make-mswin-unicode.pl:

my $rettype_re = "(SHSTDAPI_\\(${tok_ch}+${ws_re}\\*?\\)|${tok_ch}" .
"[A-Za-z_0-9 \t\n\r\f]*?${tok_ch})";

   I think this regexp is a little more restrictive than the one you
   used, but I'm not sure that it makes a difference.

3. Here are my current definitions for the syswindows.h block:

#else /* !CYGWIN_HEADERS */

#define W32API_VER(major,minor) 0
#define W32API_INSTALLED_VER 0

/* Some types that show up in Cygwin headers but not in Visual Studio headers,
   and cause problems if we used Cygwin headers to generate
   intl-auto-encap-win32.[ch]. */
typedef LPCVOID PCVOID;

typedef int WINBOOL;
typedef intptr_t LONG_PTR;
typedef uintptr_t ULONG_PTR;
typedef uintptr_t DWORD_PTR;

typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE;

typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE;
typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;

/* Defined in w32api/winuser.h */
#define GCLP_MENUNAME (-8)
#define GCLP_HBRBACKGROUND (-10)
#define GCLP_HCURSOR (-12)
#define GCLP_HICON (-14)
#define GCLP_HMODULE (-16)
#define GCLP_WNDPROC (-24)
#define GCLP_HICONSM (-34)
#define GWLP_USERDATA (-21)
#define GWLP_WNDPROC (-4)
#define GWLP_HINSTANCE (-6)
#define GWLP_HWNDPARENT (-8)
#define GWLP_USERDATA (-21)
#define GWLP_ID (-12)

#define DWL_MSGRESULT 0
#define DWL_DLGPROC 4
#define DWL_USER 8

#ifdef _WIN64

#undef DWL_MSGRESULT
#undef DWL_DLGPROC
#undef DWL_USER
#endif

#define DWLP_MSGRESULT 0
#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)

#endif /* CYGWIN_HEADERS */


Not all of these definitions are necessary, but I think it's probably
best to include the entire GCLP/GWLP definition block.

Thanks for digging in on this.

-Vin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.