Naveen Neel / shedskin_2

Files at this revision

API Documentation at this revision

Comitter:
user Naveen Neel
Date:
Mon Mar 05 05:12:08 2012 +0000
Parent:
0:4aefc64457f8
Child:
2:0da19ef27a51
Commit message:

Changed in this revision

_mingw.h Show annotated file Show diff for this revision Revisions of this file
accctrl.h Show annotated file Show diff for this revision Revisions of this file
aclapi.h Show annotated file Show diff for this revision Revisions of this file
aclui.h Show annotated file Show diff for this revision Revisions of this file
adsprop.h Show annotated file Show diff for this revision Revisions of this file
afxres.h Show annotated file Show diff for this revision Revisions of this file
amaudio.h Show annotated file Show diff for this revision Revisions of this file
amvideo.h Show annotated file Show diff for this revision Revisions of this file
ansidecl.h Show annotated file Show diff for this revision Revisions of this file
assert.h Show annotated file Show diff for this revision Revisions of this file
audevcod.h Show annotated file Show diff for this revision Revisions of this file
aviriff.h Show annotated file Show diff for this revision Revisions of this file
aygshell.h Show annotated file Show diff for this revision Revisions of this file
basetsd.h Show annotated file Show diff for this revision Revisions of this file
basetyps.h Show annotated file Show diff for this revision Revisions of this file
bdatypes.h Show annotated file Show diff for this revision Revisions of this file
bfd.h Show annotated file Show diff for this revision Revisions of this file
bfdlink.h Show annotated file Show diff for this revision Revisions of this file
cderr.h Show annotated file Show diff for this revision Revisions of this file
cguid.h Show annotated file Show diff for this revision Revisions of this file
cmnquery.h Show annotated file Show diff for this revision Revisions of this file
comcat.h Show annotated file Show diff for this revision Revisions of this file
commctrl.h Show annotated file Show diff for this revision Revisions of this file
commdlg.h Show annotated file Show diff for this revision Revisions of this file
complex.h Show annotated file Show diff for this revision Revisions of this file
conio.h Show annotated file Show diff for this revision Revisions of this file
control.h Show annotated file Show diff for this revision Revisions of this file
cpl.h Show annotated file Show diff for this revision Revisions of this file
cplext.h Show annotated file Show diff for this revision Revisions of this file
ctype.h Show annotated file Show diff for this revision Revisions of this file
custcntl.h Show annotated file Show diff for this revision Revisions of this file
d3d9.h Show annotated file Show diff for this revision Revisions of this file
d3d9caps.h Show annotated file Show diff for this revision Revisions of this file
d3d9types.h Show annotated file Show diff for this revision Revisions of this file
dbt.h Show annotated file Show diff for this revision Revisions of this file
dde.h Show annotated file Show diff for this revision Revisions of this file
ddeml.h Show annotated file Show diff for this revision Revisions of this file
devguid.h Show annotated file Show diff for this revision Revisions of this file
dhcpcsdk.h Show annotated file Show diff for this revision Revisions of this file
dir.h Show annotated file Show diff for this revision Revisions of this file
direct.h Show annotated file Show diff for this revision Revisions of this file
dirent.h Show annotated file Show diff for this revision Revisions of this file
dis-asm.h Show annotated file Show diff for this revision Revisions of this file
dlgs.h Show annotated file Show diff for this revision Revisions of this file
docobj.h Show annotated file Show diff for this revision Revisions of this file
dos.h Show annotated file Show diff for this revision Revisions of this file
dsadmin.h Show annotated file Show diff for this revision Revisions of this file
dsclient.h Show annotated file Show diff for this revision Revisions of this file
dsgetdc.h Show annotated file Show diff for this revision Revisions of this file
dshow.h Show annotated file Show diff for this revision Revisions of this file
dsquery.h Show annotated file Show diff for this revision Revisions of this file
dsrole.h Show annotated file Show diff for this revision Revisions of this file
dvdevcod.h Show annotated file Show diff for this revision Revisions of this file
dvdmedia.h Show annotated file Show diff for this revision Revisions of this file
dxerr8.h Show annotated file Show diff for this revision Revisions of this file
dxerr9.h Show annotated file Show diff for this revision Revisions of this file
edevdefs.h Show annotated file Show diff for this revision Revisions of this file
errno.h Show annotated file Show diff for this revision Revisions of this file
errorrep.h Show annotated file Show diff for this revision Revisions of this file
errors.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/_mingw.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,284 @@
+#ifndef __MINGW_H
+/*
+ * _mingw.h
+ *
+ * Mingw specific macros included by ALL include files.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Mumit Khan  <khan@xraylith.wisc.edu>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#define __MINGW_H
+
+#define __MINGW32_VERSION           3.18
+#define __MINGW32_MAJOR_VERSION     3
+#define __MINGW32_MINOR_VERSION     18
+#define __MINGW32_PATCHLEVEL        0
+
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+/* These are defined by the user (or the compiler)
+   to specify how identifiers are imported from a DLL.
+
+   __DECLSPEC_SUPPORTED            Defined if dllimport attribute is supported.
+   __MINGW_IMPORT                  The attribute definition to specify imported
+                                   variables/functions.
+   _CRTIMP                         As above.  For MS compatibility.
+   __MINGW32_VERSION               Runtime version.
+   __MINGW32_MAJOR_VERSION         Runtime major version.
+   __MINGW32_MINOR_VERSION         Runtime minor version.
+   __MINGW32_BUILD_DATE            Runtime build date.
+
+   Macros to enable MinGW features which deviate from standard MSVC
+   compatible behaviour; these may be specified directly in user code,
+   activated implicitly, (e.g. by specifying _POSIX_C_SOURCE or such),
+   or by inclusion in __MINGW_FEATURES__:
+
+   __USE_MINGW_ANSI_STDIO          Select a more ANSI C99 compatible
+                                   implementation of printf() and friends.
+
+   Other macros:
+
+   __int64                         define to be long long.  Using a typedef
+                                   doesn't work for "unsigned __int64"
+
+   All headers should include this first, and then use __DECLSPEC_SUPPORTED
+   to choose between the old ``__imp__name'' style or __MINGW_IMPORT
+   style declarations.  */
+
+
+/* Manifest definitions identifying the flag bits, controlling activation
+ * of MinGW features, as specified by the user in __MINGW_FEATURES__.
+ */
+#define __MINGW_ANSI_STDIO__		0x0000000000000001ULL
+/*
+ * The following three are not yet formally supported; they are
+ * included here, to document anticipated future usage.
+ */
+#define __MINGW_LC_EXTENSIONS__ 	0x0000000000000050ULL
+#define __MINGW_LC_MESSAGES__		0x0000000000000010ULL
+#define __MINGW_LC_ENVVARS__		0x0000000000000040ULL
+
+/* Try to avoid problems with outdated checks for GCC __attribute__ support.  */
+#undef __attribute__
+
+#if defined (__PCC__)
+#  undef __DECLSPEC_SUPPORTED
+# ifndef __MINGW_IMPORT
+#  define __MINGW_IMPORT extern
+# endif
+# ifndef _CRTIMP
+#  define _CRTIMP
+# endif
+# ifndef __cdecl 
+#  define __cdecl  _Pragma("cdecl")
+# endif
+# ifndef __stdcall
+#  define __stdcall _Pragma("stdcall")
+# endif
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+# ifndef __volatile__
+#  define __volatile__ volatile
+# endif
+# ifndef __restrict__
+#  define __restrict__ restrict
+# endif
+# define NONAMELESSUNION
+#elif defined(__GNUC__)
+# ifdef __declspec
+#  ifndef __MINGW_IMPORT
+   /* Note the extern. This is needed to work around GCC's
+      limitations in handling dllimport attribute.  */
+#   define __MINGW_IMPORT  extern __attribute__ ((__dllimport__))
+#  endif
+#  ifndef _CRTIMP
+#   ifdef __USE_CRTIMP
+#    define _CRTIMP  __attribute__ ((dllimport))
+#   else
+#    define _CRTIMP
+#   endif
+#  endif
+#  define __DECLSPEC_SUPPORTED
+# else /* __declspec */
+#  undef __DECLSPEC_SUPPORTED
+#  undef __MINGW_IMPORT
+#  ifndef _CRTIMP
+#   define _CRTIMP
+#  endif
+# endif /* __declspec */
+/*
+ * The next two defines can cause problems if user code adds the
+ * __cdecl attribute like so:
+ * void __attribute__ ((__cdecl)) foo(void); 
+ */
+# ifndef __cdecl 
+#  define __cdecl  __attribute__ ((__cdecl__))
+# endif
+# ifndef __stdcall
+#  define __stdcall __attribute__ ((__stdcall__))
+# endif
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+#else /* ! __GNUC__ && ! __PCC__ */
+# ifndef __MINGW_IMPORT
+#  define __MINGW_IMPORT  __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+#  define _CRTIMP  __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x) /* nothing */
+#endif
+
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __MINGW_GNUC_PREREQ(major, minor) \
+  (__GNUC__ > (major) \
+   || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#else
+#define __MINGW_GNUC_PREREQ(major, minor)  0
+#endif
+
+#ifdef __cplusplus
+# define __CRT_INLINE inline
+#else
+# if __GNUC_STDC_INLINE__
+#  define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
+# else
+#  define __CRT_INLINE extern __inline__
+# endif
+#endif
+
+# ifdef __GNUC__
+#  define _CRTALIAS __CRT_INLINE __attribute__ ((__always_inline__))
+# else
+#  define _CRTALIAS __CRT_INLINE
+# endif
+
+#ifdef __cplusplus
+# define __UNUSED_PARAM(x)
+#else
+# ifdef __GNUC__
+#  define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
+# else
+#  define __UNUSED_PARAM(x) x
+# endif
+#endif
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
+#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
+#else
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 0)
+#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
+#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
+#else
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#endif
+
+/* Attribute `nonnull' was valid as of gcc 3.3.  We don't use GCC's
+   variadiac macro facility, because variadic macros cause syntax
+   errors with  --traditional-cpp.  */
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
+#else
+#define __MINGW_ATTRIB_NONNULL(arg)
+#endif /* GNUC >= 3.3 */
+
+#if  __MINGW_GNUC_PREREQ (3, 1)
+#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
+#else
+#define __MINGW_ATTRIB_DEPRECATED
+#endif /* GNUC >= 3.1 */
+ 
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#else
+#define __MINGW_NOTHROW
+#endif /* GNUC >= 3.3 */
+
+
+/* TODO: Mark (almost) all CRT functions as __MINGW_NOTHROW.  This will
+allow GCC to optimize away some EH unwind code, at least in DW2 case.  */
+
+#ifndef __MSVCRT_VERSION__
+/*  High byte is the major version, low byte is the minor. */
+# define __MSVCRT_VERSION__ 0x0600
+#endif
+
+/* Activation of MinGW specific extended features:
+ */
+#ifndef __USE_MINGW_ANSI_STDIO
+/*
+ * If user didn't specify it explicitly...
+ */
+# if   defined __STRICT_ANSI__  ||  defined _ISOC99_SOURCE \
+   ||  defined _POSIX_SOURCE    ||  defined _POSIX_C_SOURCE \
+   ||  defined _XOPEN_SOURCE    ||  defined _XOPEN_SOURCE_EXTENDED \
+   ||  defined _GNU_SOURCE      ||  defined _BSD_SOURCE \
+   ||  defined _SVID_SOURCE
+   /*
+    * but where any of these source code qualifiers are specified,
+    * then assume ANSI I/O standards are preferred over Microsoft's...
+    */
+#  define __USE_MINGW_ANSI_STDIO    1
+# else
+   /*
+    * otherwise use whatever __MINGW_FEATURES__ specifies...
+    */
+#  define __USE_MINGW_ANSI_STDIO    (__MINGW_FEATURES__ & __MINGW_ANSI_STDIO__)
+# endif
+#endif
+
+#endif /* __MINGW_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/accctrl.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,329 @@
+#ifndef _ACCCTRL_H
+#define _ACCCTRL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AccFree LocalFree
+#define ACTRL_RESERVED            0x00000000
+#define ACTRL_ACCESS_PROTECTED    0x00000001
+#define ACTRL_ACCESS_ALLOWED      0x00000001
+#define ACTRL_ACCESS_DENIED       0x00000002
+#define ACTRL_AUDIT_SUCCESS       0x00000004
+#define ACTRL_AUDIT_FAILURE       0x00000008
+#define ACTRL_SYSTEM_ACCESS       0x04000000
+#define ACTRL_DELETE              0x08000000
+#define ACTRL_READ_CONTROL        0x10000000
+#define ACTRL_CHANGE_ACCESS       0x20000000
+#define ACTRL_CHANGE_OWNER        0x40000000
+#define ACTRL_SYNCHRONIZE         0x80000000
+#define ACTRL_STD_RIGHTS_ALL      0xf8000000
+
+#define ACTRL_FILE_READ           0x00000001
+#define ACTRL_FILE_WRITE          0x00000002
+#define ACTRL_FILE_APPEND         0x00000004
+#define ACTRL_FILE_READ_PROP      0x00000008
+#define ACTRL_FILE_WRITE_PROP     0x00000010
+#define ACTRL_FILE_EXECUTE        0x00000020
+#define ACTRL_FILE_READ_ATTRIB    0x00000080
+#define ACTRL_FILE_WRITE_ATTRIB   0x00000100
+#define ACTRL_FILE_CREATE_PIPE    0x00000200
+#define ACTRL_DIR_LIST            0x00000001
+#define ACTRL_DIR_CREATE_OBJECT   0x00000002
+#define ACTRL_DIR_CREATE_CHILD    0x00000004
+#define ACTRL_DIR_DELETE_CHILD    0x00000040
+#define ACTRL_DIR_TRAVERSE        0x00000020
+#define ACTRL_KERNEL_TERMINATE    0x00000001
+#define ACTRL_KERNEL_THREAD       0x00000002
+#define ACTRL_KERNEL_VM           0x00000004
+#define ACTRL_KERNEL_VM_READ      0x00000008
+#define ACTRL_KERNEL_VM_WRITE     0x00000010
+#define ACTRL_KERNEL_DUP_HANDLE   0x00000020
+#define ACTRL_KERNEL_PROCESS      0x00000040
+#define ACTRL_KERNEL_SET_INFO     0x00000080
+#define ACTRL_KERNEL_GET_INFO     0x00000100
+#define ACTRL_KERNEL_CONTROL      0x00000200
+#define ACTRL_KERNEL_ALERT        0x00000400
+#define ACTRL_KERNEL_GET_CONTEXT  0x00000800
+#define ACTRL_KERNEL_SET_CONTEXT  0x00001000
+#define ACTRL_KERNEL_TOKEN        0x00002000
+#define ACTRL_KERNEL_IMPERSONATE  0x00004000
+#define ACTRL_KERNEL_DIMPERSONATE 0x00008000
+#define ACTRL_PRINT_SADMIN        0x00000001
+#define ACTRL_PRINT_SLIST         0x00000002
+#define ACTRL_PRINT_PADMIN        0x00000004
+#define ACTRL_PRINT_PUSE          0x00000008
+#define ACTRL_PRINT_JADMIN        0x00000010
+#define ACTRL_SVC_GET_INFO        0x00000001
+#define ACTRL_SVC_SET_INFO        0x00000002
+#define ACTRL_SVC_STATUS          0x00000004
+#define ACTRL_SVC_LIST            0x00000008
+#define ACTRL_SVC_START           0x00000010
+#define ACTRL_SVC_STOP            0x00000020
+#define ACTRL_SVC_PAUSE           0x00000040
+#define ACTRL_SVC_INTERROGATE     0x00000080
+#define ACTRL_SVC_UCONTROL        0x00000100
+#define ACTRL_REG_QUERY           0x00000001
+#define ACTRL_REG_SET             0x00000002
+#define ACTRL_REG_CREATE_CHILD    0x00000004
+#define ACTRL_REG_LIST            0x00000008
+#define ACTRL_REG_NOTIFY          0x00000010
+#define ACTRL_REG_LINK            0x00000020
+#define ACTRL_WIN_CLIPBRD         0x00000001
+#define ACTRL_WIN_GLOBAL_ATOMS    0x00000002
+#define ACTRL_WIN_CREATE          0x00000004
+#define ACTRL_WIN_LIST_DESK       0x00000008
+#define ACTRL_WIN_LIST            0x00000010
+#define ACTRL_WIN_READ_ATTRIBS    0x00000020
+#define ACTRL_WIN_WRITE_ATTRIBS   0x00000040
+#define ACTRL_WIN_SCREEN          0x00000080
+#define ACTRL_WIN_EXIT            0x00000100
+#define ACTRL_ACCESS_NO_OPTIONS                 0x00000000
+#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001
+#define ACCCTRL_DEFAULT_PROVIDERA   "Windows NT Access Provider"
+#define ACCCTRL_DEFAULT_PROVIDERW  L"Windows NT Access Provider"
+#define TRUSTEE_ACCESS_ALLOWED    0x00000001L
+#define TRUSTEE_ACCESS_READ       0x00000002L
+#define TRUSTEE_ACCESS_WRITE      0x00000004L
+#define TRUSTEE_ACCESS_EXPLICIT   0x00000001L
+#define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
+#define TRUSTEE_ACCESS_ALL        0xFFFFFFFFL
+#define NO_INHERITANCE	          0x0
+#define SUB_OBJECTS_ONLY_INHERIT  0x1
+#define SUB_CONTAINERS_ONLY_INHERIT 0x2
+#define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3
+#define INHERIT_NO_PROPAGATE      0x4
+#define INHERIT_ONLY              0x8
+#define INHERITED_ACCESS_ENTRY    0x10
+#define INHERITED_PARENT          0x10000000
+#define INHERITED_GRANDPARENT     0x20000000
+
+typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
+typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
+
+typedef enum _ACCESS_MODE {
+	NOT_USED_ACCESS = 0,
+	GRANT_ACCESS,
+	SET_ACCESS,
+	DENY_ACCESS,
+	REVOKE_ACCESS,
+	SET_AUDIT_SUCCESS,
+	SET_AUDIT_FAILURE
+} ACCESS_MODE;
+typedef enum _SE_OBJECT_TYPE {
+	SE_UNKNOWN_OBJECT_TYPE = 0,
+	SE_FILE_OBJECT,
+	SE_SERVICE,
+	SE_PRINTER,
+	SE_REGISTRY_KEY,
+	SE_LMSHARE,
+	SE_KERNEL_OBJECT,
+	SE_WINDOW_OBJECT,
+	SE_DS_OBJECT,
+	SE_DS_OBJECT_ALL,
+	SE_PROVIDER_DEFINED_OBJECT,
+	SE_WMIGUID_OBJECT,
+	SE_REGISTRY_WOW64_32KEY
+} SE_OBJECT_TYPE;
+typedef enum _TRUSTEE_TYPE {
+	TRUSTEE_IS_UNKNOWN,
+	TRUSTEE_IS_USER,
+	TRUSTEE_IS_GROUP,
+	TRUSTEE_IS_DOMAIN,
+	TRUSTEE_IS_ALIAS,
+	TRUSTEE_IS_WELL_KNOWN_GROUP,
+	TRUSTEE_IS_DELETED,
+	TRUSTEE_IS_INVALID,
+	TRUSTEE_IS_COMPUTER
+} TRUSTEE_TYPE;
+typedef enum _TRUSTEE_FORM {
+	TRUSTEE_IS_SID,
+	TRUSTEE_IS_NAME,
+	TRUSTEE_BAD_FORM,
+	TRUSTEE_IS_OBJECTS_AND_SID,
+	TRUSTEE_IS_OBJECTS_AND_NAME
+} TRUSTEE_FORM;
+typedef enum _MULTIPLE_TRUSTEE_OPERATION {
+	NO_MULTIPLE_TRUSTEE,
+	TRUSTEE_IS_IMPERSONATE
+} MULTIPLE_TRUSTEE_OPERATION;
+typedef struct _TRUSTEE_A {
+	struct _TRUSTEE_A          *pMultipleTrustee;
+	MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+	TRUSTEE_FORM                TrusteeForm;
+	TRUSTEE_TYPE                TrusteeType;
+	LPSTR                       ptstrName;
+} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
+typedef struct _TRUSTEE_W {
+	struct _TRUSTEE_W          *pMultipleTrustee;
+	MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation;
+	TRUSTEE_FORM                TrusteeForm;
+	TRUSTEE_TYPE                TrusteeType;
+	LPWSTR                      ptstrName;
+} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
+typedef struct _ACTRL_ACCESS_ENTRYA {
+	TRUSTEE_A       Trustee;
+	ULONG           fAccessFlags;
+	ACCESS_RIGHTS   Access;
+	ACCESS_RIGHTS   ProvSpecificAccess;
+	INHERIT_FLAGS   Inheritance;
+	LPCSTR          lpInheritProperty;
+} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
+typedef struct _ACTRL_ACCESS_ENTRYW {
+	TRUSTEE_W       Trustee;
+	ULONG           fAccessFlags;
+	ACCESS_RIGHTS   Access;
+	ACCESS_RIGHTS   ProvSpecificAccess;
+	INHERIT_FLAGS   Inheritance;
+	LPCWSTR         lpInheritProperty;
+} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
+typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
+	ULONG                  cEntries;
+	ACTRL_ACCESS_ENTRYA    *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
+typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
+	ULONG                  cEntries;
+	ACTRL_ACCESS_ENTRYW    *pAccessList;
+} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
+typedef struct _ACTRL_PROPERTY_ENTRYA {
+	LPCSTR                      lpProperty;
+	PACTRL_ACCESS_ENTRY_LISTA   pAccessEntryList;
+	ULONG                       fListFlags;
+} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
+typedef struct _ACTRL_PROPERTY_ENTRYW {
+	LPCWSTR                     lpProperty;
+	PACTRL_ACCESS_ENTRY_LISTW   pAccessEntryList;
+	ULONG                       fListFlags;
+} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
+typedef struct _ACTRL_ALISTA {
+	ULONG                       cEntries;
+	PACTRL_PROPERTY_ENTRYA      pPropertyAccessList;
+} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
+typedef struct _ACTRL_ALISTW {
+	ULONG                       cEntries;
+	PACTRL_PROPERTY_ENTRYW      pPropertyAccessList;
+} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
+typedef struct _TRUSTEE_ACCESSA { 
+	LPSTR           lpProperty;
+	ACCESS_RIGHTS   Access;
+	ULONG           fAccessFlags;
+	ULONG           fReturnedAccess;
+} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
+typedef struct _TRUSTEE_ACCESSW {
+	LPWSTR          lpProperty;
+	ACCESS_RIGHTS   Access;
+	ULONG           fAccessFlags;
+	ULONG           fReturnedAccess;
+} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
+typedef struct _ACTRL_OVERLAPPED {
+	_ANONYMOUS_UNION
+	union {
+	    PVOID Provider;
+	    ULONG Reserved1;
+	} DUMMYUNIONNAME;
+	ULONG       Reserved2;
+	HANDLE      hEvent;
+} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
+typedef struct _ACTRL_ACCESS_INFOA {
+	ULONG       fAccessPermission;
+	LPSTR       lpAccessPermissionName;
+} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
+typedef struct _ACTRL_ACCESS_INFOW {
+	ULONG       fAccessPermission;
+	LPWSTR      lpAccessPermissionName;
+} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
+typedef struct _ACTRL_CONTROL_INFOA {
+	LPSTR       lpControlId;
+	LPSTR       lpControlName;
+} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
+typedef struct _ACTRL_CONTROL_INFOW {
+	LPWSTR      lpControlId;
+	LPWSTR      lpControlName;
+} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
+typedef struct _EXPLICIT_ACCESS_A {
+	DWORD        grfAccessPermissions;
+	ACCESS_MODE  grfAccessMode;
+	DWORD        grfInheritance;
+	TRUSTEE_A    Trustee;
+} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
+typedef struct _EXPLICIT_ACCESS_W {
+	DWORD        grfAccessPermissions;
+	ACCESS_MODE  grfAccessMode;
+	DWORD        grfInheritance;
+	TRUSTEE_W    Trustee;
+} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
+typedef struct _OBJECTS_AND_SID {
+	DWORD   ObjectsPresent;
+	GUID    ObjectTypeGuid;
+	GUID    InheritedObjectTypeGuid;
+	SID     * pSid;
+} OBJECTS_AND_SID, *POBJECTS_AND_SID;
+typedef struct _OBJECTS_AND_NAME_A {
+	DWORD    ObjectsPresent;
+	SE_OBJECT_TYPE ObjectType;
+	LPSTR    ObjectTypeName;
+	LPSTR    InheritedObjectTypeName;
+	LPSTR    ptstrName;
+} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
+typedef struct _OBJECTS_AND_NAME_W {
+	DWORD          ObjectsPresent;
+	SE_OBJECT_TYPE ObjectType;
+	LPWSTR   ObjectTypeName;
+	LPWSTR   InheritedObjectTypeName;
+	LPWSTR   ptstrName;
+} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct {
+	LONG     GenerationGap;
+	LPSTR    AncestorName;
+} INHERITED_FROMA, *PINHERITED_FROMA;
+typedef struct {
+	LONG     GenerationGap;
+	LPWSTR   AncestorName;
+} INHERITED_FROMW, *PINHERITED_FROMW;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#ifdef UNICODE
+#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
+typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
+typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
+typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
+typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
+typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
+typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
+typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
+typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
+typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
+typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
+typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
+#if (_WIN32_WINNT >= 0x0501)
+typedef INHERITED_FROMW INHERITED_FROM, *PINHERITED_FROM;
+#endif
+#else
+#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
+typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
+typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
+typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
+typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
+typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
+typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
+typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
+typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
+typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
+typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
+typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
+typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
+#if (_WIN32_WINNT >= 0x0501)
+typedef INHERITED_FROMA INHERITED_FROM, *PINHERITED_FROM;
+#endif
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aclapi.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,117 @@
+#ifndef _ACLAPI_H
+#define _ACLAPI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <windows.h>
+#include <accctrl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+WINADVAPI VOID WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI DWORD WINAPI BuildSecurityDescriptorA(PTRUSTEE_A,PTRUSTEE_A ,ULONG,PEXPLICIT_ACCESS_A,
+  ULONG,PEXPLICIT_ACCESS_A,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI BuildSecurityDescriptorW(PTRUSTEE_W,PTRUSTEE_W ,ULONG,PEXPLICIT_ACCESS_W,
+  ULONG,PEXPLICIT_ACCESS_W,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
+WINADVAPI VOID WINAPI BuildTrusteeWithNameA(PTRUSTEE_A,LPSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithNameW(PTRUSTEE_W,LPWSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A,POBJECTS_AND_NAME_A,SE_OBJECT_TYPE,
+  LPSTR,LPSTR,LPSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W,POBJECTS_AND_NAME_W,SE_OBJECT_TYPE,
+  LPWSTR,LPWSTR,LPWSTR);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A,POBJECTS_AND_SID,GUID*,GUID*,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W,POBJECTS_AND_SID,GUID*,GUID*,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithSidA(PTRUSTEE_A,PSID);
+WINADVAPI VOID WINAPI BuildTrusteeWithSidW(PTRUSTEE_W,PSID);
+WINADVAPI DWORD WINAPI GetAuditedPermissionsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetAuditedPermissionsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetEffectiveRightsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetEffectiveRightsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK);
+WINADVAPI DWORD WINAPI GetExplicitEntriesFromAclA(PACL,PULONG,PEXPLICIT_ACCESS_A*);
+WINADVAPI DWORD WINAPI GetExplicitEntriesFromAclW(PACL,PULONG,PEXPLICIT_ACCESS_W*);
+#if (_WIN32_WINNT >= 0x0501)
+WINADVAPI DWORD WINAPI GetInheritanceSourceA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMA);
+WINADVAPI DWORD WINAPI GetInheritanceSourceW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,BOOL,GUID**,DWORD,PACL,void*,PGENERIC_MAPPING,PINHERITED_FROMW);
+#endif
+WINADVAPI DWORD WINAPI GetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI GetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI DWORD WINAPI GetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,
+  PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormA(PTRUSTEE_A);
+WINADVAPI TRUSTEE_FORM WINAPI GetTrusteeFormW(PTRUSTEE_W);
+WINADVAPI LPSTR WINAPI GetTrusteeNameA(PTRUSTEE_A);
+WINADVAPI LPWSTR WINAPI GetTrusteeNameW(PTRUSTEE_W);
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeA(PTRUSTEE_A);
+WINADVAPI TRUSTEE_TYPE WINAPI GetTrusteeTypeW(PTRUSTEE_W);
+WINADVAPI DWORD WINAPI LookupSecurityDescriptorPartsA(PTRUSTEE_A*,PTRUSTEE_A*,PULONG,PEXPLICIT_ACCESS_A*,
+  PULONG,PEXPLICIT_ACCESS_A*,PSECURITY_DESCRIPTOR);
+WINADVAPI DWORD WINAPI LookupSecurityDescriptorPartsW(PTRUSTEE_W*,PTRUSTEE_W*,PULONG,PEXPLICIT_ACCESS_W*,
+  PULONG,PEXPLICIT_ACCESS_W*,PSECURITY_DESCRIPTOR);
+WINADVAPI DWORD WINAPI SetEntriesInAclA(ULONG,PEXPLICIT_ACCESS_A,PACL,PACL*);
+WINADVAPI DWORD WINAPI SetEntriesInAclW(ULONG,PEXPLICIT_ACCESS_W,PACL,PACL*);
+WINADVAPI DWORD WINAPI SetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI DWORD WINAPI SetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI DWORD WINAPI SetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
+WINADVAPI VOID WINAPI BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,PTRUSTEE_A,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,PTRUSTEE_W,DWORD,ACCESS_MODE,DWORD);
+WINADVAPI VOID WINAPI BuildImpersonateTrusteeA(PTRUSTEE_A,PTRUSTEE_A);
+WINADVAPI VOID WINAPI BuildImpersonateTrusteeW(PTRUSTEE_W,PTRUSTEE_W);
+WINADVAPI PTRUSTEE_A WINAPI GetMultipleTrusteeA(PTRUSTEE_A);
+WINADVAPI PTRUSTEE_W WINAPI GetMultipleTrusteeW(PTRUSTEE_W);
+WINADVAPI MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationA(PTRUSTEE_A);
+WINADVAPI MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationW(PTRUSTEE_W);
+
+#ifdef UNICODE
+#define BuildExplicitAccessWithName  BuildExplicitAccessWithNameW
+#define BuildSecurityDescriptor  BuildSecurityDescriptorW
+#define BuildTrusteeWithName  BuildTrusteeWithNameW
+#define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameW
+#define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidW
+#define BuildTrusteeWithSid  BuildTrusteeWithSidW
+#define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclW
+#define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclW
+#define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclW
+#define GetNamedSecurityInfo  GetNamedSecurityInfoW
+#define GetTrusteeForm  GetTrusteeFormW
+#define GetTrusteeName  GetTrusteeNameW
+#define GetTrusteeType  GetTrusteeTypeW
+#define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsW
+#define SetEntriesInAcl  SetEntriesInAclW
+#define SetNamedSecurityInfo  SetNamedSecurityInfoW
+#define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameW
+#define BuildImpersonateTrustee  BuildImpersonateTrusteeW
+#define GetMultipleTrustee  GetMultipleTrusteeW
+#define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationW
+#else
+#define BuildExplicitAccessWithName  BuildExplicitAccessWithNameA
+#define BuildSecurityDescriptor  BuildSecurityDescriptorA
+#define BuildTrusteeWithName  BuildTrusteeWithNameA
+#define BuildTrusteeWithObjectsAndName  BuildTrusteeWithObjectsAndNameA
+#define BuildTrusteeWithObjectsAndSid  BuildTrusteeWithObjectsAndSidA
+#define BuildTrusteeWithSid  BuildTrusteeWithSidA
+#define GetAuditedPermissionsFromAcl  GetAuditedPermissionsFromAclA
+#define GetEffectiveRightsFromAcl  GetEffectiveRightsFromAclA
+#define GetExplicitEntriesFromAcl  GetExplicitEntriesFromAclA
+#define GetNamedSecurityInfo  GetNamedSecurityInfoA
+#define GetTrusteeForm  GetTrusteeFormA
+#define GetTrusteeName  GetTrusteeNameA
+#define GetTrusteeType  GetTrusteeTypeA
+#define LookupSecurityDescriptorParts  LookupSecurityDescriptorPartsA
+#define SetEntriesInAcl  SetEntriesInAclA
+#define SetNamedSecurityInfo  SetNamedSecurityInfoA
+#define BuildImpersonateExplicitAccessWithName  BuildImpersonateExplicitAccessWithNameA
+#define BuildImpersonateTrustee  BuildImpersonateTrusteeA
+#define GetMultipleTrustee  GetMultipleTrusteeA
+#define GetMultipleTrusteeOperation  GetMultipleTrusteeOperationA
+#endif /* UNICODE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aclui.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,134 @@
+#ifndef _ACLUI_H
+#define _ACLUI_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _OBJC_NO_COM
+#include <objbase.h>
+#include <commctrl.h>
+#include <accctrl.h>
+#endif
+
+#if !defined(_ACLUI_)
+#define ACLUIAPI	DECLSPEC_IMPORT WINAPI
+#else
+#define ACLUIAPI	WINAPI
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _SI_OBJECT_INFO
+{
+	DWORD dwFlags;
+	HINSTANCE hInstance;
+	LPWSTR pszServerName;
+	LPWSTR pszObjectName;
+	LPWSTR pszPageTitle;
+	GUID guidObjectType;
+} SI_OBJECT_INFO, *PSI_OBJECT_INFO;
+
+/* values for SI_OBJECT_INFO.dwFlags */
+#define SI_EDIT_PERMS				0x00000000L
+#define SI_EDIT_OWNER				0x00000001L
+#define SI_EDIT_AUDITS				0x00000002L
+#define SI_CONTAINER				0x00000004L
+#define SI_READONLY					0x00000008L
+#define SI_ADVANCED					0x00000010L
+#define SI_RESET					0x00000020L
+#define SI_OWNER_READONLY			0x00000040L
+#define SI_EDIT_PROPERTIES			0x00000080L
+#define SI_OWNER_RECURSE			0x00000100L
+#define SI_NO_ACL_PROTECT			0x00000200L
+#define SI_NO_TREE_APPLY			0x00000400L
+#define SI_PAGE_TITLE				0x00000800L
+#define SI_SERVER_IS_DC				0x00001000L
+#define SI_RESET_DACL_TREE			0x00004000L
+#define SI_RESET_SACL_TREE			0x00008000L
+#define SI_OBJECT_GUID				0x00010000L
+#define SI_EDIT_EFFECTIVE			0x00020000L
+#define SI_RESET_DACL				0x00040000L
+#define SI_RESET_SACL				0x00080000L
+#define SI_RESET_OWNER				0x00100000L
+#define SI_NO_ADDITIONAL_PERMISSION	0x00200000L
+#define SI_MAY_WRITE				0x10000000L
+
+#define SI_EDIT_ALL     (SI_EDIT_PERMS | SI_EDIT_OWNER | SI_EDIT_AUDITS)
+
+
+typedef struct _SI_ACCESS
+{
+	const GUID* pguid;
+	ACCESS_MASK mask;
+	LPCWSTR pszName;
+	DWORD dwFlags;
+} SI_ACCESS, *PSI_ACCESS;
+
+/* values for SI_ACCESS.dwFlags */
+#define SI_ACCESS_SPECIFIC			0x00010000L
+#define SI_ACCESS_GENERAL			0x00020000L
+#define SI_ACCESS_CONTAINER			0x00040000L
+#define SI_ACCESS_PROPERTY			0x00080000L
+
+
+typedef struct _SI_INHERIT_TYPE
+{
+	const GUID* pguid;
+	ULONG dwFlags;
+	LPCWSTR pszName;
+} SI_INHERIT_TYPE, *PSI_INHERIT_TYPE;
+
+/* values for SI_INHERIT_TYPE.dwFlags
+   INHERIT_ONLY_ACE, CONTAINER_INHERIT_ACE, OBJECT_INHERIT_ACE
+   defined elsewhere */
+
+
+typedef enum _SI_PAGE_TYPE
+{
+	SI_PAGE_PERM = 0, 
+	SI_PAGE_ADVPERM, 
+	SI_PAGE_AUDIT, 
+	SI_PAGE_OWNER
+} SI_PAGE_TYPE;
+
+
+#define PSPCB_SI_INITDIALOG	(WM_USER + 1)
+
+#ifndef __ISecurityInformation_INTERFACE_DEFINED__
+#define __ISecurityInformation_INTERFACE_DEFINED__
+#define INTERFACE ISecurityInformation
+DECLARE_INTERFACE_(ISecurityInformation, IUnknown)
+{
+		STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+		STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+		STDMETHOD_(ULONG,Release)(THIS) PURE;
+		
+		STDMETHOD(GetObjectInformation)(THIS_ PSI_OBJECT_INFO) PURE;
+		STDMETHOD(GetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR*,BOOL) PURE;
+		STDMETHOD(SetSecurity)(THIS_ SECURITY_INFORMATION,PSECURITY_DESCRIPTOR) PURE;
+		STDMETHOD(GetAccessRights)(THIS_ const GUID*,DWORD,PSI_ACCESS*,ULONG*,ULONG*) PURE;
+		STDMETHOD(MapGeneric)(THIS_ const GUID*,UCHAR*,ACCESS_MASK*) PURE;
+		STDMETHOD(GetInheritTypes)(THIS_ PSI_INHERIT_TYPE*,ULONG*) PURE;
+		STDMETHOD(PropertySheetPageCallback)(THIS_ HWND,UINT,SI_PAGE_TYPE) PURE;
+};
+#undef INTERFACE
+typedef ISecurityInformation *LPSECURITYINFO;
+#endif
+
+/*
+ * TODO: ISecurityInformation2, IEffectivePermission, ISecurityObjectTypeInfo
+ */
+
+extern DECLSPEC_IMPORT const IID IID_ISecurityInformation;
+
+
+HPROPSHEETPAGE ACLUIAPI CreateSecurityPage(LPSECURITYINFO psi);
+BOOL ACLUIAPI EditSecurity(HWND hwndOwner, LPSECURITYINFO psi);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/adsprop.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,59 @@
+/*
+ * adsprop.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _ADSPROP_H
+#define _ADSPROP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Messages */
+#define WM_ADSPROP_NOTIFY_APPLY (WM_USER+1104)
+#define WM_ADSPROP_NOTIFY_CHANGE (WM_USER+1103)
+#define WM_ADSPROP_NOTIFY_ERROR (WM_USER+1110)
+#define WM_ADSPROP_NOTIFY_EXIT (WM_USER+1107)
+#define WM_ADSPROP_NOTIFY_FOREGROUND (WM_USER+1106)
+#define WM_ADSPROP_NOTIFY_PAGEHWND (WM_USER+1102)
+#define WM_ADSPROP_NOTIFY_PAGEINIT (WM_USER+1101)
+#define WM_ADSPROP_NOTIFY_SETFOCUS (WM_USER+1105)
+/*--- Active Directory Reference - Active Directory Structures - Active Directory MMC Property Page Structures */
+#if (_WIN32_WINNT >= 0x0501)
+typedef struct {
+	HWND hwndPage;
+	PWSTR pszPageTitle;
+	PWSTR pszObjPath;
+	PWSTR pszObjClass;
+	HRESULT hr;
+	PWSTR pszError;
+} ADSPROPERROR,*PADSPROPERROR;
+#endif /* (_WIN32_WINNT >= 0x0501) */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwSize;
+	DWORD dwFlags;
+	HRESULT hr;
+	IDirectoryObject *pDsObj;
+	LPWSTR pwzCN;
+	PADS_ATTR_INFO pWritableAttrs;
+} ADSPROPINITPARAMS,*PADSPROPINITPARAMS;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/afxres.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,23 @@
+#ifndef _AFXRES_H
+#define _AFXRES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _WINDOWS_H
+#include <windows.h>
+#endif
+
+/* IDC_STATIC is documented in winuser.h, but not defined. */
+#ifndef IDC_STATIC
+#define IDC_STATIC (-1)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/amaudio.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,33 @@
+#ifndef _AMAUDIO_H
+#define _AMAUDIO_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <dsound.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define INTERFACE IAMDirectSound
+DECLARE_INTERFACE_(IAMDirectSound, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDirectSoundInterface)(THIS_ LPDIRECTSOUND*) PURE;
+	STDMETHOD(GetPrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER*) PURE;
+	STDMETHOD(GetSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER*) PURE;
+	STDMETHOD(GetFocusWindow)(THIS_ HWND*,BOOL*) PURE ;
+	STDMETHOD(ReleaseDirectSoundInterface)(THIS_ LPDIRECTSOUND) PURE;
+	STDMETHOD(ReleasePrimaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER) PURE;
+	STDMETHOD(ReleaseSecondaryBufferInterface)(THIS_ LPDIRECTSOUNDBUFFER) PURE;
+	STDMETHOD(SetFocusWindow)(THIS_ HWND,BOOL) PURE ;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/amvideo.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,179 @@
+#ifndef _AMVIDEO_H
+#define _AMVIDEO_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <ddraw.h>
+#include <strmif.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define AMDDS_NONE 0x0000
+#define AMDDS_DCIPS 0x0001
+#define AMDDS_PS 0x0002
+#define AMDDS_RGBOVR 0x0004
+#define AMDDS_YUVOVR 0x0008
+#define AMDDS_RGBOFF 0x0010
+#define AMDDS_YUVOFF 0x0020
+#define AMDDS_RGBFLP 0x0040
+#define AMDDS_YUVFLP 0x0080
+#define AMDDS_ ALL 0x00FF
+#define AMDDS_DEFAULT 0x00FF
+#define AMDDS_YUV (AMDDS_YUVOFF|AMDDS_YUVOVR|AMDDS_YUVFLP)
+#define AMDDS_RGB (AMDDS_RGBOFF|AMDDS_RGBOVR|AMDDS_RGBFLP)
+#define AMDDS_PRIMARY (AMDDS_DCIPS|AMDDS_PS)
+#define BIT_MASKS_MATCH(pbmi1,pbmi2) ((pbmi1)->dwBitMasks[0] == (pbmi2)->dwBitMasks[0] && (pbmi1)->dwBitMasks[1] == (pbmi2)->dwBitMasks[1] && (pbmi1)->dwBitMasks[2] == (pbmi2)->dwBitMasks[2])
+#define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= 8)
+#define PALETTE_ENTRIES(pbmi) (1 << (pbmi)->bmiHeader.biBitCount)
+#define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,3*sizeof(DWORD)))
+#define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,256*sizeof(RGBQUAD)));
+#define SIZE_EGA_PALETTE (16*sizeof(RGBQUAD))
+#define SIZE_MASKS (3*sizeof(DWORD))
+#define SIZE_PALETTE (256*sizeof(RGBQUAD))
+typedef enum {
+	AM_PROPERTY_FRAMESTEP_STEP = 1,
+	AM_PROPERTY_FRAMESTEP_CANCEL = 2,
+	AM_PROPERTY_FRAMESTEP_CANSTEP = 3,
+	AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 4
+} AM_PROPERTY_FRAMESTEP;
+typedef struct tag_TRUECOLORINFO {
+	DWORD dwBitMasks[3];
+	RGBQUAD bmiColors[256];
+} TRUECOLORINFO;
+typedef struct tagVIDEOINFOHEADER {
+	RECT rcSource;
+	RECT rcTarget;
+	DWORD dwBitRate;
+	DWORD dwBitErrorRate;
+	REFERENCE_TIME AvgTimePerFrame;
+	BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER;
+typedef struct tagVIDEOINFO {
+	RECT rcSource,
+	RECT rcTarget,
+	DWORD dwBitRate,
+	DWORD dwBitErrorRate,
+	REFERENCE_TIME AvgTimePerFrame;
+	BITMAPINFOHEADER bmiHeader;
+	union {
+		RGBQUAD bmiColors[256];
+		DWORD dwBitMasks[3];
+		TRUECOLORINFO TrueColorInfo;
+	};
+} VIDEOINFO;
+typedef struct tagMPEG1VIDEOINFO {
+	VIDEOINFOHEADER hdr;
+	DWORD dwStartTimeCode;
+	DWORD cbSequenceHeader;
+	BYTE bSequenceHeader[1];
+} MPEG1VIDEOINFO;
+typedef struct tagAnalogVideoInfo {
+	RECT rcSource;           
+	RECT rcTarget;           
+	DWORD dwActiveWidth;      
+	DWORD dwActiveHeight;     
+	REFERENCE_TIME AvgTimePerFrame;    
+} ANALOGVIDEOINFO;
+typedef struct _AM_FRAMESTEP_STEP {
+	DWORD dwFramesToStep;
+} AM_FRAMESTEP_STEP;
+#define INTERFACE IDirectDrawVideo
+DECLARE_INTERFACE_(IDirectDrawVideo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CanUseOverlayStretch)(THIS_ long*) PURE;
+	STDMETHOD(CanUseScanLine)(THIS_ long*) PURE;
+	STDMETHOD(GetCaps)(THIS_ DDCAPS*) PURE;
+	STDMETHOD(GetDirectDraw)(THIS_ LPDIRECTDRAW*) PURE;
+	STDMETHOD(GetEmulatedCaps)(THIS_ DDCAPS*) PURE;
+	STDMETHOD(GetFourCCCodes)(THIS_ DWORD*,DWORD*) PURE;
+	STDMETHOD(GetSurfaceDesc)(THIS_ DDSURFACEDESC*) PURE;
+	STDMETHOD(GetSurfaceType)(THIS_ DWORD*) PURE;
+	STDMETHOD(GetSwitches)(THIS_ DWORD*) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetDirectDraw)(THIS_ LPDIRECTDRAW) PURE;
+	STDMETHOD(SetSwitches)(THIS_ DWORD) PURE;
+	STDMETHOD(UseOverlayStretch)(THIS_ long) PURE;
+	STDMETHOD(UseScanLine)(THIS_ long) PURE;
+	STDMETHOD(UseWhenFullScreen)(THIS_ long) PURE;
+	STDMETHOD(WillUseFullScreen)(THIS_ long*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IQualProp
+DECLARE_INTERFACE_(IQualProp, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(get_AvgFrameRate)(THIS_ int*) PURE;
+	STDMETHOD(get_AvgSyncOffset)(THIS_ int*) PURE;
+	STDMETHOD(get_DevSyncOffset)(THIS_ int*) PURE;
+	STDMETHOD(get_FramesDrawn)(THIS_ int*) PURE;
+	STDMETHOD(get_FramesDroppedInRenderer)(THIS_ int*) PURE;
+	STDMETHOD(get_Jitter)(THIS_ int*) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IFullScreenVideo
+DECLARE_INTERFACE_(IFullScreenVideo, IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CountModes)(THIS_ long*) PURE;
+	STDMETHOD(GetCaption)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetClipFactor)(THIS_ long*) PURE;
+	STDMETHOD(GetCurrentMode)(THIS_ long*) PURE;
+	STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE;
+	STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE;
+	STDMETHOD(GetMonitor)(THIS_ long*) PURE;
+	STDMETHOD(HideOnDeactivate)(THIS_ long) PURE;
+	STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
+	STDMETHOD(IsModeAvailable)(THIS_ long) PURE;
+	STDMETHOD(IsModeEnabled)(THIS_ long) PURE;
+	STDMETHOD(SetCaption)(THIS_ BSTR) PURE;
+	STDMETHOD(SetClipFactor)(THIS_ long) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetEnabled)(THIS_ long,long) PURE;
+	STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE;
+	STDMETHOD(SetMonitor)(THIS_ long) PURE;
+};
+#undef INTERFACE
+#define INTERFACE IFullScreenVideoEx
+DECLARE_INTERFACE_(IFullScreenVideoEx, IFullScreenVideo)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID, LPVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(CountModes)(THIS_ long*) PURE;
+	STDMETHOD(GetAcceleratorTable)(THIS_ HWND*,HACCEL*) PURE;
+	STDMETHOD(GetCaption)(THIS_ BSTR*) PURE;
+	STDMETHOD(GetClipFactor)(THIS_ long*) PURE;
+	STDMETHOD(GetCurrentMode)(THIS_ long*) PURE;
+	STDMETHOD(GetMessageDrain)(THIS_ HWND*) PURE;
+	STDMETHOD(GetModeInfo)(THIS_ long,long*,long*,long*) PURE;
+	STDMETHOD(GetMonitor)(THIS_ long*) PURE;
+	STDMETHOD(HideOnDeactivate)(THIS_ long) PURE;
+	STDMETHOD(IsHideOnDeactivate)(THIS) PURE;
+	STDMETHOD(IsKeepPixelAspectRatio)(THIS_ long*) PURE;
+	STDMETHOD(IsModeAvailable)(THIS_ long) PURE;
+	STDMETHOD(IsModeEnabled)(THIS_ long) PURE;
+	STDMETHOD(KeepPixelAspectRatio)(THIS_ long) PURE;
+	STDMETHOD(SetAcceleratorTable)(THIS_ HWND,HACCEL) PURE;
+	STDMETHOD(SetCaption)(THIS_ BSTR) PURE;
+	STDMETHOD(SetClipFactor)(THIS_ long) PURE;
+	STDMETHOD(SetDefault)(THIS) PURE;
+	STDMETHOD(SetEnabled)(THIS_ long,long) PURE;
+	STDMETHOD(SetMessageDrain)(THIS_ HWND) PURE;
+	STDMETHOD(SetMonitor)(THIS_ long) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ansidecl.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,423 @@
+/* ANSI and traditional C compatability macros
+   Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+   2002, 2003, 2004, 2005, 2006, 2007, 2009, 2010
+   Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT 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
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+/* ANSI and traditional C compatibility macros
+
+   ANSI C is assumed if __STDC__ is #defined.
+
+   Macro		ANSI C definition	Traditional C definition
+   -----		---- - ----------	----------- - ----------
+   ANSI_PROTOTYPES	1			not defined
+   PTR			`void *'		`char *'
+   PTRCONST		`void *const'		`char *'
+   LONG_DOUBLE		`long double'		`double'
+   const		not defined		`'
+   volatile		not defined		`'
+   signed		not defined		`'
+   VA_START(ap, var)	va_start(ap, var)	va_start(ap)
+
+   Note that it is safe to write "void foo();" indicating a function
+   with no return value, in all K+R compilers we have been able to test.
+
+   For declaring functions with prototypes, we also provide these:
+
+   PARAMS ((prototype))
+   -- for functions which take a fixed number of arguments.  Use this
+   when declaring the function.  When defining the function, write a
+   K+R style argument list.  For example:
+
+	char *strcpy PARAMS ((char *dest, char *source));
+	...
+	char *
+	strcpy (dest, source)
+	     char *dest;
+	     char *source;
+	{ ... }
+
+
+   VPARAMS ((prototype, ...))
+   -- for functions which take a variable number of arguments.  Use
+   PARAMS to declare the function, VPARAMS to define it.  For example:
+
+	int printf PARAMS ((const char *format, ...));
+	...
+	int
+	printf VPARAMS ((const char *format, ...))
+	{
+	   ...
+	}
+
+   For writing functions which take variable numbers of arguments, we
+   also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros.  These
+   hide the differences between K+R <varargs.h> and C89 <stdarg.h> more
+   thoroughly than the simple VA_START() macro mentioned above.
+
+   VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end.
+   Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls
+   corresponding to the list of fixed arguments.  Then use va_arg
+   normally to get the variable arguments, or pass your va_list object
+   around.  You do not declare the va_list yourself; VA_OPEN does it
+   for you.
+
+   Here is a complete example:
+
+	int
+	printf VPARAMS ((const char *format, ...))
+	{
+	   int result;
+
+	   VA_OPEN (ap, format);
+	   VA_FIXEDARG (ap, const char *, format);
+
+	   result = vfprintf (stdout, format, ap);
+	   VA_CLOSE (ap);
+
+	   return result;
+	}
+
+
+   You can declare variables either before or after the VA_OPEN,
+   VA_FIXEDARG sequence.  Also, VA_OPEN and VA_CLOSE are the beginning
+   and end of a block.  They must appear at the same nesting level,
+   and any variables declared after VA_OPEN go out of scope at
+   VA_CLOSE.  Unfortunately, with a K+R compiler, that includes the
+   argument list.  You can have multiple instances of VA_OPEN/VA_CLOSE
+   pairs in a single function in case you need to traverse the
+   argument list more than once.
+
+   For ease of writing code which uses GCC extensions but needs to be
+   portable to other compilers, we provide the GCC_VERSION macro that
+   simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various
+   wrappers around __attribute__.  Also, __extension__ will be #defined
+   to nothing if it doesn't work.  See below.
+
+   This header also defines a lot of obsolete macros:
+   CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID,
+   AND, DOTS, NOARGS.  Don't use them.  */
+
+#ifndef	_ANSIDECL_H
+#define _ANSIDECL_H	1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Every source file includes this file,
+   so they will all get the switch for lint.  */
+/* LINTLIBRARY */
+
+/* Using MACRO(x,y) in cpp #if conditionals does not work with some
+   older preprocessors.  Thus we can't define something like this:
+
+#define HAVE_GCC_VERSION(MAJOR, MINOR) \
+  (__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
+
+and then test "#if HAVE_GCC_VERSION(2,7)".
+
+So instead we use the macro below and test it against specific values.  */
+
+/* This macro simplifies testing whether we are using gcc, and if it
+   is of a particular minimum version. (Both major & minor numbers are
+   significant.)  This macro will evaluate to 0 if we are not using
+   gcc at all.  */
+#ifndef GCC_VERSION
+#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
+#endif /* GCC_VERSION */
+
+#if defined (__STDC__) || defined(__cplusplus) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32)
+/* All known AIX compilers implement these things (but don't always
+   define __STDC__).  The RISC/OS MIPS compiler defines these things
+   in SVR4 mode, but does not define __STDC__.  */
+/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other
+   C++ compilers, does not define __STDC__, though it acts as if this
+   was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */
+
+#define ANSI_PROTOTYPES	1
+#define PTR		void *
+#define PTRCONST	void *const
+#define LONG_DOUBLE	long double
+
+/* PARAMS is often defined elsewhere (e.g. by libintl.h), so wrap it in
+   a #ifndef.  */
+#ifndef PARAMS
+#define PARAMS(ARGS)		ARGS
+#endif
+
+#define VPARAMS(ARGS)		ARGS
+#define VA_START(VA_LIST, VAR)	va_start(VA_LIST, VAR)
+
+/* variadic function helper macros */
+/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
+   use without inhibiting further decls and without declaring an
+   actual variable.  */
+#define VA_OPEN(AP, VAR)	{ va_list AP; va_start(AP, VAR); { struct Qdmy
+#define VA_CLOSE(AP)		} va_end(AP); }
+#define VA_FIXEDARG(AP, T, N)	struct Qdmy
+ 
+#undef const
+#undef volatile
+#undef signed
+
+/* inline requires special treatment; it's in C99, and GCC >=2.7 supports
+   it too, but it's not in C89.  */
+#undef inline
+#if __STDC_VERSION__ >= 199901L || defined(__cplusplus) || (defined(__SUNPRO_C) && defined(__C99FEATURES__))
+/* it's a keyword */
+#else
+# if GCC_VERSION >= 2007
+#  define inline __inline__   /* __inline__ prevents -pedantic warnings */
+# else
+#  define inline  /* nothing */
+# endif
+#endif
+
+/* These are obsolete.  Do not use.  */
+#ifndef IN_GCC
+#define CONST		const
+#define VOLATILE	volatile
+#define SIGNED		signed
+
+#define PROTO(type, name, arglist)	type name arglist
+#define EXFUN(name, proto)		name proto
+#define DEFUN(name, arglist, args)	name(args)
+#define DEFUN_VOID(name)		name(void)
+#define AND		,
+#define DOTS		, ...
+#define NOARGS		void
+#endif /* ! IN_GCC */
+
+#else	/* Not ANSI C.  */
+
+#undef  ANSI_PROTOTYPES
+#define PTR		char *
+#define PTRCONST	PTR
+#define LONG_DOUBLE	double
+
+#define PARAMS(args)		()
+#define VPARAMS(args)		(va_alist) va_dcl
+#define VA_START(va_list, var)	va_start(va_list)
+
+#define VA_OPEN(AP, VAR)		{ va_list AP; va_start(AP); { struct Qdmy
+#define VA_CLOSE(AP)			} va_end(AP); }
+#define VA_FIXEDARG(AP, TYPE, NAME)	TYPE NAME = va_arg(AP, TYPE)
+
+/* some systems define these in header files for non-ansi mode */
+#undef const
+#undef volatile
+#undef signed
+#undef inline
+#define const
+#define volatile
+#define signed
+#define inline
+
+#ifndef IN_GCC
+#define CONST
+#define VOLATILE
+#define SIGNED
+
+#define PROTO(type, name, arglist)	type name ()
+#define EXFUN(name, proto)		name()
+#define DEFUN(name, arglist, args)	name arglist args;
+#define DEFUN_VOID(name)		name()
+#define AND		;
+#define DOTS
+#define NOARGS
+#endif /* ! IN_GCC */
+
+#endif	/* ANSI C.  */
+
+/* Define macros for some gcc attributes.  This permits us to use the
+   macros freely, and know that they will come into play for the
+   version of gcc in which they are supported.  */
+
+#if (GCC_VERSION < 2007)
+# define __attribute__(x)
+#endif
+
+/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
+#ifndef ATTRIBUTE_MALLOC
+# if (GCC_VERSION >= 2096)
+#  define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+# else
+#  define ATTRIBUTE_MALLOC
+# endif /* GNUC >= 2.96 */
+#endif /* ATTRIBUTE_MALLOC */
+
+/* Attributes on labels were valid as of gcc 2.93 and g++ 4.5.  For
+   g++ an attribute on a label must be followed by a semicolon.  */
+#ifndef ATTRIBUTE_UNUSED_LABEL
+# ifndef __cplusplus
+#  if GCC_VERSION >= 2093
+#   define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
+#  else
+#   define ATTRIBUTE_UNUSED_LABEL
+#  endif
+# else
+#  if GCC_VERSION >= 4005
+#   define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED ;
+#  else
+#   define ATTRIBUTE_UNUSED_LABEL
+#  endif
+# endif
+#endif
+
+#ifndef ATTRIBUTE_UNUSED
+#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
+#endif /* ATTRIBUTE_UNUSED */
+
+/* Before GCC 3.4, the C++ frontend couldn't parse attributes placed after the
+   identifier name.  */
+#if ! defined(__cplusplus) || (GCC_VERSION >= 3004)
+# define ARG_UNUSED(NAME) NAME ATTRIBUTE_UNUSED
+#else /* !__cplusplus || GNUC >= 3.4 */
+# define ARG_UNUSED(NAME) NAME
+#endif /* !__cplusplus || GNUC >= 3.4 */
+
+#ifndef ATTRIBUTE_NORETURN
+#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+#endif /* ATTRIBUTE_NORETURN */
+
+/* Attribute `nonnull' was valid as of gcc 3.3.  */
+#ifndef ATTRIBUTE_NONNULL
+# if (GCC_VERSION >= 3003)
+#  define ATTRIBUTE_NONNULL(m) __attribute__ ((__nonnull__ (m)))
+# else
+#  define ATTRIBUTE_NONNULL(m)
+# endif /* GNUC >= 3.3 */
+#endif /* ATTRIBUTE_NONNULL */
+
+/* Attribute `pure' was valid as of gcc 3.0.  */
+#ifndef ATTRIBUTE_PURE
+# if (GCC_VERSION >= 3000)
+#  define ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+#  define ATTRIBUTE_PURE
+# endif /* GNUC >= 3.0 */
+#endif /* ATTRIBUTE_PURE */
+
+/* Use ATTRIBUTE_PRINTF when the format specifier must not be NULL.
+   This was the case for the `printf' format attribute by itself
+   before GCC 3.3, but as of 3.3 we need to add the `nonnull'
+   attribute to retain this behavior.  */
+#ifndef ATTRIBUTE_PRINTF
+#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n))) ATTRIBUTE_NONNULL(m)
+#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
+#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
+#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
+#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
+#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
+#endif /* ATTRIBUTE_PRINTF */
+
+/* Use ATTRIBUTE_FPTR_PRINTF when the format attribute is to be set on
+   a function pointer.  Format attributes were allowed on function
+   pointers as of gcc 3.1.  */
+#ifndef ATTRIBUTE_FPTR_PRINTF
+# if (GCC_VERSION >= 3001)
+#  define ATTRIBUTE_FPTR_PRINTF(m, n) ATTRIBUTE_PRINTF(m, n)
+# else
+#  define ATTRIBUTE_FPTR_PRINTF(m, n)
+# endif /* GNUC >= 3.1 */
+# define ATTRIBUTE_FPTR_PRINTF_1 ATTRIBUTE_FPTR_PRINTF(1, 2)
+# define ATTRIBUTE_FPTR_PRINTF_2 ATTRIBUTE_FPTR_PRINTF(2, 3)
+# define ATTRIBUTE_FPTR_PRINTF_3 ATTRIBUTE_FPTR_PRINTF(3, 4)
+# define ATTRIBUTE_FPTR_PRINTF_4 ATTRIBUTE_FPTR_PRINTF(4, 5)
+# define ATTRIBUTE_FPTR_PRINTF_5 ATTRIBUTE_FPTR_PRINTF(5, 6)
+#endif /* ATTRIBUTE_FPTR_PRINTF */
+
+/* Use ATTRIBUTE_NULL_PRINTF when the format specifier may be NULL.  A
+   NULL format specifier was allowed as of gcc 3.3.  */
+#ifndef ATTRIBUTE_NULL_PRINTF
+# if (GCC_VERSION >= 3003)
+#  define ATTRIBUTE_NULL_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
+# else
+#  define ATTRIBUTE_NULL_PRINTF(m, n)
+# endif /* GNUC >= 3.3 */
+# define ATTRIBUTE_NULL_PRINTF_1 ATTRIBUTE_NULL_PRINTF(1, 2)
+# define ATTRIBUTE_NULL_PRINTF_2 ATTRIBUTE_NULL_PRINTF(2, 3)
+# define ATTRIBUTE_NULL_PRINTF_3 ATTRIBUTE_NULL_PRINTF(3, 4)
+# define ATTRIBUTE_NULL_PRINTF_4 ATTRIBUTE_NULL_PRINTF(4, 5)
+# define ATTRIBUTE_NULL_PRINTF_5 ATTRIBUTE_NULL_PRINTF(5, 6)
+#endif /* ATTRIBUTE_NULL_PRINTF */
+
+/* Attribute `sentinel' was valid as of gcc 3.5.  */
+#ifndef ATTRIBUTE_SENTINEL
+# if (GCC_VERSION >= 3005)
+#  define ATTRIBUTE_SENTINEL __attribute__ ((__sentinel__))
+# else
+#  define ATTRIBUTE_SENTINEL
+# endif /* GNUC >= 3.5 */
+#endif /* ATTRIBUTE_SENTINEL */
+
+
+#ifndef ATTRIBUTE_ALIGNED_ALIGNOF
+# if (GCC_VERSION >= 3000)
+#  define ATTRIBUTE_ALIGNED_ALIGNOF(m) __attribute__ ((__aligned__ (__alignof__ (m))))
+# else
+#  define ATTRIBUTE_ALIGNED_ALIGNOF(m)
+# endif /* GNUC >= 3.0 */
+#endif /* ATTRIBUTE_ALIGNED_ALIGNOF */
+
+/* Useful for structures whose layout must much some binary specification
+   regardless of the alignment and padding qualities of the compiler.  */
+#ifndef ATTRIBUTE_PACKED
+# define ATTRIBUTE_PACKED __attribute__ ((packed))
+#endif
+
+/* Attribute `hot' and `cold' was valid as of gcc 4.3.  */
+#ifndef ATTRIBUTE_COLD
+# if (GCC_VERSION >= 4003)
+#  define ATTRIBUTE_COLD __attribute__ ((__cold__))
+# else
+#  define ATTRIBUTE_COLD
+# endif /* GNUC >= 4.3 */
+#endif /* ATTRIBUTE_COLD */
+#ifndef ATTRIBUTE_HOT
+# if (GCC_VERSION >= 4003)
+#  define ATTRIBUTE_HOT __attribute__ ((__hot__))
+# else
+#  define ATTRIBUTE_HOT
+# endif /* GNUC >= 4.3 */
+#endif /* ATTRIBUTE_HOT */
+
+/* We use __extension__ in some places to suppress -pedantic warnings
+   about GCC extensions.  This feature didn't work properly before
+   gcc 2.8.  */
+#if GCC_VERSION < 2008
+#define __extension__
+#endif
+
+/* This is used to declare a const variable which should be visible
+   outside of the current compilation unit.  Use it as
+     EXPORTED_CONST int i = 1;
+   This is because the semantics of const are different in C and C++.
+   "extern const" is permitted in C but it looks strange, and gcc
+   warns about it when -Wc++-compat is not used.  */
+#ifdef __cplusplus
+#define EXPORTED_CONST extern const
+#else
+#define EXPORTED_CONST const
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* ansidecl.h	*/
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/assert.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,51 @@
+/* 
+ * assert.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Define the assert macro for debug output.
+ *
+ */
+
+/* We should be able to include this file multiple times to allow the assert
+   macro to be enabled/disabled for different parts of code.  So don't add a
+   header guard.  */ 
+
+#ifndef RC_INVOKED
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#undef assert
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifdef NDEBUG
+/*
+ * If not debugging, assert does nothing.
+ */
+#define assert(x)	((void)0)
+
+#else /* debugging enabled */
+
+/*
+ * CRTDLL nicely supplies a function which does the actual output and
+ * call to abort.
+ */
+_CRTIMP void __cdecl __MINGW_NOTHROW _assert (const char*, const char*, int) __MINGW_ATTRIB_NORETURN;
+
+/*
+ * Definition of the assert macro.
+ */
+#define assert(e)       ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
+
+#endif	/* NDEBUG */
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif /* Not RC_INVOKED */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/audevcod.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,31 @@
+#ifndef _AUDEVCOD_H
+#define _AUDEVCOD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum _tagSND_DEVICE_ERROR {
+	SNDDEV_ERROR_Open = 1,       
+	SNDDEV_ERROR_Close = 2,       
+	SNDDEV_ERROR_GetCaps = 3,       
+	SNDDEV_ERROR_PrepareHeader = 4,
+	SNDDEV_ERROR_UnprepareHeader = 5,       
+	SNDDEV_ERROR_Reset = 6,
+	SNDDEV_ERROR_Restart = 7,       
+	SNDDEV_ERROR_GetPosition = 8,       
+	SNDDEV_ERROR_Write = 9,
+	SNDDEV_ERROR_Pause = 10,       
+	SNDDEV_ERROR_Stop = 11,       
+	SNDDEV_ERROR_Start = 12,       
+	SNDDEV_ERROR_AddBuffer = 13,
+	SNDDEV_ERROR_Query = 14
+} SNDDEV_ERR;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aviriff.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,87 @@
+#ifndef _AVIRIFF_H
+#define _AVIRIFF_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef _MMSYSTEM_H
+#include <mmsystem.h>
+#endif
+#ifndef _WINGDI_H
+#include <wingdi.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _avimainheader {
+	FOURCC fcc;
+	DWORD cb;
+	DWORD dwMicroSecPerFrame;
+	DWORD dwMaxBytesPerSec;
+	DWORD dwPaddingGranularity;
+	DWORD dwFlags;
+	DWORD dwTotalFrames;
+	DWORD dwInitialFrames;
+	DWORD dwStreams;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwWidth;
+	DWORD dwHeight;
+	DWORD dwReserved[4];
+} AVIMAINHEADER;
+#define AVIF_COPYRIGHTED 0x00020000
+#define AVIF_HASINDEX 0x00000010
+#define AVIF_ISINTERLEAVED 0x00000100
+#define AVIF_MUSTUSEINDEX 0x00000020
+#define AVIF_WASCAPTUREFILE 0x00010000
+typedef struct _avioldindex {
+	FOURCC fcc;
+	DWORD cb;
+	struct _avioldindex_entry {
+		DWORD dwChunkId;
+		DWORD dwFlags;
+		DWORD dwOffset;
+		DWORD dwSize;
+	} aIndex[];
+} AVIOLDINDEX;
+#define AVIIF_LIST 0x00000001
+#define AVIIF_KEYFRAME 0x00000010
+#define AVIIF_NO_TIME 0x00000100
+typedef struct {
+	BYTE bFirstEntry;
+	BYTE bNumEntries;
+	WORD wFlags;
+	PALETTEENTRY peNew[];
+} AVIPALCHANGE;
+typedef struct _avistreamheader {
+	FOURCC fcc;
+	DWORD cb;
+	FOURCC fccType;
+	FOURCC fccHandler;
+	DWORD dwFlags;
+	WORD wPriority;
+	WORD wLanguage;
+	DWORD dwInitialFrames;
+	DWORD dwScale;
+	DWORD dwRate;
+	DWORD dwStart;
+	DWORD dwLength;
+	DWORD dwSuggestedBufferSize;
+	DWORD dwQuality;
+	DWORD dwSampleSize;
+	struct {
+		short int left;
+		short int top;
+		short int right;
+		short int bottom;
+	} rcFrame;
+} AVISTREAMHEADER;
+#define AVISF_DISABLED 0x00000001
+#define AVISF_VIDEO_PALCHANGES 0x00010000
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/aygshell.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,49 @@
+#ifndef _AYGSHELL_H
+#define _AYGSHELL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#if _WIN32_WCE >= 400
+
+#include <windef.h>             /* shellapi needs this */
+#include <basetyps.h>
+#include <shellapi.h>           /* for WINSHELLAPI */
+
+typedef struct tagSHMENUBARINFO {
+  DWORD cbSize;
+  HWND hwndParent;
+  DWORD dwFlags;
+  UINT nToolBarId;
+  HINSTANCE hInstRes;
+  int nBmpId;
+  int cBmpImages;
+  HWND hwndMB;
+  COLORREF clrBk;
+} SHMENUBARINFO, *PSHMENUBARINFO;
+
+typedef struct tagSHACTIVATEINFO {
+  DWORD cbSize;
+  HWND hwndLastFocus;
+  UINT fSipUp :1;
+  UINT fSipOnDeactivation :1;
+  UINT fActive :1;
+  UINT fReserved :29;
+} SHACTIVATEINFO, *PSHACTIVATEINFO;
+
+WINSHELLAPI BOOL WINAPI SHCreateMenuBar(SHMENUBARINFO*);
+WINSHELLAPI HWND WINAPI SHFindMenuBar(HWND);
+WINSHELLAPI HRESULT WINAPI SHCreateNewItem(HWND,REFCLSID);
+WINSHELLAPI BOOL WINAPI SHFullScreen(HWND,DWORD);
+WINSHELLAPI BOOL WINAPI SHSipInfo(UINT,UINT,PVOID,UINT);
+/* next exported by ordinal only: @84 */
+WINSHELLAPI BOOL WINAPI SHHandleWMActivate(HWND,WPARAM,LPARAM,SHACTIVATEINFO*,DWORD);
+/* next exported by ordinal only: @83 */
+WINSHELLAPI BOOL WINAPI SHHandleWMSettingChange(HWND,WPARAM,LPARAM,SHACTIVATEINFO*);
+
+/* The following are not in device ROMs. */
+extern BOOL SHInvokeContextMenuCommand(HWND,UINT,HANDLE);
+
+#endif /* _WIN32_WCE >= 400 */
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/basetsd.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,119 @@
+#ifndef _BASETSD_H
+#define _BASETSD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __GNUC__
+#ifndef __int64
+#define __int64 long long
+#endif
+#endif
+
+#if defined(_WIN64)
+#define __int3264   __int64
+#define ADDRESS_TAG_BIT 0x40000000000UI64
+#else /*  !_WIN64 */
+#define __int3264   __int32
+#define ADDRESS_TAG_BIT 0x80000000UL
+#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
+#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
+#define LongToHandle( h) ((HANDLE)(LONG_PTR) (h))
+#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
+#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
+#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
+#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
+#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
+#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
+#define IntToPtr( i )    ((VOID*)(INT_PTR)((int)i))
+#define UIntToPtr( ui )  ((VOID*)(UINT_PTR)((unsigned int)ui))
+#define LongToPtr( l )   ((VOID*)(LONG_PTR)((long)l))
+#define ULongToPtr( ul )  ((VOID*)(ULONG_PTR)((unsigned long)ul))
+#endif /* !_WIN64 */
+
+#define UlongToPtr(ul) ULongToPtr(ul)
+#define UintToPtr(ui) UIntToPtr(ui)
+#define MAXUINT_PTR  (~((UINT_PTR)0))
+#define MAXINT_PTR   ((INT_PTR)(MAXUINT_PTR >> 1))
+#define MININT_PTR   (~MAXINT_PTR)
+#define MAXULONG_PTR (~((ULONG_PTR)0))
+#define MAXLONG_PTR  ((LONG_PTR)(MAXULONG_PTR >> 1))
+#define MINLONG_PTR  (~MAXLONG_PTR)
+#define MAXUHALF_PTR ((UHALF_PTR)~0)
+#define MAXHALF_PTR  ((HALF_PTR)(MAXUHALF_PTR >> 1))
+#define MINHALF_PTR  (~MAXHALF_PTR)
+
+#ifndef RC_INVOKED
+#ifdef __cplusplus
+extern "C" {
+#endif
+typedef int LONG32, *PLONG32;
+#ifndef XFree86Server
+typedef int INT32, *PINT32;
+#endif /* ndef XFree86Server */
+typedef unsigned int ULONG32, *PULONG32;
+typedef unsigned int DWORD32, *PDWORD32;
+typedef unsigned int UINT32, *PUINT32;
+
+#if defined(_WIN64)
+typedef __int64 INT_PTR, *PINT_PTR;
+typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
+typedef __int64 LONG_PTR, *PLONG_PTR;
+typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
+typedef unsigned __int64 HANDLE_PTR;
+typedef unsigned int UHALF_PTR, *PUHALF_PTR;
+typedef int HALF_PTR, *PHALF_PTR;
+
+#if 0 /* TODO when WIN64 is here */
+inline unsigned long HandleToUlong(const void* h )
+    { return((unsigned long) h ); }
+inline long HandleToLong( const void* h )
+    { return((long) h ); }
+inline void* LongToHandle( const long h )
+    { return((void*) (INT_PTR) h ); }
+inline unsigned long PtrToUlong( const void* p)
+    { return((unsigned long) p ); }
+inline unsigned int PtrToUint( const void* p )
+    { return((unsigned int) p ); }
+inline unsigned short PtrToUshort( const void* p )
+    { return((unsigned short) p ); }
+inline long PtrToLong( const void* p )
+    { return((long) p ); }
+inline int PtrToInt( const void* p )
+    { return((int) p ); }
+inline short PtrToShort( const void* p )
+    { return((short) p ); }
+inline void* IntToPtr( const int i )
+    { return( (void*)(INT_PTR)i ); }
+inline void* UIntToPtr(const unsigned int ui)
+    { return( (void*)(UINT_PTR)ui ); }
+inline void* LongToPtr( const long l )
+    { return( (void*)(LONG_PTR)l ); }
+inline void* ULongToPtr( const unsigned long ul )
+    { return( (void*)(ULONG_PTR)ul ); }
+#endif /* 0_ */
+
+#else /*  !_WIN64 */
+typedef  int INT_PTR, *PINT_PTR;
+typedef  unsigned int UINT_PTR, *PUINT_PTR;
+typedef  long LONG_PTR, *PLONG_PTR;
+typedef  unsigned long ULONG_PTR, *PULONG_PTR;
+typedef unsigned short UHALF_PTR, *PUHALF_PTR;
+typedef short HALF_PTR, *PHALF_PTR;
+typedef unsigned long HANDLE_PTR;
+#endif /* !_WIN64 */
+
+typedef ULONG_PTR SIZE_T, *PSIZE_T;
+typedef LONG_PTR SSIZE_T, *PSSIZE_T;
+typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
+typedef __int64 LONG64, *PLONG64;
+typedef __int64 INT64,  *PINT64;
+typedef unsigned __int64 ULONG64, *PULONG64;
+typedef unsigned __int64 DWORD64, *PDWORD64;
+typedef unsigned __int64 UINT64,  *PUINT64;
+#ifdef __cplusplus
+}
+#endif
+#endif /* !RC_INVOKED */
+
+#endif /* _BASETSD_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/basetyps.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,182 @@
+#ifndef _BASETYPS_H
+#define _BASETYPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef _OBJC_NO_COM_
+# ifdef __cplusplus
+#  define EXTERN_C extern "C"
+# else
+#  define EXTERN_C extern
+# endif  /* __cplusplus */ 
+# ifndef __int64
+#  define __int64 long long
+# endif
+# ifndef __int32
+#  define __int32 long
+# endif
+# ifndef __int16
+#  define __int16 short
+# endif
+# ifndef __int8
+#  define __int8 char
+# endif
+# ifndef __small
+#  define __small char
+# endif
+# ifndef __hyper
+#  define __hyper long long
+# endif
+# define STDMETHODCALLTYPE	__stdcall
+# define STDMETHODVCALLTYPE	__cdecl
+# define STDAPICALLTYPE	__stdcall
+# define STDAPIVCALLTYPE	__cdecl
+# define STDAPI	EXTERN_C HRESULT STDAPICALLTYPE
+# define STDAPI_(t)	EXTERN_C t STDAPICALLTYPE
+# define STDMETHODIMP	HRESULT STDMETHODCALLTYPE
+# define STDMETHODIMP_(t)	t STDMETHODCALLTYPE
+# define STDAPIV	EXTERN_C HRESULT STDAPIVCALLTYPE
+# define STDAPIV_(t)	EXTERN_C t STDAPIVCALLTYPE
+# define STDMETHODIMPV	HRESULT STDMETHODVCALLTYPE
+# define STDMETHODIMPV_(t)	t STDMETHODVCALLTYPE
+/* Newer MS compilers support the __interface keyword, but
+   that has a specific meaning that is enforced by the compiler.
+   For now, just get 'interface' out of the global namespace
+   for __OBJC__ */
+# define _COM_interface	struct
+# ifndef __OBJC__
+#  define interface	_COM_interface
+# endif
+# if defined(__cplusplus) && !defined(CINTERFACE)
+#  define STDMETHOD(m)	virtual HRESULT STDMETHODCALLTYPE m
+#  define STDMETHOD_(t,m)	virtual t STDMETHODCALLTYPE m
+#  define PURE	=0
+#  define THIS_
+#  define THIS	void
+/*
+  __attribute__((com_interface)) is obsolete in __GNUC__ >= 3
+  g++ vtables are now COM-compatible by default
+*/
+#  if defined(__GNUC__) &&  __GNUC__ < 3 && !defined(NOCOMATTRIBUTE)
+#   define DECLARE_INTERFACE(i) _COM_interface __attribute__((com_interface)) i
+#   define DECLARE_INTERFACE_(i,b) _COM_interface __attribute__((com_interface)) i : public b
+#  else
+#   define DECLARE_INTERFACE(i) _COM_interface i
+#   define DECLARE_INTERFACE_(i,b) _COM_interface i : public b
+#  endif
+# else
+#  define STDMETHOD(m)	HRESULT(STDMETHODCALLTYPE *m)
+#  define STDMETHOD_(t,m)	t(STDMETHODCALLTYPE *m)
+#  define PURE
+#  define THIS_	INTERFACE *,
+#  define THIS	INTERFACE *
+#  ifndef CONST_VTABLE
+#   define CONST_VTABLE
+#  endif
+#  define DECLARE_INTERFACE(i) \
+   typedef _COM_interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \
+   typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \
+   CONST_VTABLE struct i##Vtbl
+#  define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
+# endif
+# define BEGIN_INTERFACE
+# define END_INTERFACE
+
+# define FWD_DECL(i) typedef _COM_interface i i
+# if defined(__cplusplus) && !defined(CINTERFACE)
+#  define IENUM_THIS(T)
+#  define IENUM_THIS_(T)
+# else
+#  define IENUM_THIS(T) T*
+#  define IENUM_THIS_(T) T*,
+# endif
+# define DECLARE_ENUMERATOR_(I,T) \
+         DECLARE_INTERFACE_(I,IUnknown) \
+         { \
+	  STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \
+	  STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \
+	  STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \
+	  STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \
+	  STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
+         }
+# define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
+
+#endif /* _OBJC_NO_COM_ */
+
+#ifdef _GUID_DEFINED
+# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
+#endif
+
+#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in winnt.h */
+#define GUID_DEFINED
+typedef struct _GUID
+{
+    unsigned long Data1;
+    unsigned short Data2;
+    unsigned short Data3;
+    unsigned char Data4[8];
+} GUID,*REFGUID,*LPGUID;
+#endif /* GUID_DEFINED */
+#ifndef UUID_DEFINED
+#define UUID_DEFINED
+typedef GUID UUID;
+#endif /* UUID_DEFINED */
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+typedef GUID IID;
+#endif /* __IID_DEFINED__ */
+typedef GUID CLSID;
+typedef CLSID *LPCLSID;
+typedef IID *LPIID;
+typedef IID *REFIID;
+typedef CLSID *REFCLSID;
+typedef GUID FMTID;
+typedef FMTID *REFFMTID;
+typedef unsigned long error_status_t;
+#define uuid_t UUID
+typedef unsigned long PROPID;
+
+#ifndef _REFGUID_DEFINED
+#if defined (__cplusplus) && !defined (CINTERFACE)
+#define REFGUID const GUID&
+#define REFIID const IID&
+#define REFCLSID const CLSID&
+#define REFFMTID const FMTID&
+#else
+#define REFGUID const GUID* const
+#define REFIID const IID* const
+#define REFCLSID const CLSID* const
+#define REFFMTID const FMTID* const
+#endif
+#define _REFGUID_DEFINED
+#define _REFIID_DEFINED
+#define _REFCLSID_DEFINED
+#define _REFFMTID_DEFINED
+#endif
+#ifndef GUID_SECTION
+#define GUID_SECTION ".text"
+#endif
+/* Explicit naming of .text section for readonly data is only
+   needed for older GGC (pre-2.95).
+   More recent (3.4) GCC puts readonly data in .rdata.  */
+#if defined (__GNUC__) && (__GNUC__ <= 2 && __GNUC_MINOR__ < 95) 
+#define GUID_SECT __attribute__ ((section (GUID_SECTION)))
+#else
+#define GUID_SECT
+#endif
+#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus))
+#define GUID_EXT EXTERN_C
+#else
+#define GUID_EXT
+#endif
+#ifdef INITGUID
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#else
+#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n
+#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+#endif
+#endif 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bdatypes.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,32 @@
+#ifndef _BDATYPES_H
+#define _BDATYPES_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum {
+	MEDIA_TRANSPORT_PACKET,
+	MEDIA_ELEMENTARY_STREAM,
+	MEDIA_MPEG2_PSI,
+	MEDIA_TRANSPORT_PAYLOAD
+} MEDIA_SAMPLE_CONTENT;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+	DWORD dwOffset
+	DWORD dwPacketLength
+	DWORD dwStride
+} MPEG2_TRANSPORT_STRIDE;
+typedef struct {
+	ULONG ulPID;
+	MEDIA_SAMPLE_CONTENT MediaSampleContent ;
+} PID_MAP;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bfd.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,5827 @@
+/* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically 
+   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c", 
+   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c", 
+   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c", 
+   "linker.c", "simple.c" and "compress.c".
+   Run "make headers" in your build bfd/ to regenerate.  */
+
+/* Main header file for the bfd library -- portable access to object files.
+
+   Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
+   Free Software Foundation, Inc.
+
+   Contributed by Cygnus Support.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT 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
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
+
+#ifndef __BFD_H_SEEN__
+#define __BFD_H_SEEN__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "ansidecl.h"
+#include "symcat.h"
+#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
+#ifndef SABER
+/* This hack is to avoid a problem with some strict ANSI C preprocessors.
+   The problem is, "32_" is not a valid preprocessing token, and we don't
+   want extra underscores (e.g., "nlm_32_").  The XCONCAT2 macro will
+   cause the inner CONCAT2 macros to be evaluated first, producing
+   still-valid pp-tokens.  Then the final concatenation can be done.  */
+#undef CONCAT4
+#define CONCAT4(a,b,c,d) XCONCAT2(CONCAT2(a,b),CONCAT2(c,d))
+#endif
+#endif
+
+/* This is a utility macro to handle the situation where the code
+   wants to place a constant string into the code, followed by a
+   comma and then the length of the string.  Doing this by hand
+   is error prone, so using this macro is safer.  */
+#define STRING_COMMA_LEN(STR) (STR), (sizeof (STR) - 1)
+/* Unfortunately it is not possible to use the STRING_COMMA_LEN macro
+   to create the arguments to another macro, since the preprocessor
+   will mis-count the number of arguments to the outer macro (by not
+   evaluating STRING_COMMA_LEN and so missing the comma).  This is a
+   problem for example when trying to use STRING_COMMA_LEN to build
+   the arguments to the strncmp() macro.  Hence this alternative
+   definition of strncmp is provided here.
+   
+   Note - these macros do NOT work if STR2 is not a constant string.  */
+#define CONST_STRNEQ(STR1,STR2) (strncmp ((STR1), (STR2), sizeof (STR2) - 1) == 0)
+  /* strcpy() can have a similar problem, but since we know we are
+     copying a constant string, we can use memcpy which will be faster
+     since there is no need to check for a NUL byte inside STR.  We
+     can also save time if we do not need to copy the terminating NUL.  */
+#define LITMEMCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2) - 1)
+#define LITSTRCPY(DEST,STR2) memcpy ((DEST), (STR2), sizeof (STR2))
+
+
+#define BFD_SUPPORTS_PLUGINS 0
+
+/* The word size used by BFD on the host.  This may be 64 with a 32
+   bit target if the host is 64 bit, or if other 64 bit targets have
+   been selected with --enable-targets, or if --enable-64-bit-bfd.  */
+#define BFD_ARCH_SIZE 32
+
+/* The word size of the default bfd target.  */
+#define BFD_DEFAULT_TARGET_SIZE 32
+
+#define BFD_HOST_64BIT_LONG 0
+#define BFD_HOST_64BIT_LONG_LONG 1
+#if 1
+#define BFD_HOST_64_BIT long long
+#define BFD_HOST_U_64_BIT unsigned long long
+typedef BFD_HOST_64_BIT bfd_int64_t;
+typedef BFD_HOST_U_64_BIT bfd_uint64_t;
+#endif
+
+#if BFD_ARCH_SIZE >= 64
+#define BFD64
+#endif
+
+#ifndef INLINE
+#if __GNUC__ >= 2
+#define INLINE __inline__
+#else
+#define INLINE
+#endif
+#endif
+
+/* Declaring a type wide enough to hold a host long and a host pointer.  */
+#define BFD_HOSTPTR_T	unsigned long
+typedef BFD_HOSTPTR_T bfd_hostptr_t;
+
+/* Forward declaration.  */
+typedef struct bfd bfd;
+
+/* Boolean type used in bfd.  Too many systems define their own
+   versions of "boolean" for us to safely typedef a "boolean" of
+   our own.  Using an enum for "bfd_boolean" has its own set of
+   problems, with strange looking casts required to avoid warnings
+   on some older compilers.  Thus we just use an int.
+
+   General rule: Functions which are bfd_boolean return TRUE on
+   success and FALSE on failure (unless they're a predicate).  */
+
+typedef int bfd_boolean;
+#undef FALSE
+#undef TRUE
+#define FALSE 0
+#define TRUE 1
+
+#ifdef BFD64
+
+#ifndef BFD_HOST_64_BIT
+ #error No 64 bit integer type available
+#endif /* ! defined (BFD_HOST_64_BIT) */
+
+typedef BFD_HOST_U_64_BIT bfd_vma;
+typedef BFD_HOST_64_BIT bfd_signed_vma;
+typedef BFD_HOST_U_64_BIT bfd_size_type;
+typedef BFD_HOST_U_64_BIT symvalue;
+
+#if BFD_HOST_64BIT_LONG
+#define BFD_VMA_FMT "l"
+#elif defined (__MSVCRT__)
+#define BFD_VMA_FMT "I64"
+#else
+#define BFD_VMA_FMT "ll"
+#endif
+
+#ifndef fprintf_vma
+#define sprintf_vma(s,x) sprintf (s, "%016" BFD_VMA_FMT "x", x)
+#define fprintf_vma(f,x) fprintf (f, "%016" BFD_VMA_FMT "x", x)
+#endif
+
+#else /* not BFD64  */
+
+/* Represent a target address.  Also used as a generic unsigned type
+   which is guaranteed to be big enough to hold any arithmetic types
+   we need to deal with.  */
+typedef unsigned long bfd_vma;
+
+/* A generic signed type which is guaranteed to be big enough to hold any
+   arithmetic types we need to deal with.  Can be assumed to be compatible
+   with bfd_vma in the same way that signed and unsigned ints are compatible
+   (as parameters, in assignment, etc).  */
+typedef long bfd_signed_vma;
+
+typedef unsigned long symvalue;
+typedef unsigned long bfd_size_type;
+
+/* Print a bfd_vma x on stream s.  */
+#define BFD_VMA_FMT "l"
+#define fprintf_vma(s,x) fprintf (s, "%08" BFD_VMA_FMT "x", x)
+#define sprintf_vma(s,x) sprintf (s, "%08" BFD_VMA_FMT "x", x)
+
+#endif /* not BFD64  */
+
+#define HALF_BFD_SIZE_TYPE \
+  (((bfd_size_type) 1) << (8 * sizeof (bfd_size_type) / 2))
+
+#ifndef BFD_HOST_64_BIT
+/* Fall back on a 32 bit type.  The idea is to make these types always
+   available for function return types, but in the case that
+   BFD_HOST_64_BIT is undefined such a function should abort or
+   otherwise signal an error.  */
+typedef bfd_signed_vma bfd_int64_t;
+typedef bfd_vma bfd_uint64_t;
+#endif
+
+/* An offset into a file.  BFD always uses the largest possible offset
+   based on the build time availability of fseek, fseeko, or fseeko64.  */
+typedef BFD_HOST_64_BIT file_ptr;
+typedef unsigned BFD_HOST_64_BIT ufile_ptr;
+
+extern void bfd_sprintf_vma (bfd *, char *, bfd_vma);
+extern void bfd_fprintf_vma (bfd *, void *, bfd_vma);
+
+#define printf_vma(x) fprintf_vma(stdout,x)
+#define bfd_printf_vma(abfd,x) bfd_fprintf_vma (abfd,stdout,x)
+
+typedef unsigned int flagword;	/* 32 bits of flags */
+typedef unsigned char bfd_byte;
+
+/* File formats.  */
+
+typedef enum bfd_format
+{
+  bfd_unknown = 0,	/* File format is unknown.  */
+  bfd_object,		/* Linker/assembler/compiler output.  */
+  bfd_archive,		/* Object archive file.  */
+  bfd_core,		/* Core dump.  */
+  bfd_type_end		/* Marks the end; don't use it!  */
+}
+bfd_format;
+
+/* Symbols and relocation.  */
+
+/* A count of carsyms (canonical archive symbols).  */
+typedef unsigned long symindex;
+
+/* How to perform a relocation.  */
+typedef const struct reloc_howto_struct reloc_howto_type;
+
+#define BFD_NO_MORE_SYMBOLS ((symindex) ~0)
+
+/* General purpose part of a symbol X;
+   target specific parts are in libcoff.h, libaout.h, etc.  */
+
+#define bfd_get_section(x) ((x)->section)
+#define bfd_get_output_section(x) ((x)->section->output_section)
+#define bfd_set_section(x,y) ((x)->section) = (y)
+#define bfd_asymbol_base(x) ((x)->section->vma)
+#define bfd_asymbol_value(x) (bfd_asymbol_base(x) + (x)->value)
+#define bfd_asymbol_name(x) ((x)->name)
+/*Perhaps future: #define bfd_asymbol_bfd(x) ((x)->section->owner)*/
+#define bfd_asymbol_bfd(x) ((x)->the_bfd)
+#define bfd_asymbol_flavour(x)			\
+  (((x)->flags & BSF_SYNTHETIC) != 0		\
+   ? bfd_target_unknown_flavour			\
+   : bfd_asymbol_bfd (x)->xvec->flavour)
+
+/* A canonical archive symbol.  */
+/* This is a type pun with struct ranlib on purpose!  */
+typedef struct carsym
+{
+  char *name;
+  file_ptr file_offset;	/* Look here to find the file.  */
+}
+carsym;			/* To make these you call a carsymogen.  */
+
+/* Used in generating armaps (archive tables of contents).
+   Perhaps just a forward definition would do?  */
+struct orl 			/* Output ranlib.  */
+{
+  char **name;		/* Symbol name.  */
+  union
+  {
+    file_ptr pos;
+    bfd *abfd;
+  } u;			/* bfd* or file position.  */
+  int namidx;		/* Index into string table.  */
+};
+
+/* Linenumber stuff.  */
+typedef struct lineno_cache_entry
+{
+  unsigned int line_number;	/* Linenumber from start of function.  */
+  union
+  {
+    struct bfd_symbol *sym;	/* Function name.  */
+    bfd_vma offset;	    		/* Offset into section.  */
+  } u;
+}
+alent;
+
+/* Object and core file sections.  */
+
+#define	align_power(addr, align)	\
+  (((addr) + ((bfd_vma) 1 << (align)) - 1) & ((bfd_vma) -1 << (align)))
+
+typedef struct bfd_section *sec_ptr;
+
+#define bfd_get_section_name(bfd, ptr) ((ptr)->name + 0)
+#define bfd_get_section_vma(bfd, ptr) ((ptr)->vma + 0)
+#define bfd_get_section_lma(bfd, ptr) ((ptr)->lma + 0)
+#define bfd_get_section_alignment(bfd, ptr) ((ptr)->alignment_power + 0)
+#define bfd_section_name(bfd, ptr) ((ptr)->name)
+#define bfd_section_size(bfd, ptr) ((ptr)->size)
+#define bfd_get_section_size(ptr) ((ptr)->size)
+#define bfd_section_vma(bfd, ptr) ((ptr)->vma)
+#define bfd_section_lma(bfd, ptr) ((ptr)->lma)
+#define bfd_section_alignment(bfd, ptr) ((ptr)->alignment_power)
+#define bfd_get_section_flags(bfd, ptr) ((ptr)->flags + 0)
+#define bfd_get_section_userdata(bfd, ptr) ((ptr)->userdata)
+
+#define bfd_is_com_section(ptr) (((ptr)->flags & SEC_IS_COMMON) != 0)
+
+#define bfd_set_section_vma(bfd, ptr, val) (((ptr)->vma = (ptr)->lma = (val)), ((ptr)->user_set_vma = TRUE), TRUE)
+#define bfd_set_section_alignment(bfd, ptr, val) (((ptr)->alignment_power = (val)),TRUE)
+#define bfd_set_section_userdata(bfd, ptr, val) (((ptr)->userdata = (val)),TRUE)
+/* Find the address one past the end of SEC.  */
+#define bfd_get_section_limit(bfd, sec) \
+  (((sec)->rawsize ? (sec)->rawsize : (sec)->size) \
+   / bfd_octets_per_byte (bfd))
+
+/* Return TRUE if input section SEC has been discarded.  */
+#define elf_discarded_section(sec)				\
+  (!bfd_is_abs_section (sec)					\
+   && bfd_is_abs_section ((sec)->output_section)		\
+   && (sec)->sec_info_type != ELF_INFO_TYPE_MERGE		\
+   && (sec)->sec_info_type != ELF_INFO_TYPE_JUST_SYMS)
+
+/* Forward define.  */
+struct stat;
+
+typedef enum bfd_print_symbol
+{
+  bfd_print_symbol_name,
+  bfd_print_symbol_more,
+  bfd_print_symbol_all
+} bfd_print_symbol_type;
+
+/* Information about a symbol that nm needs.  */
+
+typedef struct _symbol_info
+{
+  symvalue value;
+  char type;
+  const char *name;            /* Symbol name.  */
+  unsigned char stab_type;     /* Stab type.  */
+  char stab_other;             /* Stab other.  */
+  short stab_desc;             /* Stab desc.  */
+  const char *stab_name;       /* String for stab type.  */
+} symbol_info;
+
+/* Get the name of a stabs type code.  */
+
+extern const char *bfd_get_stab_name (int);
+
+/* Hash table routines.  There is no way to free up a hash table.  */
+
+/* An element in the hash table.  Most uses will actually use a larger
+   structure, and an instance of this will be the first field.  */
+
+struct bfd_hash_entry
+{
+  /* Next entry for this hash code.  */
+  struct bfd_hash_entry *next;
+  /* String being hashed.  */
+  const char *string;
+  /* Hash code.  This is the full hash code, not the index into the
+     table.  */
+  unsigned long hash;
+};
+
+/* A hash table.  */
+
+struct bfd_hash_table
+{
+  /* The hash array.  */
+  struct bfd_hash_entry **table;
+  /* A function used to create new elements in the hash table.  The
+     first entry is itself a pointer to an element.  When this
+     function is first invoked, this pointer will be NULL.  However,
+     having the pointer permits a hierarchy of method functions to be
+     built each of which calls the function in the superclass.  Thus
+     each function should be written to allocate a new block of memory
+     only if the argument is NULL.  */
+  struct bfd_hash_entry *(*newfunc)
+    (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+   /* An objalloc for this hash table.  This is a struct objalloc *,
+     but we use void * to avoid requiring the inclusion of objalloc.h.  */
+  void *memory;
+  /* The number of slots in the hash table.  */
+  unsigned int size;
+  /* The number of entries in the hash table.  */
+  unsigned int count;
+  /* The size of elements.  */
+  unsigned int entsize;
+  /* If non-zero, don't grow the hash table.  */
+  unsigned int frozen:1;
+};
+
+/* Initialize a hash table.  */
+extern bfd_boolean bfd_hash_table_init
+  (struct bfd_hash_table *,
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
+			       struct bfd_hash_table *,
+			       const char *),
+   unsigned int);
+
+/* Initialize a hash table specifying a size.  */
+extern bfd_boolean bfd_hash_table_init_n
+  (struct bfd_hash_table *,
+   struct bfd_hash_entry *(*) (struct bfd_hash_entry *,
+			       struct bfd_hash_table *,
+			       const char *),
+   unsigned int, unsigned int);
+
+/* Free up a hash table.  */
+extern void bfd_hash_table_free
+  (struct bfd_hash_table *);
+
+/* Look up a string in a hash table.  If CREATE is TRUE, a new entry
+   will be created for this string if one does not already exist.  The
+   COPY argument must be TRUE if this routine should copy the string
+   into newly allocated memory when adding an entry.  */
+extern struct bfd_hash_entry *bfd_hash_lookup
+  (struct bfd_hash_table *, const char *, bfd_boolean create,
+   bfd_boolean copy);
+
+/* Insert an entry in a hash table.  */
+extern struct bfd_hash_entry *bfd_hash_insert
+  (struct bfd_hash_table *, const char *, unsigned long);
+
+/* Replace an entry in a hash table.  */
+extern void bfd_hash_replace
+  (struct bfd_hash_table *, struct bfd_hash_entry *old,
+   struct bfd_hash_entry *nw);
+
+/* Base method for creating a hash table entry.  */
+extern struct bfd_hash_entry *bfd_hash_newfunc
+  (struct bfd_hash_entry *, struct bfd_hash_table *, const char *);
+
+/* Grab some space for a hash table entry.  */
+extern void *bfd_hash_allocate
+  (struct bfd_hash_table *, unsigned int);
+
+/* Traverse a hash table in a random order, calling a function on each
+   element.  If the function returns FALSE, the traversal stops.  The
+   INFO argument is passed to the function.  */
+extern void bfd_hash_traverse
+  (struct bfd_hash_table *,
+   bfd_boolean (*) (struct bfd_hash_entry *, void *),
+   void *info);
+
+/* Allows the default size of a hash table to be configured. New hash
+   tables allocated using bfd_hash_table_init will be created with
+   this size.  */
+extern void bfd_hash_set_default_size (bfd_size_type);
+
+/* This structure is used to keep track of stabs in sections
+   information while linking.  */
+
+struct stab_info
+{
+  /* A hash table used to hold stabs strings.  */
+  struct bfd_strtab_hash *strings;
+  /* The header file hash table.  */
+  struct bfd_hash_table includes;
+  /* The first .stabstr section.  */
+  struct bfd_section *stabstr;
+};
+
+#define COFF_SWAP_TABLE (void *) &bfd_coff_std_swap_table
+
+/* User program access to BFD facilities.  */
+
+/* Direct I/O routines, for programs which know more about the object
+   file than BFD does.  Use higher level routines if possible.  */
+
+extern bfd_size_type bfd_bread (void *, bfd_size_type, bfd *);
+extern bfd_size_type bfd_bwrite (const void *, bfd_size_type, bfd *);
+extern int bfd_seek (bfd *, file_ptr, int);
+extern file_ptr bfd_tell (bfd *);
+extern int bfd_flush (bfd *);
+extern int bfd_stat (bfd *, struct stat *);
+
+/* Deprecated old routines.  */
+#if __GNUC__
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
+  (warn_deprecated ("bfd_read", __FILE__, __LINE__, __FUNCTION__),	\
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
+  (warn_deprecated ("bfd_write", __FILE__, __LINE__, __FUNCTION__),	\
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
+#else
+#define bfd_read(BUF, ELTSIZE, NITEMS, ABFD)				\
+  (warn_deprecated ("bfd_read", (const char *) 0, 0, (const char *) 0), \
+   bfd_bread ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
+#define bfd_write(BUF, ELTSIZE, NITEMS, ABFD)				\
+  (warn_deprecated ("bfd_write", (const char *) 0, 0, (const char *) 0),\
+   bfd_bwrite ((BUF), (ELTSIZE) * (NITEMS), (ABFD)))
+#endif
+extern void warn_deprecated (const char *, const char *, int, const char *);
+
+/* Cast from const char * to char * so that caller can assign to
+   a char * without a warning.  */
+#define bfd_get_filename(abfd) ((char *) (abfd)->filename)
+#define bfd_get_cacheable(abfd) ((abfd)->cacheable)
+#define bfd_get_format(abfd) ((abfd)->format)
+#define bfd_get_target(abfd) ((abfd)->xvec->name)
+#define bfd_get_flavour(abfd) ((abfd)->xvec->flavour)
+#define bfd_family_coff(abfd) \
+  (bfd_get_flavour (abfd) == bfd_target_coff_flavour || \
+   bfd_get_flavour (abfd) == bfd_target_xcoff_flavour)
+#define bfd_big_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_BIG)
+#define bfd_little_endian(abfd) ((abfd)->xvec->byteorder == BFD_ENDIAN_LITTLE)
+#define bfd_header_big_endian(abfd) \
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_BIG)
+#define bfd_header_little_endian(abfd) \
+  ((abfd)->xvec->header_byteorder == BFD_ENDIAN_LITTLE)
+#define bfd_get_file_flags(abfd) ((abfd)->flags)
+#define bfd_applicable_file_flags(abfd) ((abfd)->xvec->object_flags)
+#define bfd_applicable_section_flags(abfd) ((abfd)->xvec->section_flags)
+#define bfd_my_archive(abfd) ((abfd)->my_archive)
+#define bfd_has_map(abfd) ((abfd)->has_armap)
+#define bfd_is_thin_archive(abfd) ((abfd)->is_thin_archive)
+
+#define bfd_valid_reloc_types(abfd) ((abfd)->xvec->valid_reloc_types)
+#define bfd_usrdata(abfd) ((abfd)->usrdata)
+
+#define bfd_get_start_address(abfd) ((abfd)->start_address)
+#define bfd_get_symcount(abfd) ((abfd)->symcount)
+#define bfd_get_outsymbols(abfd) ((abfd)->outsymbols)
+#define bfd_count_sections(abfd) ((abfd)->section_count)
+
+#define bfd_get_dynamic_symcount(abfd) ((abfd)->dynsymcount)
+
+#define bfd_get_symbol_leading_char(abfd) ((abfd)->xvec->symbol_leading_char)
+
+#define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE)
+
+extern bfd_boolean bfd_cache_close
+  (bfd *abfd);
+/* NB: This declaration should match the autogenerated one in libbfd.h.  */
+
+extern bfd_boolean bfd_cache_close_all (void);
+
+extern bfd_boolean bfd_record_phdr
+  (bfd *, unsigned long, bfd_boolean, flagword, bfd_boolean, bfd_vma,
+   bfd_boolean, bfd_boolean, unsigned int, struct bfd_section **);
+
+/* Byte swapping routines.  */
+
+bfd_uint64_t bfd_getb64 (const void *);
+bfd_uint64_t bfd_getl64 (const void *);
+bfd_int64_t bfd_getb_signed_64 (const void *);
+bfd_int64_t bfd_getl_signed_64 (const void *);
+bfd_vma bfd_getb32 (const void *);
+bfd_vma bfd_getl32 (const void *);
+bfd_signed_vma bfd_getb_signed_32 (const void *);
+bfd_signed_vma bfd_getl_signed_32 (const void *);
+bfd_vma bfd_getb16 (const void *);
+bfd_vma bfd_getl16 (const void *);
+bfd_signed_vma bfd_getb_signed_16 (const void *);
+bfd_signed_vma bfd_getl_signed_16 (const void *);
+void bfd_putb64 (bfd_uint64_t, void *);
+void bfd_putl64 (bfd_uint64_t, void *);
+void bfd_putb32 (bfd_vma, void *);
+void bfd_putl32 (bfd_vma, void *);
+void bfd_putb16 (bfd_vma, void *);
+void bfd_putl16 (bfd_vma, void *);
+
+/* Byte swapping routines which take size and endiannes as arguments.  */
+
+bfd_uint64_t bfd_get_bits (const void *, int, bfd_boolean);
+void bfd_put_bits (bfd_uint64_t, void *, int, bfd_boolean);
+
+extern bfd_boolean bfd_section_already_linked_table_init (void);
+extern void bfd_section_already_linked_table_free (void);
+
+/* Externally visible ECOFF routines.  */
+
+#if defined(__STDC__) || defined(ALMOST_STDC)
+struct ecoff_debug_info;
+struct ecoff_debug_swap;
+struct ecoff_extr;
+struct bfd_symbol;
+struct bfd_link_info;
+struct bfd_link_hash_entry;
+struct bfd_elf_version_tree;
+#endif
+extern bfd_vma bfd_ecoff_get_gp_value
+  (bfd * abfd);
+extern bfd_boolean bfd_ecoff_set_gp_value
+  (bfd *abfd, bfd_vma gp_value);
+extern bfd_boolean bfd_ecoff_set_regmasks
+  (bfd *abfd, unsigned long gprmask, unsigned long fprmask,
+   unsigned long *cprmask);
+extern void *bfd_ecoff_debug_init
+  (bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
+extern void bfd_ecoff_debug_free
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_accumulate
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
+   struct ecoff_debug_info *input_debug,
+   const struct ecoff_debug_swap *input_swap, struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_accumulate_other
+  (void *handle, bfd *output_bfd, struct ecoff_debug_info *output_debug,
+   const struct ecoff_debug_swap *output_swap, bfd *input_bfd,
+   struct bfd_link_info *);
+extern bfd_boolean bfd_ecoff_debug_externals
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, bfd_boolean relocatable,
+   bfd_boolean (*get_extr) (struct bfd_symbol *, struct ecoff_extr *),
+   void (*set_index) (struct bfd_symbol *, bfd_size_type));
+extern bfd_boolean bfd_ecoff_debug_one_external
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, const char *name,
+   struct ecoff_extr *esym);
+extern bfd_size_type bfd_ecoff_debug_size
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap);
+extern bfd_boolean bfd_ecoff_write_debug
+  (bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap, file_ptr where);
+extern bfd_boolean bfd_ecoff_write_accumulated_debug
+  (void *handle, bfd *abfd, struct ecoff_debug_info *debug,
+   const struct ecoff_debug_swap *swap,
+   struct bfd_link_info *info, file_ptr where);
+
+/* Externally visible ELF routines.  */
+
+struct bfd_link_needed_list
+{
+  struct bfd_link_needed_list *next;
+  bfd *by;
+  const char *name;
+};
+
+enum dynamic_lib_link_class {
+  DYN_NORMAL = 0,
+  DYN_AS_NEEDED = 1,
+  DYN_DT_NEEDED = 2,
+  DYN_NO_ADD_NEEDED = 4,
+  DYN_NO_NEEDED = 8
+};
+
+enum notice_asneeded_action {
+  notice_as_needed,
+  notice_not_needed,
+  notice_needed
+};
+
+extern bfd_boolean bfd_elf_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
+   bfd_boolean);
+extern struct bfd_link_needed_list *bfd_elf_get_needed_list
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_elf_get_bfd_needed_list
+  (bfd *, struct bfd_link_needed_list **);
+extern bfd_boolean bfd_elf_size_dynamic_sections
+  (bfd *, const char *, const char *, const char *, const char *, const char *,
+   const char * const *, struct bfd_link_info *, struct bfd_section **,
+   struct bfd_elf_version_tree *);
+extern bfd_boolean bfd_elf_size_dynsym_hash_dynstr
+  (bfd *, struct bfd_link_info *);
+extern void bfd_elf_set_dt_needed_name
+  (bfd *, const char *);
+extern const char *bfd_elf_get_dt_soname
+  (bfd *);
+extern void bfd_elf_set_dyn_lib_class
+  (bfd *, enum dynamic_lib_link_class);
+extern int bfd_elf_get_dyn_lib_class
+  (bfd *);
+extern struct bfd_link_needed_list *bfd_elf_get_runpath_list
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_elf_discard_info
+  (bfd *, struct bfd_link_info *);
+extern unsigned int _bfd_elf_default_action_discarded
+  (struct bfd_section *);
+
+/* Return an upper bound on the number of bytes required to store a
+   copy of ABFD's program header table entries.  Return -1 if an error
+   occurs; bfd_get_error will return an appropriate code.  */
+extern long bfd_get_elf_phdr_upper_bound
+  (bfd *abfd);
+
+/* Copy ABFD's program header table entries to *PHDRS.  The entries
+   will be stored as an array of Elf_Internal_Phdr structures, as
+   defined in include/elf/internal.h.  To find out how large the
+   buffer needs to be, call bfd_get_elf_phdr_upper_bound.
+
+   Return the number of program header table entries read, or -1 if an
+   error occurs; bfd_get_error will return an appropriate code.  */
+extern int bfd_get_elf_phdrs
+  (bfd *abfd, void *phdrs);
+
+/* Create a new BFD as if by bfd_openr.  Rather than opening a file,
+   reconstruct an ELF file by reading the segments out of remote memory
+   based on the ELF file header at EHDR_VMA and the ELF program headers it
+   points to.  If not null, *LOADBASEP is filled in with the difference
+   between the VMAs from which the segments were read, and the VMAs the
+   file headers (and hence BFD's idea of each section's VMA) put them at.
+
+   The function TARGET_READ_MEMORY is called to copy LEN bytes from the
+   remote memory at target address VMA into the local buffer at MYADDR; it
+   should return zero on success or an `errno' code on failure.  TEMPL must
+   be a BFD for an ELF target with the word size and byte order found in
+   the remote memory.  */
+extern bfd *bfd_elf_bfd_from_remote_memory
+  (bfd *templ, bfd_vma ehdr_vma, bfd_vma *loadbasep,
+   int (*target_read_memory) (bfd_vma vma, bfd_byte *myaddr, int len));
+
+/* Return the arch_size field of an elf bfd, or -1 if not elf.  */
+extern int bfd_get_arch_size
+  (bfd *);
+
+/* Return TRUE if address "naturally" sign extends, or -1 if not elf.  */
+extern int bfd_get_sign_extend_vma
+  (bfd *);
+
+extern struct bfd_section *_bfd_elf_tls_setup
+  (bfd *, struct bfd_link_info *);
+
+extern void _bfd_fix_excluded_sec_syms
+  (bfd *, struct bfd_link_info *);
+
+extern unsigned bfd_m68k_mach_to_features (int);
+
+extern int bfd_m68k_features_to_mach (unsigned);
+
+extern bfd_boolean bfd_m68k_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
+
+extern void bfd_elf_m68k_set_target_options (struct bfd_link_info *, int);
+
+extern bfd_boolean bfd_bfin_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
+
+extern bfd_boolean bfd_cr16_elf32_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *,
+   char **);
+
+/* SunOS shared library support routines for the linker.  */
+
+extern struct bfd_link_needed_list *bfd_sunos_get_needed_list
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_sunos_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *);
+extern bfd_boolean bfd_sunos_size_dynamic_sections
+  (bfd *, struct bfd_link_info *, struct bfd_section **,
+   struct bfd_section **, struct bfd_section **);
+
+/* Linux shared library support routines for the linker.  */
+
+extern bfd_boolean bfd_i386linux_size_dynamic_sections
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_m68klinux_size_dynamic_sections
+  (bfd *, struct bfd_link_info *);
+extern bfd_boolean bfd_sparclinux_size_dynamic_sections
+  (bfd *, struct bfd_link_info *);
+
+/* mmap hacks */
+
+struct _bfd_window_internal;
+typedef struct _bfd_window_internal bfd_window_internal;
+
+typedef struct _bfd_window
+{
+  /* What the user asked for.  */
+  void *data;
+  bfd_size_type size;
+  /* The actual window used by BFD.  Small user-requested read-only
+     regions sharing a page may share a single window into the object
+     file.  Read-write versions shouldn't until I've fixed things to
+     keep track of which portions have been claimed by the
+     application; don't want to give the same region back when the
+     application wants two writable copies!  */
+  struct _bfd_window_internal *i;
+}
+bfd_window;
+
+extern void bfd_init_window
+  (bfd_window *);
+extern void bfd_free_window
+  (bfd_window *);
+extern bfd_boolean bfd_get_file_window
+  (bfd *, file_ptr, bfd_size_type, bfd_window *, bfd_boolean);
+
+/* XCOFF support routines for the linker.  */
+
+extern bfd_boolean bfd_xcoff_split_import_path
+  (bfd *, const char *, const char **, const char **);
+extern bfd_boolean bfd_xcoff_set_archive_import_path
+  (struct bfd_link_info *, bfd *, const char *);
+extern bfd_boolean bfd_xcoff_link_record_set
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_size_type);
+extern bfd_boolean bfd_xcoff_import_symbol
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *, bfd_vma,
+   const char *, const char *, const char *, unsigned int);
+extern bfd_boolean bfd_xcoff_export_symbol
+  (bfd *, struct bfd_link_info *, struct bfd_link_hash_entry *);
+extern bfd_boolean bfd_xcoff_link_count_reloc
+  (bfd *, struct bfd_link_info *, const char *);
+extern bfd_boolean bfd_xcoff_record_link_assignment
+  (bfd *, struct bfd_link_info *, const char *);
+extern bfd_boolean bfd_xcoff_size_dynamic_sections
+  (bfd *, struct bfd_link_info *, const char *, const char *,
+   unsigned long, unsigned long, unsigned long, bfd_boolean,
+   int, bfd_boolean, unsigned int, struct bfd_section **, bfd_boolean);
+extern bfd_boolean bfd_xcoff_link_generate_rtinit
+  (bfd *, const char *, const char *, bfd_boolean);
+
+/* XCOFF support routines for ar.  */
+extern bfd_boolean bfd_xcoff_ar_archive_set_magic
+  (bfd *, char *);
+
+/* Externally visible COFF routines.  */
+
+#if defined(__STDC__) || defined(ALMOST_STDC)
+struct internal_syment;
+union internal_auxent;
+#endif
+
+extern bfd_boolean bfd_coff_get_syment
+  (bfd *, struct bfd_symbol *, struct internal_syment *);
+
+extern bfd_boolean bfd_coff_get_auxent
+  (bfd *, struct bfd_symbol *, int, union internal_auxent *);
+
+extern bfd_boolean bfd_coff_set_symbol_class
+  (bfd *, struct bfd_symbol *, unsigned int);
+
+extern bfd_boolean bfd_m68k_coff_create_embedded_relocs
+  (bfd *, struct bfd_link_info *, struct bfd_section *, struct bfd_section *, char **);
+
+/* ARM VFP11 erratum workaround support.  */
+typedef enum
+{
+  BFD_ARM_VFP11_FIX_DEFAULT,
+  BFD_ARM_VFP11_FIX_NONE,
+  BFD_ARM_VFP11_FIX_SCALAR,
+  BFD_ARM_VFP11_FIX_VECTOR
+} bfd_arm_vfp11_fix;
+
+extern void bfd_elf32_arm_init_maps
+  (bfd *);
+
+extern void bfd_elf32_arm_set_vfp11_fix
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_set_cortex_a8_fix
+  (bfd *, struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_vfp11_erratum_scan
+  (bfd *, struct bfd_link_info *);
+
+extern void bfd_elf32_arm_vfp11_fix_veneer_locations
+  (bfd *, struct bfd_link_info *);
+
+/* ARM Interworking support.  Called from linker.  */
+extern bfd_boolean bfd_arm_allocate_interworking_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean bfd_arm_process_before_allocation
+  (bfd *, struct bfd_link_info *, int);
+
+extern bfd_boolean bfd_arm_get_bfd_for_interworking
+  (bfd *, struct bfd_link_info *);
+
+/* PE ARM Interworking support.  Called from linker.  */
+extern bfd_boolean bfd_arm_pe_allocate_interworking_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean bfd_arm_pe_process_before_allocation
+  (bfd *, struct bfd_link_info *, int);
+
+extern bfd_boolean bfd_arm_pe_get_bfd_for_interworking
+  (bfd *, struct bfd_link_info *);
+
+/* ELF ARM Interworking support.  Called from linker.  */
+extern bfd_boolean bfd_elf32_arm_allocate_interworking_sections
+  (struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_process_before_allocation
+  (bfd *, struct bfd_link_info *);
+
+void bfd_elf32_arm_set_target_relocs
+  (bfd *, struct bfd_link_info *, int, char *, int, int, bfd_arm_vfp11_fix,
+   int, int, int, int);
+
+extern bfd_boolean bfd_elf32_arm_get_bfd_for_interworking
+  (bfd *, struct bfd_link_info *);
+
+extern bfd_boolean bfd_elf32_arm_add_glue_sections_to_bfd
+  (bfd *, struct bfd_link_info *);
+
+/* ELF ARM mapping symbol support */
+#define BFD_ARM_SPECIAL_SYM_TYPE_MAP	(1 << 0)
+#define BFD_ARM_SPECIAL_SYM_TYPE_TAG	(1 << 1)
+#define BFD_ARM_SPECIAL_SYM_TYPE_OTHER  (1 << 2)
+#define BFD_ARM_SPECIAL_SYM_TYPE_ANY	(~0)
+extern bfd_boolean bfd_is_arm_special_symbol_name
+  (const char * name, int type);
+
+extern void bfd_elf32_arm_set_byteswap_code (struct bfd_link_info *, int);
+
+/* ARM Note section processing.  */
+extern bfd_boolean bfd_arm_merge_machines
+  (bfd *, bfd *);
+
+extern bfd_boolean bfd_arm_update_notes
+  (bfd *, const char *);
+
+extern unsigned int bfd_arm_get_mach_from_notes
+  (bfd *, const char *);
+
+/* ARM stub generation support.  Called from the linker.  */
+extern int elf32_arm_setup_section_lists
+  (bfd *, struct bfd_link_info *);
+extern void elf32_arm_next_input_section
+  (struct bfd_link_info *, struct bfd_section *);
+extern bfd_boolean elf32_arm_size_stubs
+  (bfd *, bfd *, struct bfd_link_info *, bfd_signed_vma,
+   struct bfd_section * (*) (const char *, struct bfd_section *), void (*) (void));
+extern bfd_boolean elf32_arm_build_stubs
+  (struct bfd_link_info *);
+
+/* ARM unwind section editing support.  */
+extern bfd_boolean elf32_arm_fix_exidx_coverage
+(struct bfd_section **, unsigned int, struct bfd_link_info *, bfd_boolean);
+
+/* PowerPC @tls opcode transform/validate.  */
+extern unsigned int _bfd_elf_ppc_at_tls_transform
+  (unsigned int, unsigned int);
+/* PowerPC @tprel opcode transform/validate.  */
+extern unsigned int _bfd_elf_ppc_at_tprel_transform
+  (unsigned int, unsigned int);
+
+/* TI COFF load page support.  */
+extern void bfd_ticoff_set_section_load_page
+  (struct bfd_section *, int);
+
+extern int bfd_ticoff_get_section_load_page
+  (struct bfd_section *);
+
+/* H8/300 functions.  */
+extern bfd_vma bfd_h8300_pad_address
+  (bfd *, bfd_vma);
+
+/* IA64 Itanium code generation.  Called from linker.  */
+extern void bfd_elf32_ia64_after_parse
+  (int);
+
+extern void bfd_elf64_ia64_after_parse
+  (int);
+
+/* This structure is used for a comdat section, as in PE.  A comdat
+   section is associated with a particular symbol.  When the linker
+   sees a comdat section, it keeps only one of the sections with a
+   given name and associated with a given symbol.  */
+
+struct coff_comdat_info
+{
+  /* The name of the symbol associated with a comdat section.  */
+  const char *name;
+
+  /* The local symbol table index of the symbol associated with a
+     comdat section.  This is only meaningful to the object file format
+     specific code; it is not an index into the list returned by
+     bfd_canonicalize_symtab.  */
+  long symbol;
+};
+
+extern struct coff_comdat_info *bfd_coff_get_comdat_section
+  (bfd *, struct bfd_section *);
+
+/* Extracted from init.c.  */
+void bfd_init (void);
+
+/* Extracted from opncls.c.  */
+bfd *bfd_fopen (const char *filename, const char *target,
+    const char *mode, int fd);
+
+bfd *bfd_openr (const char *filename, const char *target);
+
+bfd *bfd_fdopenr (const char *filename, const char *target, int fd);
+
+bfd *bfd_openstreamr (const char *, const char *, void *);
+
+bfd *bfd_openr_iovec (const char *filename, const char *target,
+    void *(*open_func) (struct bfd *nbfd,
+    void *open_closure),
+    void *open_closure,
+    file_ptr (*pread_func) (struct bfd *nbfd,
+    void *stream,
+    void *buf,
+    file_ptr nbytes,
+    file_ptr offset),
+    int (*close_func) (struct bfd *nbfd,
+    void *stream),
+    int (*stat_func) (struct bfd *abfd,
+    void *stream,
+    struct stat *sb));
+
+bfd *bfd_openw (const char *filename, const char *target);
+
+bfd_boolean bfd_close (bfd *abfd);
+
+bfd_boolean bfd_close_all_done (bfd *);
+
+bfd *bfd_create (const char *filename, bfd *templ);
+
+bfd_boolean bfd_make_writable (bfd *abfd);
+
+bfd_boolean bfd_make_readable (bfd *abfd);
+
+unsigned long bfd_calc_gnu_debuglink_crc32
+   (unsigned long crc, const unsigned char *buf, bfd_size_type len);
+
+char *bfd_follow_gnu_debuglink (bfd *abfd, const char *dir);
+
+struct bfd_section *bfd_create_gnu_debuglink_section
+   (bfd *abfd, const char *filename);
+
+bfd_boolean bfd_fill_in_gnu_debuglink_section
+   (bfd *abfd, struct bfd_section *sect, const char *filename);
+
+/* Extracted from libbfd.c.  */
+
+/* Byte swapping macros for user section data.  */
+
+#define bfd_put_8(abfd, val, ptr) \
+  ((void) (*((unsigned char *) (ptr)) = (val) & 0xff))
+#define bfd_put_signed_8 \
+  bfd_put_8
+#define bfd_get_8(abfd, ptr) \
+  (*(unsigned char *) (ptr) & 0xff)
+#define bfd_get_signed_8(abfd, ptr) \
+  (((*(unsigned char *) (ptr) & 0xff) ^ 0x80) - 0x80)
+
+#define bfd_put_16(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_putx16, ((val),(ptr)))
+#define bfd_put_signed_16 \
+  bfd_put_16
+#define bfd_get_16(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx16, (ptr))
+#define bfd_get_signed_16(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx_signed_16, (ptr))
+
+#define bfd_put_32(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_putx32, ((val),(ptr)))
+#define bfd_put_signed_32 \
+  bfd_put_32
+#define bfd_get_32(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx32, (ptr))
+#define bfd_get_signed_32(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx_signed_32, (ptr))
+
+#define bfd_put_64(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_putx64, ((val), (ptr)))
+#define bfd_put_signed_64 \
+  bfd_put_64
+#define bfd_get_64(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx64, (ptr))
+#define bfd_get_signed_64(abfd, ptr) \
+  BFD_SEND (abfd, bfd_getx_signed_64, (ptr))
+
+#define bfd_get(bits, abfd, ptr)                       \
+  ((bits) == 8 ? (bfd_vma) bfd_get_8 (abfd, ptr)       \
+   : (bits) == 16 ? bfd_get_16 (abfd, ptr)             \
+   : (bits) == 32 ? bfd_get_32 (abfd, ptr)             \
+   : (bits) == 64 ? bfd_get_64 (abfd, ptr)             \
+   : (abort (), (bfd_vma) - 1))
+
+#define bfd_put(bits, abfd, val, ptr)                  \
+  ((bits) == 8 ? bfd_put_8  (abfd, val, ptr)           \
+   : (bits) == 16 ? bfd_put_16 (abfd, val, ptr)                \
+   : (bits) == 32 ? bfd_put_32 (abfd, val, ptr)                \
+   : (bits) == 64 ? bfd_put_64 (abfd, val, ptr)                \
+   : (abort (), (void) 0))
+
+
+/* Byte swapping macros for file header data.  */
+
+#define bfd_h_put_8(abfd, val, ptr) \
+  bfd_put_8 (abfd, val, ptr)
+#define bfd_h_put_signed_8(abfd, val, ptr) \
+  bfd_put_8 (abfd, val, ptr)
+#define bfd_h_get_8(abfd, ptr) \
+  bfd_get_8 (abfd, ptr)
+#define bfd_h_get_signed_8(abfd, ptr) \
+  bfd_get_signed_8 (abfd, ptr)
+
+#define bfd_h_put_16(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_h_putx16, (val, ptr))
+#define bfd_h_put_signed_16 \
+  bfd_h_put_16
+#define bfd_h_get_16(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx16, (ptr))
+#define bfd_h_get_signed_16(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx_signed_16, (ptr))
+
+#define bfd_h_put_32(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_h_putx32, (val, ptr))
+#define bfd_h_put_signed_32 \
+  bfd_h_put_32
+#define bfd_h_get_32(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx32, (ptr))
+#define bfd_h_get_signed_32(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx_signed_32, (ptr))
+
+#define bfd_h_put_64(abfd, val, ptr) \
+  BFD_SEND (abfd, bfd_h_putx64, (val, ptr))
+#define bfd_h_put_signed_64 \
+  bfd_h_put_64
+#define bfd_h_get_64(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx64, (ptr))
+#define bfd_h_get_signed_64(abfd, ptr) \
+  BFD_SEND (abfd, bfd_h_getx_signed_64, (ptr))
+
+/* Aliases for the above, which should eventually go away.  */
+
+#define H_PUT_64  bfd_h_put_64
+#define H_PUT_32  bfd_h_put_32
+#define H_PUT_16  bfd_h_put_16
+#define H_PUT_8   bfd_h_put_8
+#define H_PUT_S64 bfd_h_put_signed_64
+#define H_PUT_S32 bfd_h_put_signed_32
+#define H_PUT_S16 bfd_h_put_signed_16
+#define H_PUT_S8  bfd_h_put_signed_8
+#define H_GET_64  bfd_h_get_64
+#define H_GET_32  bfd_h_get_32
+#define H_GET_16  bfd_h_get_16
+#define H_GET_8   bfd_h_get_8
+#define H_GET_S64 bfd_h_get_signed_64
+#define H_GET_S32 bfd_h_get_signed_32
+#define H_GET_S16 bfd_h_get_signed_16
+#define H_GET_S8  bfd_h_get_signed_8
+
+
+/* Extracted from bfdio.c.  */
+long bfd_get_mtime (bfd *abfd);
+
+file_ptr bfd_get_size (bfd *abfd);
+
+void *bfd_mmap (bfd *abfd, void *addr, bfd_size_type len,
+    int prot, int flags, file_ptr offset);
+
+/* Extracted from bfdwin.c.  */
+/* Extracted from section.c.  */
+typedef struct bfd_section
+{
+  /* The name of the section; the name isn't a copy, the pointer is
+     the same as that passed to bfd_make_section.  */
+  const char *name;
+
+  /* A unique sequence number.  */
+  int id;
+
+  /* Which section in the bfd; 0..n-1 as sections are created in a bfd.  */
+  int index;
+
+  /* The next section in the list belonging to the BFD, or NULL.  */
+  struct bfd_section *next;
+
+  /* The previous section in the list belonging to the BFD, or NULL.  */
+  struct bfd_section *prev;
+
+  /* The field flags contains attributes of the section. Some
+     flags are read in from the object file, and some are
+     synthesized from other information.  */
+  flagword flags;
+
+#define SEC_NO_FLAGS   0x000
+
+  /* Tells the OS to allocate space for this section when loading.
+     This is clear for a section containing debug information only.  */
+#define SEC_ALLOC      0x001
+
+  /* Tells the OS to load the section from the file when loading.
+     This is clear for a .bss section.  */
+#define SEC_LOAD       0x002
+
+  /* The section contains data still to be relocated, so there is
+     some relocation information too.  */
+#define SEC_RELOC      0x004
+
+  /* A signal to the OS that the section contains read only data.  */
+#define SEC_READONLY   0x008
+
+  /* The section contains code only.  */
+#define SEC_CODE       0x010
+
+  /* The section contains data only.  */
+#define SEC_DATA       0x020
+
+  /* The section will reside in ROM.  */
+#define SEC_ROM        0x040
+
+  /* The section contains constructor information. This section
+     type is used by the linker to create lists of constructors and
+     destructors used by <<g++>>. When a back end sees a symbol
+     which should be used in a constructor list, it creates a new
+     section for the type of name (e.g., <<__CTOR_LIST__>>), attaches
+     the symbol to it, and builds a relocation. To build the lists
+     of constructors, all the linker has to do is catenate all the
+     sections called <<__CTOR_LIST__>> and relocate the data
+     contained within - exactly the operations it would peform on
+     standard data.  */
+#define SEC_CONSTRUCTOR 0x080
+
+  /* The section has contents - a data section could be
+     <<SEC_ALLOC>> | <<SEC_HAS_CONTENTS>>; a debug section could be
+     <<SEC_HAS_CONTENTS>>  */
+#define SEC_HAS_CONTENTS 0x100
+
+  /* An instruction to the linker to not output the section
+     even if it has information which would normally be written.  */
+#define SEC_NEVER_LOAD 0x200
+
+  /* The section contains thread local data.  */
+#define SEC_THREAD_LOCAL 0x400
+
+  /* The section has GOT references.  This flag is only for the
+     linker, and is currently only used by the elf32-hppa back end.
+     It will be set if global offset table references were detected
+     in this section, which indicate to the linker that the section
+     contains PIC code, and must be handled specially when doing a
+     static link.  */
+#define SEC_HAS_GOT_REF 0x800
+
+  /* The section contains common symbols (symbols may be defined
+     multiple times, the value of a symbol is the amount of
+     space it requires, and the largest symbol value is the one
+     used).  Most targets have exactly one of these (which we
+     translate to bfd_com_section_ptr), but ECOFF has two.  */
+#define SEC_IS_COMMON 0x1000
+
+  /* The section contains only debugging information.  For
+     example, this is set for ELF .debug and .stab sections.
+     strip tests this flag to see if a section can be
+     discarded.  */
+#define SEC_DEBUGGING 0x2000
+
+  /* The contents of this section are held in memory pointed to
+     by the contents field.  This is checked by bfd_get_section_contents,
+     and the data is retrieved from memory if appropriate.  */
+#define SEC_IN_MEMORY 0x4000
+
+  /* The contents of this section are to be excluded by the
+     linker for executable and shared objects unless those
+     objects are to be further relocated.  */
+#define SEC_EXCLUDE 0x8000
+
+  /* The contents of this section are to be sorted based on the sum of
+     the symbol and addend values specified by the associated relocation
+     entries.  Entries without associated relocation entries will be
+     appended to the end of the section in an unspecified order.  */
+#define SEC_SORT_ENTRIES 0x10000
+
+  /* When linking, duplicate sections of the same name should be
+     discarded, rather than being combined into a single section as
+     is usually done.  This is similar to how common symbols are
+     handled.  See SEC_LINK_DUPLICATES below.  */
+#define SEC_LINK_ONCE 0x20000
+
+  /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
+     should handle duplicate sections.  */
+#define SEC_LINK_DUPLICATES 0xc0000
+
+  /* This value for SEC_LINK_DUPLICATES means that duplicate
+     sections with the same name should simply be discarded.  */
+#define SEC_LINK_DUPLICATES_DISCARD 0x0
+
+  /* This value for SEC_LINK_DUPLICATES means that the linker
+     should warn if there are any duplicate sections, although
+     it should still only link one copy.  */
+#define SEC_LINK_DUPLICATES_ONE_ONLY 0x40000
+
+  /* This value for SEC_LINK_DUPLICATES means that the linker
+     should warn if any duplicate sections are a different size.  */
+#define SEC_LINK_DUPLICATES_SAME_SIZE 0x80000
+
+  /* This value for SEC_LINK_DUPLICATES means that the linker
+     should warn if any duplicate sections contain different
+     contents.  */
+#define SEC_LINK_DUPLICATES_SAME_CONTENTS \
+  (SEC_LINK_DUPLICATES_ONE_ONLY | SEC_LINK_DUPLICATES_SAME_SIZE)
+
+  /* This section was created by the linker as part of dynamic
+     relocation or other arcane processing.  It is skipped when
+     going through the first-pass output, trusting that someone
+     else up the line will take care of it later.  */
+#define SEC_LINKER_CREATED 0x100000
+
+  /* This section should not be subject to garbage collection.
+     Also set to inform the linker that this section should not be
+     listed in the link map as discarded.  */
+#define SEC_KEEP 0x200000
+
+  /* This section contains "short" data, and should be placed
+     "near" the GP.  */
+#define SEC_SMALL_DATA 0x400000
+
+  /* Attempt to merge identical entities in the section.
+     Entity size is given in the entsize field.  */
+#define SEC_MERGE 0x800000
+
+  /* If given with SEC_MERGE, entities to merge are zero terminated
+     strings where entsize specifies character size instead of fixed
+     size entries.  */
+#define SEC_STRINGS 0x1000000
+
+  /* This section contains data about section groups.  */
+#define SEC_GROUP 0x2000000
+
+  /* The section is a COFF shared library section.  This flag is
+     only for the linker.  If this type of section appears in
+     the input file, the linker must copy it to the output file
+     without changing the vma or size.  FIXME: Although this
+     was originally intended to be general, it really is COFF
+     specific (and the flag was renamed to indicate this).  It
+     might be cleaner to have some more general mechanism to
+     allow the back end to control what the linker does with
+     sections.  */
+#define SEC_COFF_SHARED_LIBRARY 0x4000000
+
+  /* This section contains data which may be shared with other
+     executables or shared objects. This is for COFF only.  */
+#define SEC_COFF_SHARED 0x8000000
+
+  /* When a section with this flag is being linked, then if the size of
+     the input section is less than a page, it should not cross a page
+     boundary.  If the size of the input section is one page or more,
+     it should be aligned on a page boundary.  This is for TI
+     TMS320C54X only.  */
+#define SEC_TIC54X_BLOCK 0x10000000
+
+  /* Conditionally link this section; do not link if there are no
+     references found to any symbol in the section.  This is for TI
+     TMS320C54X only.  */
+#define SEC_TIC54X_CLINK 0x20000000
+
+  /* Indicate that section has the no read flag set. This happens
+     when memory read flag isn't set. */
+#define SEC_COFF_NOREAD 0x40000000
+
+  /*  End of section flags.  */
+
+  /* Some internal packed boolean fields.  */
+
+  /* See the vma field.  */
+  unsigned int user_set_vma : 1;
+
+  /* A mark flag used by some of the linker backends.  */
+  unsigned int linker_mark : 1;
+
+  /* Another mark flag used by some of the linker backends.  Set for
+     output sections that have an input section.  */
+  unsigned int linker_has_input : 1;
+
+  /* Mark flag used by some linker backends for garbage collection.  */
+  unsigned int gc_mark : 1;
+
+  /* The following flags are used by the ELF linker. */
+
+  /* Mark sections which have been allocated to segments.  */
+  unsigned int segment_mark : 1;
+
+  /* Type of sec_info information.  */
+  unsigned int sec_info_type:3;
+#define ELF_INFO_TYPE_NONE      0
+#define ELF_INFO_TYPE_STABS     1
+#define ELF_INFO_TYPE_MERGE     2
+#define ELF_INFO_TYPE_EH_FRAME  3
+#define ELF_INFO_TYPE_JUST_SYMS 4
+
+  /* Nonzero if this section uses RELA relocations, rather than REL.  */
+  unsigned int use_rela_p:1;
+
+  /* Bits used by various backends.  The generic code doesn't touch
+     these fields.  */
+
+  unsigned int sec_flg0:1;
+  unsigned int sec_flg1:1;
+  unsigned int sec_flg2:1;
+  unsigned int sec_flg3:1;
+  unsigned int sec_flg4:1;
+  unsigned int sec_flg5:1;
+
+  /* End of internal packed boolean fields.  */
+
+  /*  The virtual memory address of the section - where it will be
+      at run time.  The symbols are relocated against this.  The
+      user_set_vma flag is maintained by bfd; if it's not set, the
+      backend can assign addresses (for example, in <<a.out>>, where
+      the default address for <<.data>> is dependent on the specific
+      target and various flags).  */
+  bfd_vma vma;
+
+  /*  The load address of the section - where it would be in a
+      rom image; really only used for writing section header
+      information.  */
+  bfd_vma lma;
+
+  /* The size of the section in octets, as it will be output.
+     Contains a value even if the section has no contents (e.g., the
+     size of <<.bss>>).  */
+  bfd_size_type size;
+
+  /* For input sections, the original size on disk of the section, in
+     octets.  This field should be set for any section whose size is
+     changed by linker relaxation.  It is required for sections where
+     the linker relaxation scheme doesn't cache altered section and
+     reloc contents (stabs, eh_frame, SEC_MERGE, some coff relaxing
+     targets), and thus the original size needs to be kept to read the
+     section multiple times.  For output sections, rawsize holds the
+     section size calculated on a previous linker relaxation pass.  */
+  bfd_size_type rawsize;
+
+  /* Relaxation table. */
+  struct relax_table *relax;
+
+  /* Count of used relaxation table entries. */
+  int relax_count;
+
+
+  /* If this section is going to be output, then this value is the
+     offset in *bytes* into the output section of the first byte in the
+     input section (byte ==> smallest addressable unit on the
+     target).  In most cases, if this was going to start at the
+     100th octet (8-bit quantity) in the output section, this value
+     would be 100.  However, if the target byte size is 16 bits
+     (bfd_octets_per_byte is "2"), this value would be 50.  */
+  bfd_vma output_offset;
+
+  /* The output section through which to map on output.  */
+  struct bfd_section *output_section;
+
+  /* The alignment requirement of the section, as an exponent of 2 -
+     e.g., 3 aligns to 2^3 (or 8).  */
+  unsigned int alignment_power;
+
+  /* If an input section, a pointer to a vector of relocation
+     records for the data in this section.  */
+  struct reloc_cache_entry *relocation;
+
+  /* If an output section, a pointer to a vector of pointers to
+     relocation records for the data in this section.  */
+  struct reloc_cache_entry **orelocation;
+
+  /* The number of relocation records in one of the above.  */
+  unsigned reloc_count;
+
+  /* Information below is back end specific - and not always used
+     or updated.  */
+
+  /* File position of section data.  */
+  file_ptr filepos;
+
+  /* File position of relocation info.  */
+  file_ptr rel_filepos;
+
+  /* File position of line data.  */
+  file_ptr line_filepos;
+
+  /* Pointer to data for applications.  */
+  void *userdata;
+
+  /* If the SEC_IN_MEMORY flag is set, this points to the actual
+     contents.  */
+  unsigned char *contents;
+
+  /* Attached line number information.  */
+  alent *lineno;
+
+  /* Number of line number records.  */
+  unsigned int lineno_count;
+
+  /* Entity size for merging purposes.  */
+  unsigned int entsize;
+
+  /* Points to the kept section if this section is a link-once section,
+     and is discarded.  */
+  struct bfd_section *kept_section;
+
+  /* When a section is being output, this value changes as more
+     linenumbers are written out.  */
+  file_ptr moving_line_filepos;
+
+  /* What the section number is in the target world.  */
+  int target_index;
+
+  void *used_by_bfd;
+
+  /* If this is a constructor section then here is a list of the
+     relocations created to relocate items within it.  */
+  struct relent_chain *constructor_chain;
+
+  /* The BFD which owns the section.  */
+  bfd *owner;
+
+  /* A symbol which points at this section only.  */
+  struct bfd_symbol *symbol;
+  struct bfd_symbol **symbol_ptr_ptr;
+
+  /* Early in the link process, map_head and map_tail are used to build
+     a list of input sections attached to an output section.  Later,
+     output sections use these fields for a list of bfd_link_order
+     structs.  */
+  union {
+    struct bfd_link_order *link_order;
+    struct bfd_section *s;
+  } map_head, map_tail;
+} asection;
+
+/* Relax table contains information about instructions which can
+   be removed by relaxation -- replacing a long address with a 
+   short address.  */
+struct relax_table {
+  /* Address where bytes may be deleted. */
+  bfd_vma addr;
+  
+  /* Number of bytes to be deleted.  */
+  int size;
+};
+
+/* These sections are global, and are managed by BFD.  The application
+   and target back end are not permitted to change the values in
+   these sections.  New code should use the section_ptr macros rather
+   than referring directly to the const sections.  The const sections
+   may eventually vanish.  */
+#define BFD_ABS_SECTION_NAME "*ABS*"
+#define BFD_UND_SECTION_NAME "*UND*"
+#define BFD_COM_SECTION_NAME "*COM*"
+#define BFD_IND_SECTION_NAME "*IND*"
+
+/* The absolute section.  */
+extern asection bfd_abs_section;
+#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
+#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
+/* Pointer to the undefined section.  */
+extern asection bfd_und_section;
+#define bfd_und_section_ptr ((asection *) &bfd_und_section)
+#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
+/* Pointer to the common section.  */
+extern asection bfd_com_section;
+#define bfd_com_section_ptr ((asection *) &bfd_com_section)
+/* Pointer to the indirect section.  */
+extern asection bfd_ind_section;
+#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
+#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
+
+#define bfd_is_const_section(SEC)              \
+ (   ((SEC) == bfd_abs_section_ptr)            \
+  || ((SEC) == bfd_und_section_ptr)            \
+  || ((SEC) == bfd_com_section_ptr)            \
+  || ((SEC) == bfd_ind_section_ptr))
+
+/* Macros to handle insertion and deletion of a bfd's sections.  These
+   only handle the list pointers, ie. do not adjust section_count,
+   target_index etc.  */
+#define bfd_section_list_remove(ABFD, S) \
+  do                                                   \
+    {                                                  \
+      asection *_s = S;                                \
+      asection *_next = _s->next;                      \
+      asection *_prev = _s->prev;                      \
+      if (_prev)                                       \
+        _prev->next = _next;                           \
+      else                                             \
+        (ABFD)->sections = _next;                      \
+      if (_next)                                       \
+        _next->prev = _prev;                           \
+      else                                             \
+        (ABFD)->section_last = _prev;                  \
+    }                                                  \
+  while (0)
+#define bfd_section_list_append(ABFD, S) \
+  do                                                   \
+    {                                                  \
+      asection *_s = S;                                \
+      bfd *_abfd = ABFD;                               \
+      _s->next = NULL;                                 \
+      if (_abfd->section_last)                         \
+        {                                              \
+          _s->prev = _abfd->section_last;              \
+          _abfd->section_last->next = _s;              \
+        }                                              \
+      else                                             \
+        {                                              \
+          _s->prev = NULL;                             \
+          _abfd->sections = _s;                        \
+        }                                              \
+      _abfd->section_last = _s;                        \
+    }                                                  \
+  while (0)
+#define bfd_section_list_prepend(ABFD, S) \
+  do                                                   \
+    {                                                  \
+      asection *_s = S;                                \
+      bfd *_abfd = ABFD;                               \
+      _s->prev = NULL;                                 \
+      if (_abfd->sections)                             \
+        {                                              \
+          _s->next = _abfd->sections;                  \
+          _abfd->sections->prev = _s;                  \
+        }                                              \
+      else                                             \
+        {                                              \
+          _s->next = NULL;                             \
+          _abfd->section_last = _s;                    \
+        }                                              \
+      _abfd->sections = _s;                            \
+    }                                                  \
+  while (0)
+#define bfd_section_list_insert_after(ABFD, A, S) \
+  do                                                   \
+    {                                                  \
+      asection *_a = A;                                \
+      asection *_s = S;                                \
+      asection *_next = _a->next;                      \
+      _s->next = _next;                                \
+      _s->prev = _a;                                   \
+      _a->next = _s;                                   \
+      if (_next)                                       \
+        _next->prev = _s;                              \
+      else                                             \
+        (ABFD)->section_last = _s;                     \
+    }                                                  \
+  while (0)
+#define bfd_section_list_insert_before(ABFD, B, S) \
+  do                                                   \
+    {                                                  \
+      asection *_b = B;                                \
+      asection *_s = S;                                \
+      asection *_prev = _b->prev;                      \
+      _s->prev = _prev;                                \
+      _s->next = _b;                                   \
+      _b->prev = _s;                                   \
+      if (_prev)                                       \
+        _prev->next = _s;                              \
+      else                                             \
+        (ABFD)->sections = _s;                         \
+    }                                                  \
+  while (0)
+#define bfd_section_removed_from_list(ABFD, S) \
+  ((S)->next == NULL ? (ABFD)->section_last != (S) : (S)->next->prev != (S))
+
+#define BFD_FAKE_SECTION(SEC, FLAGS, SYM, NAME, IDX)                   \
+  /* name, id,  index, next, prev, flags, user_set_vma,            */  \
+  { NAME,  IDX, 0,     NULL, NULL, FLAGS, 0,                           \
+                                                                       \
+  /* linker_mark, linker_has_input, gc_mark, segment_mark,         */  \
+     0,           0,                1,       0,                        \
+                                                                       \
+  /* sec_info_type, use_rela_p,                                    */  \
+     0,             0,                                                 \
+                                                                       \
+  /* sec_flg0, sec_flg1, sec_flg2, sec_flg3, sec_flg4, sec_flg5,   */  \
+     0,        0,        0,        0,        0,        0,              \
+                                                                       \
+  /* vma, lma, size, rawsize, relax, relax_count,                  */  \
+     0,   0,   0,    0,       0,     0,                                \
+                                                                       \
+  /* output_offset, output_section,              alignment_power,  */  \
+     0,             (struct bfd_section *) &SEC, 0,                    \
+                                                                       \
+  /* relocation, orelocation, reloc_count, filepos, rel_filepos,   */  \
+     NULL,       NULL,        0,           0,       0,                 \
+                                                                       \
+  /* line_filepos, userdata, contents, lineno, lineno_count,       */  \
+     0,            NULL,     NULL,     NULL,   0,                      \
+                                                                       \
+  /* entsize, kept_section, moving_line_filepos,                    */ \
+     0,       NULL,          0,                                        \
+                                                                       \
+  /* target_index, used_by_bfd, constructor_chain, owner,          */  \
+     0,            NULL,        NULL,              NULL,               \
+                                                                       \
+  /* symbol,                    symbol_ptr_ptr,                    */  \
+     (struct bfd_symbol *) SYM, &SEC.symbol,                           \
+                                                                       \
+  /* map_head, map_tail                                            */  \
+     { NULL }, { NULL }                                                \
+    }
+
+void bfd_section_list_clear (bfd *);
+
+asection *bfd_get_section_by_name (bfd *abfd, const char *name);
+
+asection *bfd_get_section_by_name_if
+   (bfd *abfd,
+    const char *name,
+    bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+
+char *bfd_get_unique_section_name
+   (bfd *abfd, const char *templat, int *count);
+
+asection *bfd_make_section_old_way (bfd *abfd, const char *name);
+
+asection *bfd_make_section_anyway_with_flags
+   (bfd *abfd, const char *name, flagword flags);
+
+asection *bfd_make_section_anyway (bfd *abfd, const char *name);
+
+asection *bfd_make_section_with_flags
+   (bfd *, const char *name, flagword flags);
+
+asection *bfd_make_section (bfd *, const char *name);
+
+bfd_boolean bfd_set_section_flags
+   (bfd *abfd, asection *sec, flagword flags);
+
+void bfd_map_over_sections
+   (bfd *abfd,
+    void (*func) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+
+asection *bfd_sections_find_if
+   (bfd *abfd,
+    bfd_boolean (*operation) (bfd *abfd, asection *sect, void *obj),
+    void *obj);
+
+bfd_boolean bfd_set_section_size
+   (bfd *abfd, asection *sec, bfd_size_type val);
+
+bfd_boolean bfd_set_section_contents
+   (bfd *abfd, asection *section, const void *data,
+    file_ptr offset, bfd_size_type count);
+
+bfd_boolean bfd_get_section_contents
+   (bfd *abfd, asection *section, void *location, file_ptr offset,
+    bfd_size_type count);
+
+bfd_boolean bfd_malloc_and_get_section
+   (bfd *abfd, asection *section, bfd_byte **buf);
+
+bfd_boolean bfd_copy_private_section_data
+   (bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
+
+#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
+     BFD_SEND (obfd, _bfd_copy_private_section_data, \
+               (ibfd, isection, obfd, osection))
+bfd_boolean bfd_generic_is_group_section (bfd *, const asection *sec);
+
+bfd_boolean bfd_generic_discard_group (bfd *abfd, asection *group);
+
+/* Extracted from archures.c.  */
+enum bfd_architecture
+{
+  bfd_arch_unknown,   /* File arch not known.  */
+  bfd_arch_obscure,   /* Arch known, not one of these.  */
+  bfd_arch_m68k,      /* Motorola 68xxx */
+#define bfd_mach_m68000 1
+#define bfd_mach_m68008 2
+#define bfd_mach_m68010 3
+#define bfd_mach_m68020 4
+#define bfd_mach_m68030 5
+#define bfd_mach_m68040 6
+#define bfd_mach_m68060 7
+#define bfd_mach_cpu32  8
+#define bfd_mach_fido   9
+#define bfd_mach_mcf_isa_a_nodiv 10
+#define bfd_mach_mcf_isa_a 11
+#define bfd_mach_mcf_isa_a_mac 12
+#define bfd_mach_mcf_isa_a_emac 13
+#define bfd_mach_mcf_isa_aplus 14
+#define bfd_mach_mcf_isa_aplus_mac 15
+#define bfd_mach_mcf_isa_aplus_emac 16
+#define bfd_mach_mcf_isa_b_nousp 17
+#define bfd_mach_mcf_isa_b_nousp_mac 18
+#define bfd_mach_mcf_isa_b_nousp_emac 19
+#define bfd_mach_mcf_isa_b 20
+#define bfd_mach_mcf_isa_b_mac 21
+#define bfd_mach_mcf_isa_b_emac 22
+#define bfd_mach_mcf_isa_b_float 23
+#define bfd_mach_mcf_isa_b_float_mac 24
+#define bfd_mach_mcf_isa_b_float_emac 25
+#define bfd_mach_mcf_isa_c 26
+#define bfd_mach_mcf_isa_c_mac 27
+#define bfd_mach_mcf_isa_c_emac 28
+#define bfd_mach_mcf_isa_c_nodiv 29
+#define bfd_mach_mcf_isa_c_nodiv_mac 30
+#define bfd_mach_mcf_isa_c_nodiv_emac 31
+  bfd_arch_vax,       /* DEC Vax */
+  bfd_arch_i960,      /* Intel 960 */
+    /* The order of the following is important.
+       lower number indicates a machine type that
+       only accepts a subset of the instructions
+       available to machines with higher numbers.
+       The exception is the "ca", which is
+       incompatible with all other machines except
+       "core".  */
+
+#define bfd_mach_i960_core      1
+#define bfd_mach_i960_ka_sa     2
+#define bfd_mach_i960_kb_sb     3
+#define bfd_mach_i960_mc        4
+#define bfd_mach_i960_xa        5
+#define bfd_mach_i960_ca        6
+#define bfd_mach_i960_jx        7
+#define bfd_mach_i960_hx        8
+
+  bfd_arch_or32,      /* OpenRISC 32 */
+
+  bfd_arch_sparc,     /* SPARC */
+#define bfd_mach_sparc                 1
+/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
+#define bfd_mach_sparc_sparclet        2
+#define bfd_mach_sparc_sparclite       3
+#define bfd_mach_sparc_v8plus          4
+#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
+#define bfd_mach_sparc_sparclite_le    6
+#define bfd_mach_sparc_v9              7
+#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
+#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
+#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
+/* Nonzero if MACH has the v9 instruction set.  */
+#define bfd_mach_sparc_v9_p(mach) \
+  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
+   && (mach) != bfd_mach_sparc_sparclite_le)
+/* Nonzero if MACH is a 64 bit sparc architecture.  */
+#define bfd_mach_sparc_64bit_p(mach) \
+  ((mach) >= bfd_mach_sparc_v9 && (mach) != bfd_mach_sparc_v8plusb)
+  bfd_arch_spu,       /* PowerPC SPU */
+#define bfd_mach_spu           256 
+  bfd_arch_mips,      /* MIPS Rxxxx */
+#define bfd_mach_mips3000              3000
+#define bfd_mach_mips3900              3900
+#define bfd_mach_mips4000              4000
+#define bfd_mach_mips4010              4010
+#define bfd_mach_mips4100              4100
+#define bfd_mach_mips4111              4111
+#define bfd_mach_mips4120              4120
+#define bfd_mach_mips4300              4300
+#define bfd_mach_mips4400              4400
+#define bfd_mach_mips4600              4600
+#define bfd_mach_mips4650              4650
+#define bfd_mach_mips5000              5000
+#define bfd_mach_mips5400              5400
+#define bfd_mach_mips5500              5500
+#define bfd_mach_mips6000              6000
+#define bfd_mach_mips7000              7000
+#define bfd_mach_mips8000              8000
+#define bfd_mach_mips9000              9000
+#define bfd_mach_mips10000             10000
+#define bfd_mach_mips12000             12000
+#define bfd_mach_mips14000             14000
+#define bfd_mach_mips16000             16000
+#define bfd_mach_mips16                16
+#define bfd_mach_mips5                 5
+#define bfd_mach_mips_loongson_2e      3001
+#define bfd_mach_mips_loongson_2f      3002
+#define bfd_mach_mips_sb1              12310201 /* octal 'SB', 01 */
+#define bfd_mach_mips_octeon           6501
+#define bfd_mach_mips_xlr              887682   /* decimal 'XLR'  */
+#define bfd_mach_mipsisa32             32
+#define bfd_mach_mipsisa32r2           33
+#define bfd_mach_mipsisa64             64
+#define bfd_mach_mipsisa64r2           65
+  bfd_arch_i386,      /* Intel 386 */
+#define bfd_mach_i386_i386 1
+#define bfd_mach_i386_i8086 2
+#define bfd_mach_i386_i386_intel_syntax 3
+#define bfd_mach_x86_64 64
+#define bfd_mach_x86_64_intel_syntax 65
+  bfd_arch_l1om,   /* Intel L1OM */
+#define bfd_mach_l1om 66
+#define bfd_mach_l1om_intel_syntax 67
+  bfd_arch_we32k,     /* AT&T WE32xxx */
+  bfd_arch_tahoe,     /* CCI/Harris Tahoe */
+  bfd_arch_i860,      /* Intel 860 */
+  bfd_arch_i370,      /* IBM 360/370 Mainframes */
+  bfd_arch_romp,      /* IBM ROMP PC/RT */
+  bfd_arch_convex,    /* Convex */
+  bfd_arch_m88k,      /* Motorola 88xxx */
+  bfd_arch_m98k,      /* Motorola 98xxx */
+  bfd_arch_pyramid,   /* Pyramid Technology */
+  bfd_arch_h8300,     /* Renesas H8/300 (formerly Hitachi H8/300) */
+#define bfd_mach_h8300    1
+#define bfd_mach_h8300h   2
+#define bfd_mach_h8300s   3
+#define bfd_mach_h8300hn  4
+#define bfd_mach_h8300sn  5
+#define bfd_mach_h8300sx  6
+#define bfd_mach_h8300sxn 7
+  bfd_arch_pdp11,     /* DEC PDP-11 */
+  bfd_arch_plugin,
+  bfd_arch_powerpc,   /* PowerPC */
+#define bfd_mach_ppc           32
+#define bfd_mach_ppc64         64
+#define bfd_mach_ppc_403       403
+#define bfd_mach_ppc_403gc     4030
+#define bfd_mach_ppc_405       405
+#define bfd_mach_ppc_505       505
+#define bfd_mach_ppc_601       601
+#define bfd_mach_ppc_602       602
+#define bfd_mach_ppc_603       603
+#define bfd_mach_ppc_ec603e    6031
+#define bfd_mach_ppc_604       604
+#define bfd_mach_ppc_620       620
+#define bfd_mach_ppc_630       630
+#define bfd_mach_ppc_750       750
+#define bfd_mach_ppc_860       860
+#define bfd_mach_ppc_a35       35
+#define bfd_mach_ppc_rs64ii    642
+#define bfd_mach_ppc_rs64iii   643
+#define bfd_mach_ppc_7400      7400
+#define bfd_mach_ppc_e500      500
+#define bfd_mach_ppc_e500mc    5001
+#define bfd_mach_ppc_e500mc64  5005
+#define bfd_mach_ppc_titan     83
+  bfd_arch_rs6000,    /* IBM RS/6000 */
+#define bfd_mach_rs6k          6000
+#define bfd_mach_rs6k_rs1      6001
+#define bfd_mach_rs6k_rsc      6003
+#define bfd_mach_rs6k_rs2      6002
+  bfd_arch_hppa,      /* HP PA RISC */
+#define bfd_mach_hppa10        10
+#define bfd_mach_hppa11        11
+#define bfd_mach_hppa20        20
+#define bfd_mach_hppa20w       25
+  bfd_arch_d10v,      /* Mitsubishi D10V */
+#define bfd_mach_d10v          1
+#define bfd_mach_d10v_ts2      2
+#define bfd_mach_d10v_ts3      3
+  bfd_arch_d30v,      /* Mitsubishi D30V */
+  bfd_arch_dlx,       /* DLX */
+  bfd_arch_m68hc11,   /* Motorola 68HC11 */
+  bfd_arch_m68hc12,   /* Motorola 68HC12 */
+#define bfd_mach_m6812_default 0
+#define bfd_mach_m6812         1
+#define bfd_mach_m6812s        2
+  bfd_arch_z8k,       /* Zilog Z8000 */
+#define bfd_mach_z8001         1
+#define bfd_mach_z8002         2
+  bfd_arch_h8500,     /* Renesas H8/500 (formerly Hitachi H8/500) */
+  bfd_arch_sh,        /* Renesas / SuperH SH (formerly Hitachi SH) */
+#define bfd_mach_sh            1
+#define bfd_mach_sh2        0x20
+#define bfd_mach_sh_dsp     0x2d
+#define bfd_mach_sh2a       0x2a
+#define bfd_mach_sh2a_nofpu 0x2b
+#define bfd_mach_sh2a_nofpu_or_sh4_nommu_nofpu 0x2a1
+#define bfd_mach_sh2a_nofpu_or_sh3_nommu 0x2a2
+#define bfd_mach_sh2a_or_sh4  0x2a3
+#define bfd_mach_sh2a_or_sh3e 0x2a4
+#define bfd_mach_sh2e       0x2e
+#define bfd_mach_sh3        0x30
+#define bfd_mach_sh3_nommu  0x31
+#define bfd_mach_sh3_dsp    0x3d
+#define bfd_mach_sh3e       0x3e
+#define bfd_mach_sh4        0x40
+#define bfd_mach_sh4_nofpu  0x41
+#define bfd_mach_sh4_nommu_nofpu  0x42
+#define bfd_mach_sh4a       0x4a
+#define bfd_mach_sh4a_nofpu 0x4b
+#define bfd_mach_sh4al_dsp  0x4d
+#define bfd_mach_sh5        0x50
+  bfd_arch_alpha,     /* Dec Alpha */
+#define bfd_mach_alpha_ev4  0x10
+#define bfd_mach_alpha_ev5  0x20
+#define bfd_mach_alpha_ev6  0x30
+  bfd_arch_arm,       /* Advanced Risc Machines ARM.  */
+#define bfd_mach_arm_unknown   0
+#define bfd_mach_arm_2         1
+#define bfd_mach_arm_2a        2
+#define bfd_mach_arm_3         3
+#define bfd_mach_arm_3M        4
+#define bfd_mach_arm_4         5
+#define bfd_mach_arm_4T        6
+#define bfd_mach_arm_5         7
+#define bfd_mach_arm_5T        8
+#define bfd_mach_arm_5TE       9
+#define bfd_mach_arm_XScale    10
+#define bfd_mach_arm_ep9312    11
+#define bfd_mach_arm_iWMMXt    12
+#define bfd_mach_arm_iWMMXt2   13
+  bfd_arch_ns32k,     /* National Semiconductors ns32000 */
+  bfd_arch_w65,       /* WDC 65816 */
+  bfd_arch_tic30,     /* Texas Instruments TMS320C30 */
+  bfd_arch_tic4x,     /* Texas Instruments TMS320C3X/4X */
+#define bfd_mach_tic3x         30
+#define bfd_mach_tic4x         40
+  bfd_arch_tic54x,    /* Texas Instruments TMS320C54X */
+  bfd_arch_tic6x,     /* Texas Instruments TMS320C6X */
+  bfd_arch_tic80,     /* TI TMS320c80 (MVP) */
+  bfd_arch_v850,      /* NEC V850 */
+#define bfd_mach_v850          1
+#define bfd_mach_v850e         'E'
+#define bfd_mach_v850e1        '1'
+  bfd_arch_arc,       /* ARC Cores */
+#define bfd_mach_arc_5         5
+#define bfd_mach_arc_6         6
+#define bfd_mach_arc_7         7
+#define bfd_mach_arc_8         8
+ bfd_arch_m32c,     /* Renesas M16C/M32C.  */
+#define bfd_mach_m16c        0x75
+#define bfd_mach_m32c        0x78
+  bfd_arch_m32r,      /* Renesas M32R (formerly Mitsubishi M32R/D) */
+#define bfd_mach_m32r          1 /* For backwards compatibility.  */
+#define bfd_mach_m32rx         'x'
+#define bfd_mach_m32r2         '2'
+  bfd_arch_mn10200,   /* Matsushita MN10200 */
+  bfd_arch_mn10300,   /* Matsushita MN10300 */
+#define bfd_mach_mn10300               300
+#define bfd_mach_am33          330
+#define bfd_mach_am33_2        332
+  bfd_arch_fr30,
+#define bfd_mach_fr30          0x46523330
+  bfd_arch_frv,
+#define bfd_mach_frv           1
+#define bfd_mach_frvsimple     2
+#define bfd_mach_fr300         300
+#define bfd_mach_fr400         400
+#define bfd_mach_fr450         450
+#define bfd_mach_frvtomcat     499     /* fr500 prototype */
+#define bfd_mach_fr500         500
+#define bfd_mach_fr550         550
+  bfd_arch_moxie,       /* The moxie processor */
+#define bfd_mach_moxie         1
+  bfd_arch_mcore,
+  bfd_arch_mep,
+#define bfd_mach_mep           1
+#define bfd_mach_mep_h1        0x6831
+#define bfd_mach_mep_c5        0x6335
+  bfd_arch_ia64,      /* HP/Intel ia64 */
+#define bfd_mach_ia64_elf64    64
+#define bfd_mach_ia64_elf32    32
+  bfd_arch_ip2k,      /* Ubicom IP2K microcontrollers. */
+#define bfd_mach_ip2022        1
+#define bfd_mach_ip2022ext     2
+ bfd_arch_iq2000,     /* Vitesse IQ2000.  */
+#define bfd_mach_iq2000        1
+#define bfd_mach_iq10          2
+  bfd_arch_mt,
+#define bfd_mach_ms1           1
+#define bfd_mach_mrisc2        2
+#define bfd_mach_ms2           3
+  bfd_arch_pj,
+  bfd_arch_avr,       /* Atmel AVR microcontrollers.  */
+#define bfd_mach_avr1          1
+#define bfd_mach_avr2          2
+#define bfd_mach_avr25         25
+#define bfd_mach_avr3          3
+#define bfd_mach_avr31         31
+#define bfd_mach_avr35         35
+#define bfd_mach_avr4          4
+#define bfd_mach_avr5          5
+#define bfd_mach_avr51         51
+#define bfd_mach_avr6          6
+  bfd_arch_bfin,        /* ADI Blackfin */
+#define bfd_mach_bfin          1
+  bfd_arch_cr16,       /* National Semiconductor CompactRISC (ie CR16). */
+#define bfd_mach_cr16          1
+  bfd_arch_cr16c,       /* National Semiconductor CompactRISC. */
+#define bfd_mach_cr16c         1
+  bfd_arch_crx,       /*  National Semiconductor CRX.  */
+#define bfd_mach_crx           1
+  bfd_arch_cris,      /* Axis CRIS */
+#define bfd_mach_cris_v0_v10   255
+#define bfd_mach_cris_v32      32
+#define bfd_mach_cris_v10_v32  1032
+  bfd_arch_rx,        /* Renesas RX.  */
+#define bfd_mach_rx            0x75
+  bfd_arch_s390,      /* IBM s390 */
+#define bfd_mach_s390_31       31
+#define bfd_mach_s390_64       64
+  bfd_arch_score,     /* Sunplus score */ 
+#define bfd_mach_score3         3
+#define bfd_mach_score7         7
+  bfd_arch_openrisc,  /* OpenRISC */
+  bfd_arch_mmix,      /* Donald Knuth's educational processor.  */
+  bfd_arch_xstormy16,
+#define bfd_mach_xstormy16     1
+  bfd_arch_msp430,    /* Texas Instruments MSP430 architecture.  */
+#define bfd_mach_msp11          11
+#define bfd_mach_msp110         110
+#define bfd_mach_msp12          12
+#define bfd_mach_msp13          13
+#define bfd_mach_msp14          14
+#define bfd_mach_msp15          15
+#define bfd_mach_msp16          16
+#define bfd_mach_msp21          21
+#define bfd_mach_msp31          31
+#define bfd_mach_msp32          32
+#define bfd_mach_msp33          33
+#define bfd_mach_msp41          41
+#define bfd_mach_msp42          42
+#define bfd_mach_msp43          43
+#define bfd_mach_msp44          44
+  bfd_arch_xc16x,     /* Infineon's XC16X Series.               */
+#define bfd_mach_xc16x         1
+#define bfd_mach_xc16xl        2
+#define bfd_mach_xc16xs         3
+  bfd_arch_xtensa,    /* Tensilica's Xtensa cores.  */
+#define bfd_mach_xtensa        1
+   bfd_arch_maxq,     /* Dallas MAXQ 10/20 */
+#define bfd_mach_maxq10    10
+#define bfd_mach_maxq20    20
+  bfd_arch_z80,
+#define bfd_mach_z80strict      1 /* No undocumented opcodes.  */
+#define bfd_mach_z80            3 /* With ixl, ixh, iyl, and iyh.  */
+#define bfd_mach_z80full        7 /* All undocumented instructions.  */
+#define bfd_mach_r800           11 /* R800: successor with multiplication.  */
+  bfd_arch_lm32,      /* Lattice Mico32 */
+#define bfd_mach_lm32      1
+  bfd_arch_microblaze,/* Xilinx MicroBlaze. */
+  bfd_arch_last
+  };
+
+typedef struct bfd_arch_info
+{
+  int bits_per_word;
+  int bits_per_address;
+  int bits_per_byte;
+  enum bfd_architecture arch;
+  unsigned long mach;
+  const char *arch_name;
+  const char *printable_name;
+  unsigned int section_align_power;
+  /* TRUE if this is the default machine for the architecture.
+     The default arch should be the first entry for an arch so that
+     all the entries for that arch can be accessed via <<next>>.  */
+  bfd_boolean the_default;
+  const struct bfd_arch_info * (*compatible)
+    (const struct bfd_arch_info *a, const struct bfd_arch_info *b);
+
+  bfd_boolean (*scan) (const struct bfd_arch_info *, const char *);
+
+  const struct bfd_arch_info *next;
+}
+bfd_arch_info_type;
+
+const char *bfd_printable_name (bfd *abfd);
+
+const bfd_arch_info_type *bfd_scan_arch (const char *string);
+
+const char **bfd_arch_list (void);
+
+const bfd_arch_info_type *bfd_arch_get_compatible
+   (const bfd *abfd, const bfd *bbfd, bfd_boolean accept_unknowns);
+
+void bfd_set_arch_info (bfd *abfd, const bfd_arch_info_type *arg);
+
+enum bfd_architecture bfd_get_arch (bfd *abfd);
+
+unsigned long bfd_get_mach (bfd *abfd);
+
+unsigned int bfd_arch_bits_per_byte (bfd *abfd);
+
+unsigned int bfd_arch_bits_per_address (bfd *abfd);
+
+const bfd_arch_info_type *bfd_get_arch_info (bfd *abfd);
+
+const bfd_arch_info_type *bfd_lookup_arch
+   (enum bfd_architecture arch, unsigned long machine);
+
+const char *bfd_printable_arch_mach
+   (enum bfd_architecture arch, unsigned long machine);
+
+unsigned int bfd_octets_per_byte (bfd *abfd);
+
+unsigned int bfd_arch_mach_octets_per_byte
+   (enum bfd_architecture arch, unsigned long machine);
+
+/* Extracted from reloc.c.  */
+typedef enum bfd_reloc_status
+{
+  /* No errors detected.  */
+  bfd_reloc_ok,
+
+  /* The relocation was performed, but there was an overflow.  */
+  bfd_reloc_overflow,
+
+  /* The address to relocate was not within the section supplied.  */
+  bfd_reloc_outofrange,
+
+  /* Used by special functions.  */
+  bfd_reloc_continue,
+
+  /* Unsupported relocation size requested.  */
+  bfd_reloc_notsupported,
+
+  /* Unused.  */
+  bfd_reloc_other,
+
+  /* The symbol to relocate against was undefined.  */
+  bfd_reloc_undefined,
+
+  /* The relocation was performed, but may not be ok - presently
+     generated only when linking i960 coff files with i960 b.out
+     symbols.  If this type is returned, the error_message argument
+     to bfd_perform_relocation will be set.  */
+  bfd_reloc_dangerous
+ }
+ bfd_reloc_status_type;
+
+
+typedef struct reloc_cache_entry
+{
+  /* A pointer into the canonical table of pointers.  */
+  struct bfd_symbol **sym_ptr_ptr;
+
+  /* offset in section.  */
+  bfd_size_type address;
+
+  /* addend for relocation value.  */
+  bfd_vma addend;
+
+  /* Pointer to how to perform the required relocation.  */
+  reloc_howto_type *howto;
+
+}
+arelent;
+
+enum complain_overflow
+{
+  /* Do not complain on overflow.  */
+  complain_overflow_dont,
+
+  /* Complain if the value overflows when considered as a signed
+     number one bit larger than the field.  ie. A bitfield of N bits
+     is allowed to represent -2**n to 2**n-1.  */
+  complain_overflow_bitfield,
+
+  /* Complain if the value overflows when considered as a signed
+     number.  */
+  complain_overflow_signed,
+
+  /* Complain if the value overflows when considered as an
+     unsigned number.  */
+  complain_overflow_unsigned
+};
+
+struct reloc_howto_struct
+{
+  /*  The type field has mainly a documentary use - the back end can
+      do what it wants with it, though normally the back end's
+      external idea of what a reloc number is stored
+      in this field.  For example, a PC relative word relocation
+      in a coff environment has the type 023 - because that's
+      what the outside world calls a R_PCRWORD reloc.  */
+  unsigned int type;
+
+  /*  The value the final relocation is shifted right by.  This drops
+      unwanted data from the relocation.  */
+  unsigned int rightshift;
+
+  /*  The size of the item to be relocated.  This is *not* a
+      power-of-two measure.  To get the number of bytes operated
+      on by a type of relocation, use bfd_get_reloc_size.  */
+  int size;
+
+  /*  The number of bits in the item to be relocated.  This is used
+      when doing overflow checking.  */
+  unsigned int bitsize;
+
+  /*  The relocation is relative to the field being relocated.  */
+  bfd_boolean pc_relative;
+
+  /*  The bit position of the reloc value in the destination.
+      The relocated value is left shifted by this amount.  */
+  unsigned int bitpos;
+
+  /* What type of overflow error should be checked for when
+     relocating.  */
+  enum complain_overflow complain_on_overflow;
+
+  /* If this field is non null, then the supplied function is
+     called rather than the normal function.  This allows really
+     strange relocation methods to be accommodated (e.g., i960 callj
+     instructions).  */
+  bfd_reloc_status_type (*special_function)
+    (bfd *, arelent *, struct bfd_symbol *, void *, asection *,
+     bfd *, char **);
+
+  /* The textual name of the relocation type.  */
+  char *name;
+
+  /* Some formats record a relocation addend in the section contents
+     rather than with the relocation.  For ELF formats this is the
+     distinction between USE_REL and USE_RELA (though the code checks
+     for USE_REL == 1/0).  The value of this field is TRUE if the
+     addend is recorded with the section contents; when performing a
+     partial link (ld -r) the section contents (the data) will be
+     modified.  The value of this field is FALSE if addends are
+     recorded with the relocation (in arelent.addend); when performing
+     a partial link the relocation will be modified.
+     All relocations for all ELF USE_RELA targets should set this field
+     to FALSE (values of TRUE should be looked on with suspicion).
+     However, the converse is not true: not all relocations of all ELF
+     USE_REL targets set this field to TRUE.  Why this is so is peculiar
+     to each particular target.  For relocs that aren't used in partial
+     links (e.g. GOT stuff) it doesn't matter what this is set to.  */
+  bfd_boolean partial_inplace;
+
+  /* src_mask selects the part of the instruction (or data) to be used
+     in the relocation sum.  If the target relocations don't have an
+     addend in the reloc, eg. ELF USE_REL, src_mask will normally equal
+     dst_mask to extract the addend from the section contents.  If
+     relocations do have an addend in the reloc, eg. ELF USE_RELA, this
+     field should be zero.  Non-zero values for ELF USE_RELA targets are
+     bogus as in those cases the value in the dst_mask part of the
+     section contents should be treated as garbage.  */
+  bfd_vma src_mask;
+
+  /* dst_mask selects which parts of the instruction (or data) are
+     replaced with a relocated value.  */
+  bfd_vma dst_mask;
+
+  /* When some formats create PC relative instructions, they leave
+     the value of the pc of the place being relocated in the offset
+     slot of the instruction, so that a PC relative relocation can
+     be made just by adding in an ordinary offset (e.g., sun3 a.out).
+     Some formats leave the displacement part of an instruction
+     empty (e.g., m88k bcs); this flag signals the fact.  */
+  bfd_boolean pcrel_offset;
+};
+
+#define HOWTO(C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC) \
+  { (unsigned) C, R, S, B, P, BI, O, SF, NAME, INPLACE, MASKSRC, MASKDST, PC }
+#define NEWHOWTO(FUNCTION, NAME, SIZE, REL, IN) \
+  HOWTO (0, 0, SIZE, 0, REL, 0, complain_overflow_dont, FUNCTION, \
+         NAME, FALSE, 0, 0, IN)
+
+#define EMPTY_HOWTO(C) \
+  HOWTO ((C), 0, 0, 0, FALSE, 0, complain_overflow_dont, NULL, \
+         NULL, FALSE, 0, 0, FALSE)
+
+#define HOWTO_PREPARE(relocation, symbol)               \
+  {                                                     \
+    if (symbol != NULL)                                 \
+      {                                                 \
+        if (bfd_is_com_section (symbol->section))       \
+          {                                             \
+            relocation = 0;                             \
+          }                                             \
+        else                                            \
+          {                                             \
+            relocation = symbol->value;                 \
+          }                                             \
+      }                                                 \
+  }
+
+unsigned int bfd_get_reloc_size (reloc_howto_type *);
+
+typedef struct relent_chain
+{
+  arelent relent;
+  struct relent_chain *next;
+}
+arelent_chain;
+
+bfd_reloc_status_type bfd_check_overflow
+   (enum complain_overflow how,
+    unsigned int bitsize,
+    unsigned int rightshift,
+    unsigned int addrsize,
+    bfd_vma relocation);
+
+bfd_reloc_status_type bfd_perform_relocation
+   (bfd *abfd,
+    arelent *reloc_entry,
+    void *data,
+    asection *input_section,
+    bfd *output_bfd,
+    char **error_message);
+
+bfd_reloc_status_type bfd_install_relocation
+   (bfd *abfd,
+    arelent *reloc_entry,
+    void *data, bfd_vma data_start,
+    asection *input_section,
+    char **error_message);
+
+enum bfd_reloc_code_real {
+  _dummy_first_bfd_reloc_code_real,
+
+
+/* Basic absolute relocations of N bits.  */
+  BFD_RELOC_64,
+  BFD_RELOC_32,
+  BFD_RELOC_26,
+  BFD_RELOC_24,
+  BFD_RELOC_16,
+  BFD_RELOC_14,
+  BFD_RELOC_8,
+
+/* PC-relative relocations.  Sometimes these are relative to the address
+of the relocation itself; sometimes they are relative to the start of
+the section containing the relocation.  It depends on the specific target.
+
+The 24-bit relocation is used in some Intel 960 configurations.  */
+  BFD_RELOC_64_PCREL,
+  BFD_RELOC_32_PCREL,
+  BFD_RELOC_24_PCREL,
+  BFD_RELOC_16_PCREL,
+  BFD_RELOC_12_PCREL,
+  BFD_RELOC_8_PCREL,
+
+/* Section relative relocations.  Some targets need this for DWARF2.  */
+  BFD_RELOC_32_SECREL,
+
+/* For ELF.  */
+  BFD_RELOC_32_GOT_PCREL,
+  BFD_RELOC_16_GOT_PCREL,
+  BFD_RELOC_8_GOT_PCREL,
+  BFD_RELOC_32_GOTOFF,
+  BFD_RELOC_16_GOTOFF,
+  BFD_RELOC_LO16_GOTOFF,
+  BFD_RELOC_HI16_GOTOFF,
+  BFD_RELOC_HI16_S_GOTOFF,
+  BFD_RELOC_8_GOTOFF,
+  BFD_RELOC_64_PLT_PCREL,
+  BFD_RELOC_32_PLT_PCREL,
+  BFD_RELOC_24_PLT_PCREL,
+  BFD_RELOC_16_PLT_PCREL,
+  BFD_RELOC_8_PLT_PCREL,
+  BFD_RELOC_64_PLTOFF,
+  BFD_RELOC_32_PLTOFF,
+  BFD_RELOC_16_PLTOFF,
+  BFD_RELOC_LO16_PLTOFF,
+  BFD_RELOC_HI16_PLTOFF,
+  BFD_RELOC_HI16_S_PLTOFF,
+  BFD_RELOC_8_PLTOFF,
+
+/* Relocations used by 68K ELF.  */
+  BFD_RELOC_68K_GLOB_DAT,
+  BFD_RELOC_68K_JMP_SLOT,
+  BFD_RELOC_68K_RELATIVE,
+  BFD_RELOC_68K_TLS_GD32,
+  BFD_RELOC_68K_TLS_GD16,
+  BFD_RELOC_68K_TLS_GD8,
+  BFD_RELOC_68K_TLS_LDM32,
+  BFD_RELOC_68K_TLS_LDM16,
+  BFD_RELOC_68K_TLS_LDM8,
+  BFD_RELOC_68K_TLS_LDO32,
+  BFD_RELOC_68K_TLS_LDO16,
+  BFD_RELOC_68K_TLS_LDO8,
+  BFD_RELOC_68K_TLS_IE32,
+  BFD_RELOC_68K_TLS_IE16,
+  BFD_RELOC_68K_TLS_IE8,
+  BFD_RELOC_68K_TLS_LE32,
+  BFD_RELOC_68K_TLS_LE16,
+  BFD_RELOC_68K_TLS_LE8,
+
+/* Linkage-table relative.  */
+  BFD_RELOC_32_BASEREL,
+  BFD_RELOC_16_BASEREL,
+  BFD_RELOC_LO16_BASEREL,
+  BFD_RELOC_HI16_BASEREL,
+  BFD_RELOC_HI16_S_BASEREL,
+  BFD_RELOC_8_BASEREL,
+  BFD_RELOC_RVA,
+
+/* Absolute 8-bit relocation, but used to form an address like 0xFFnn.  */
+  BFD_RELOC_8_FFnn,
+
+/* These PC-relative relocations are stored as word displacements --
+i.e., byte displacements shifted right two bits.  The 30-bit word
+displacement (<<32_PCREL_S2>> -- 32 bits, shifted 2) is used on the
+SPARC.  (SPARC tools generally refer to this as <<WDISP30>>.)  The
+signed 16-bit displacement is used on the MIPS, and the 23-bit
+displacement is used on the Alpha.  */
+  BFD_RELOC_32_PCREL_S2,
+  BFD_RELOC_16_PCREL_S2,
+  BFD_RELOC_23_PCREL_S2,
+
+/* High 22 bits and low 10 bits of 32-bit value, placed into lower bits of
+the target word.  These are used on the SPARC.  */
+  BFD_RELOC_HI22,
+  BFD_RELOC_LO10,
+
+/* For systems that allocate a Global Pointer register, these are
+displacements off that register.  These relocation types are
+handled specially, because the value the register will have is
+decided relatively late.  */
+  BFD_RELOC_GPREL16,
+  BFD_RELOC_GPREL32,
+
+/* Reloc types used for i960/b.out.  */
+  BFD_RELOC_I960_CALLJ,
+
+/* SPARC ELF relocations.  There is probably some overlap with other
+relocation types already defined.  */
+  BFD_RELOC_NONE,
+  BFD_RELOC_SPARC_WDISP22,
+  BFD_RELOC_SPARC22,
+  BFD_RELOC_SPARC13,
+  BFD_RELOC_SPARC_GOT10,
+  BFD_RELOC_SPARC_GOT13,
+  BFD_RELOC_SPARC_GOT22,
+  BFD_RELOC_SPARC_PC10,
+  BFD_RELOC_SPARC_PC22,
+  BFD_RELOC_SPARC_WPLT30,
+  BFD_RELOC_SPARC_COPY,
+  BFD_RELOC_SPARC_GLOB_DAT,
+  BFD_RELOC_SPARC_JMP_SLOT,
+  BFD_RELOC_SPARC_RELATIVE,
+  BFD_RELOC_SPARC_UA16,
+  BFD_RELOC_SPARC_UA32,
+  BFD_RELOC_SPARC_UA64,
+  BFD_RELOC_SPARC_GOTDATA_HIX22,
+  BFD_RELOC_SPARC_GOTDATA_LOX10,
+  BFD_RELOC_SPARC_GOTDATA_OP_HIX22,
+  BFD_RELOC_SPARC_GOTDATA_OP_LOX10,
+  BFD_RELOC_SPARC_GOTDATA_OP,
+  BFD_RELOC_SPARC_JMP_IREL,
+  BFD_RELOC_SPARC_IRELATIVE,
+
+/* I think these are specific to SPARC a.out (e.g., Sun 4).  */
+  BFD_RELOC_SPARC_BASE13,
+  BFD_RELOC_SPARC_BASE22,
+
+/* SPARC64 relocations  */
+#define BFD_RELOC_SPARC_64 BFD_RELOC_64
+  BFD_RELOC_SPARC_10,
+  BFD_RELOC_SPARC_11,
+  BFD_RELOC_SPARC_OLO10,
+  BFD_RELOC_SPARC_HH22,
+  BFD_RELOC_SPARC_HM10,
+  BFD_RELOC_SPARC_LM22,
+  BFD_RELOC_SPARC_PC_HH22,
+  BFD_RELOC_SPARC_PC_HM10,
+  BFD_RELOC_SPARC_PC_LM22,
+  BFD_RELOC_SPARC_WDISP16,
+  BFD_RELOC_SPARC_WDISP19,
+  BFD_RELOC_SPARC_7,
+  BFD_RELOC_SPARC_6,
+  BFD_RELOC_SPARC_5,
+#define BFD_RELOC_SPARC_DISP64 BFD_RELOC_64_PCREL
+  BFD_RELOC_SPARC_PLT32,
+  BFD_RELOC_SPARC_PLT64,
+  BFD_RELOC_SPARC_HIX22,
+  BFD_RELOC_SPARC_LOX10,
+  BFD_RELOC_SPARC_H44,
+  BFD_RELOC_SPARC_M44,
+  BFD_RELOC_SPARC_L44,
+  BFD_RELOC_SPARC_REGISTER,
+
+/* SPARC little endian relocation  */
+  BFD_RELOC_SPARC_REV32,
+
+/* SPARC TLS relocations  */
+  BFD_RELOC_SPARC_TLS_GD_HI22,
+  BFD_RELOC_SPARC_TLS_GD_LO10,
+  BFD_RELOC_SPARC_TLS_GD_ADD,
+  BFD_RELOC_SPARC_TLS_GD_CALL,
+  BFD_RELOC_SPARC_TLS_LDM_HI22,
+  BFD_RELOC_SPARC_TLS_LDM_LO10,
+  BFD_RELOC_SPARC_TLS_LDM_ADD,
+  BFD_RELOC_SPARC_TLS_LDM_CALL,
+  BFD_RELOC_SPARC_TLS_LDO_HIX22,
+  BFD_RELOC_SPARC_TLS_LDO_LOX10,
+  BFD_RELOC_SPARC_TLS_LDO_ADD,
+  BFD_RELOC_SPARC_TLS_IE_HI22,
+  BFD_RELOC_SPARC_TLS_IE_LO10,
+  BFD_RELOC_SPARC_TLS_IE_LD,
+  BFD_RELOC_SPARC_TLS_IE_LDX,
+  BFD_RELOC_SPARC_TLS_IE_ADD,
+  BFD_RELOC_SPARC_TLS_LE_HIX22,
+  BFD_RELOC_SPARC_TLS_LE_LOX10,
+  BFD_RELOC_SPARC_TLS_DTPMOD32,
+  BFD_RELOC_SPARC_TLS_DTPMOD64,
+  BFD_RELOC_SPARC_TLS_DTPOFF32,
+  BFD_RELOC_SPARC_TLS_DTPOFF64,
+  BFD_RELOC_SPARC_TLS_TPOFF32,
+  BFD_RELOC_SPARC_TLS_TPOFF64,
+
+/* SPU Relocations.  */
+  BFD_RELOC_SPU_IMM7,
+  BFD_RELOC_SPU_IMM8,
+  BFD_RELOC_SPU_IMM10,
+  BFD_RELOC_SPU_IMM10W,
+  BFD_RELOC_SPU_IMM16,
+  BFD_RELOC_SPU_IMM16W,
+  BFD_RELOC_SPU_IMM18,
+  BFD_RELOC_SPU_PCREL9a,
+  BFD_RELOC_SPU_PCREL9b,
+  BFD_RELOC_SPU_PCREL16,
+  BFD_RELOC_SPU_LO16,
+  BFD_RELOC_SPU_HI16,
+  BFD_RELOC_SPU_PPU32,
+  BFD_RELOC_SPU_PPU64,
+  BFD_RELOC_SPU_ADD_PIC,
+
+/* Alpha ECOFF and ELF relocations.  Some of these treat the symbol or
+"addend" in some special way.
+For GPDISP_HI16 ("gpdisp") relocations, the symbol is ignored when
+writing; when reading, it will be the absolute section symbol.  The
+addend is the displacement in bytes of the "lda" instruction from
+the "ldah" instruction (which is at the address of this reloc).  */
+  BFD_RELOC_ALPHA_GPDISP_HI16,
+
+/* For GPDISP_LO16 ("ignore") relocations, the symbol is handled as
+with GPDISP_HI16 relocs.  The addend is ignored when writing the
+relocations out, and is filled in with the file's GP value on
+reading, for convenience.  */
+  BFD_RELOC_ALPHA_GPDISP_LO16,
+
+/* The ELF GPDISP relocation is exactly the same as the GPDISP_HI16
+relocation except that there is no accompanying GPDISP_LO16
+relocation.  */
+  BFD_RELOC_ALPHA_GPDISP,
+
+/* The Alpha LITERAL/LITUSE relocs are produced by a symbol reference;
+the assembler turns it into a LDQ instruction to load the address of
+the symbol, and then fills in a register in the real instruction.
+
+The LITERAL reloc, at the LDQ instruction, refers to the .lita
+section symbol.  The addend is ignored when writing, but is filled
+in with the file's GP value on reading, for convenience, as with the
+GPDISP_LO16 reloc.
+
+The ELF_LITERAL reloc is somewhere between 16_GOTOFF and GPDISP_LO16.
+It should refer to the symbol to be referenced, as with 16_GOTOFF,
+but it generates output not based on the position within the .got
+section, but relative to the GP value chosen for the file during the
+final link stage.
+
+The LITUSE reloc, on the instruction using the loaded address, gives
+information to the linker that it might be able to use to optimize
+away some literal section references.  The symbol is ignored (read
+as the absolute section symbol), and the "addend" indicates the type
+of instruction using the register:
+1 - "memory" fmt insn
+2 - byte-manipulation (byte offset reg)
+3 - jsr (target of branch)  */
+  BFD_RELOC_ALPHA_LITERAL,
+  BFD_RELOC_ALPHA_ELF_LITERAL,
+  BFD_RELOC_ALPHA_LITUSE,
+
+/* The HINT relocation indicates a value that should be filled into the
+"hint" field of a jmp/jsr/ret instruction, for possible branch-
+prediction logic which may be provided on some processors.  */
+  BFD_RELOC_ALPHA_HINT,
+
+/* The LINKAGE relocation outputs a linkage pair in the object file,
+which is filled by the linker.  */
+  BFD_RELOC_ALPHA_LINKAGE,
+
+/* The CODEADDR relocation outputs a STO_CA in the object file,
+which is filled by the linker.  */
+  BFD_RELOC_ALPHA_CODEADDR,
+
+/* The GPREL_HI/LO relocations together form a 32-bit offset from the
+GP register.  */
+  BFD_RELOC_ALPHA_GPREL_HI16,
+  BFD_RELOC_ALPHA_GPREL_LO16,
+
+/* Like BFD_RELOC_23_PCREL_S2, except that the source and target must
+share a common GP, and the target address is adjusted for
+STO_ALPHA_STD_GPLOAD.  */
+  BFD_RELOC_ALPHA_BRSGP,
+
+/* The NOP relocation outputs a NOP if the longword displacement
+between two procedure entry points is < 2^21.  */
+  BFD_RELOC_ALPHA_NOP,
+
+/* The BSR relocation outputs a BSR if the longword displacement
+between two procedure entry points is < 2^21.  */
+  BFD_RELOC_ALPHA_BSR,
+
+/* The LDA relocation outputs a LDA if the longword displacement
+between two procedure entry points is < 2^16.  */
+  BFD_RELOC_ALPHA_LDA,
+
+/* The BOH relocation outputs a BSR if the longword displacement
+between two procedure entry points is < 2^21, or else a hint.  */
+  BFD_RELOC_ALPHA_BOH,
+
+/* Alpha thread-local storage relocations.  */
+  BFD_RELOC_ALPHA_TLSGD,
+  BFD_RELOC_ALPHA_TLSLDM,
+  BFD_RELOC_ALPHA_DTPMOD64,
+  BFD_RELOC_ALPHA_GOTDTPREL16,
+  BFD_RELOC_ALPHA_DTPREL64,
+  BFD_RELOC_ALPHA_DTPREL_HI16,
+  BFD_RELOC_ALPHA_DTPREL_LO16,
+  BFD_RELOC_ALPHA_DTPREL16,
+  BFD_RELOC_ALPHA_GOTTPREL16,
+  BFD_RELOC_ALPHA_TPREL64,
+  BFD_RELOC_ALPHA_TPREL_HI16,
+  BFD_RELOC_ALPHA_TPREL_LO16,
+  BFD_RELOC_ALPHA_TPREL16,
+
+/* Bits 27..2 of the relocation address shifted right 2 bits;
+simple reloc otherwise.  */
+  BFD_RELOC_MIPS_JMP,
+
+/* The MIPS16 jump instruction.  */
+  BFD_RELOC_MIPS16_JMP,
+
+/* MIPS16 GP relative reloc.  */
+  BFD_RELOC_MIPS16_GPREL,
+
+/* High 16 bits of 32-bit value; simple reloc.  */
+  BFD_RELOC_HI16,
+
+/* High 16 bits of 32-bit value but the low 16 bits will be sign
+extended and added to form the final result.  If the low 16
+bits form a negative number, we need to add one to the high value
+to compensate for the borrow when the low bits are added.  */
+  BFD_RELOC_HI16_S,
+
+/* Low 16 bits.  */
+  BFD_RELOC_LO16,
+
+/* High 16 bits of 32-bit pc-relative value  */
+  BFD_RELOC_HI16_PCREL,
+
+/* High 16 bits of 32-bit pc-relative value, adjusted  */
+  BFD_RELOC_HI16_S_PCREL,
+
+/* Low 16 bits of pc-relative value  */
+  BFD_RELOC_LO16_PCREL,
+
+/* Equivalent of BFD_RELOC_MIPS_*, but with the MIPS16 layout of
+16-bit immediate fields  */
+  BFD_RELOC_MIPS16_GOT16,
+  BFD_RELOC_MIPS16_CALL16,
+
+/* MIPS16 high 16 bits of 32-bit value.  */
+  BFD_RELOC_MIPS16_HI16,
+
+/* MIPS16 high 16 bits of 32-bit value but the low 16 bits will be sign
+extended and added to form the final result.  If the low 16
+bits form a negative number, we need to add one to the high value
+to compensate for the borrow when the low bits are added.  */
+  BFD_RELOC_MIPS16_HI16_S,
+
+/* MIPS16 low 16 bits.  */
+  BFD_RELOC_MIPS16_LO16,
+
+/* Relocation against a MIPS literal section.  */
+  BFD_RELOC_MIPS_LITERAL,
+
+/* MIPS ELF relocations.  */
+  BFD_RELOC_MIPS_GOT16,
+  BFD_RELOC_MIPS_CALL16,
+  BFD_RELOC_MIPS_GOT_HI16,
+  BFD_RELOC_MIPS_GOT_LO16,
+  BFD_RELOC_MIPS_CALL_HI16,
+  BFD_RELOC_MIPS_CALL_LO16,
+  BFD_RELOC_MIPS_SUB,
+  BFD_RELOC_MIPS_GOT_PAGE,
+  BFD_RELOC_MIPS_GOT_OFST,
+  BFD_RELOC_MIPS_GOT_DISP,
+  BFD_RELOC_MIPS_SHIFT5,
+  BFD_RELOC_MIPS_SHIFT6,
+  BFD_RELOC_MIPS_INSERT_A,
+  BFD_RELOC_MIPS_INSERT_B,
+  BFD_RELOC_MIPS_DELETE,
+  BFD_RELOC_MIPS_HIGHEST,
+  BFD_RELOC_MIPS_HIGHER,
+  BFD_RELOC_MIPS_SCN_DISP,
+  BFD_RELOC_MIPS_REL16,
+  BFD_RELOC_MIPS_RELGOT,
+  BFD_RELOC_MIPS_JALR,
+  BFD_RELOC_MIPS_TLS_DTPMOD32,
+  BFD_RELOC_MIPS_TLS_DTPREL32,
+  BFD_RELOC_MIPS_TLS_DTPMOD64,
+  BFD_RELOC_MIPS_TLS_DTPREL64,
+  BFD_RELOC_MIPS_TLS_GD,
+  BFD_RELOC_MIPS_TLS_LDM,
+  BFD_RELOC_MIPS_TLS_DTPREL_HI16,
+  BFD_RELOC_MIPS_TLS_DTPREL_LO16,
+  BFD_RELOC_MIPS_TLS_GOTTPREL,
+  BFD_RELOC_MIPS_TLS_TPREL32,
+  BFD_RELOC_MIPS_TLS_TPREL64,
+  BFD_RELOC_MIPS_TLS_TPREL_HI16,
+  BFD_RELOC_MIPS_TLS_TPREL_LO16,
+
+
+/* MIPS ELF relocations (VxWorks and PLT extensions).  */
+  BFD_RELOC_MIPS_COPY,
+  BFD_RELOC_MIPS_JUMP_SLOT,
+
+
+/* Moxie ELF relocations.  */
+  BFD_RELOC_MOXIE_10_PCREL,
+
+
+/* Fujitsu Frv Relocations.  */
+  BFD_RELOC_FRV_LABEL16,
+  BFD_RELOC_FRV_LABEL24,
+  BFD_RELOC_FRV_LO16,
+  BFD_RELOC_FRV_HI16,
+  BFD_RELOC_FRV_GPREL12,
+  BFD_RELOC_FRV_GPRELU12,
+  BFD_RELOC_FRV_GPREL32,
+  BFD_RELOC_FRV_GPRELHI,
+  BFD_RELOC_FRV_GPRELLO,
+  BFD_RELOC_FRV_GOT12,
+  BFD_RELOC_FRV_GOTHI,
+  BFD_RELOC_FRV_GOTLO,
+  BFD_RELOC_FRV_FUNCDESC,
+  BFD_RELOC_FRV_FUNCDESC_GOT12,
+  BFD_RELOC_FRV_FUNCDESC_GOTHI,
+  BFD_RELOC_FRV_FUNCDESC_GOTLO,
+  BFD_RELOC_FRV_FUNCDESC_VALUE,
+  BFD_RELOC_FRV_FUNCDESC_GOTOFF12,
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFHI,
+  BFD_RELOC_FRV_FUNCDESC_GOTOFFLO,
+  BFD_RELOC_FRV_GOTOFF12,
+  BFD_RELOC_FRV_GOTOFFHI,
+  BFD_RELOC_FRV_GOTOFFLO,
+  BFD_RELOC_FRV_GETTLSOFF,
+  BFD_RELOC_FRV_TLSDESC_VALUE,
+  BFD_RELOC_FRV_GOTTLSDESC12,
+  BFD_RELOC_FRV_GOTTLSDESCHI,
+  BFD_RELOC_FRV_GOTTLSDESCLO,
+  BFD_RELOC_FRV_TLSMOFF12,
+  BFD_RELOC_FRV_TLSMOFFHI,
+  BFD_RELOC_FRV_TLSMOFFLO,
+  BFD_RELOC_FRV_GOTTLSOFF12,
+  BFD_RELOC_FRV_GOTTLSOFFHI,
+  BFD_RELOC_FRV_GOTTLSOFFLO,
+  BFD_RELOC_FRV_TLSOFF,
+  BFD_RELOC_FRV_TLSDESC_RELAX,
+  BFD_RELOC_FRV_GETTLSOFF_RELAX,
+  BFD_RELOC_FRV_TLSOFF_RELAX,
+  BFD_RELOC_FRV_TLSMOFF,
+
+
+/* This is a 24bit GOT-relative reloc for the mn10300.  */
+  BFD_RELOC_MN10300_GOTOFF24,
+
+/* This is a 32bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.  */
+  BFD_RELOC_MN10300_GOT32,
+
+/* This is a 24bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.  */
+  BFD_RELOC_MN10300_GOT24,
+
+/* This is a 16bit GOT-relative reloc for the mn10300, offset by two bytes
+in the instruction.  */
+  BFD_RELOC_MN10300_GOT16,
+
+/* Copy symbol at runtime.  */
+  BFD_RELOC_MN10300_COPY,
+
+/* Create GOT entry.  */
+  BFD_RELOC_MN10300_GLOB_DAT,
+
+/* Create PLT entry.  */
+  BFD_RELOC_MN10300_JMP_SLOT,
+
+/* Adjust by program base.  */
+  BFD_RELOC_MN10300_RELATIVE,
+
+/* Together with another reloc targeted at the same location,
+allows for a value that is the difference of two symbols
+in the same section.  */
+  BFD_RELOC_MN10300_SYM_DIFF,
+
+/* The addend of this reloc is an alignment power that must
+be honoured at the offset's location, regardless of linker
+relaxation.  */
+  BFD_RELOC_MN10300_ALIGN,
+
+
+/* i386/elf relocations  */
+  BFD_RELOC_386_GOT32,
+  BFD_RELOC_386_PLT32,
+  BFD_RELOC_386_COPY,
+  BFD_RELOC_386_GLOB_DAT,
+  BFD_RELOC_386_JUMP_SLOT,
+  BFD_RELOC_386_RELATIVE,
+  BFD_RELOC_386_GOTOFF,
+  BFD_RELOC_386_GOTPC,
+  BFD_RELOC_386_TLS_TPOFF,
+  BFD_RELOC_386_TLS_IE,
+  BFD_RELOC_386_TLS_GOTIE,
+  BFD_RELOC_386_TLS_LE,
+  BFD_RELOC_386_TLS_GD,
+  BFD_RELOC_386_TLS_LDM,
+  BFD_RELOC_386_TLS_LDO_32,
+  BFD_RELOC_386_TLS_IE_32,
+  BFD_RELOC_386_TLS_LE_32,
+  BFD_RELOC_386_TLS_DTPMOD32,
+  BFD_RELOC_386_TLS_DTPOFF32,
+  BFD_RELOC_386_TLS_TPOFF32,
+  BFD_RELOC_386_TLS_GOTDESC,
+  BFD_RELOC_386_TLS_DESC_CALL,
+  BFD_RELOC_386_TLS_DESC,
+  BFD_RELOC_386_IRELATIVE,
+
+/* x86-64/elf relocations  */
+  BFD_RELOC_X86_64_GOT32,
+  BFD_RELOC_X86_64_PLT32,
+  BFD_RELOC_X86_64_COPY,
+  BFD_RELOC_X86_64_GLOB_DAT,
+  BFD_RELOC_X86_64_JUMP_SLOT,
+  BFD_RELOC_X86_64_RELATIVE,
+  BFD_RELOC_X86_64_GOTPCREL,
+  BFD_RELOC_X86_64_32S,
+  BFD_RELOC_X86_64_DTPMOD64,
+  BFD_RELOC_X86_64_DTPOFF64,
+  BFD_RELOC_X86_64_TPOFF64,
+  BFD_RELOC_X86_64_TLSGD,
+  BFD_RELOC_X86_64_TLSLD,
+  BFD_RELOC_X86_64_DTPOFF32,
+  BFD_RELOC_X86_64_GOTTPOFF,
+  BFD_RELOC_X86_64_TPOFF32,
+  BFD_RELOC_X86_64_GOTOFF64,
+  BFD_RELOC_X86_64_GOTPC32,
+  BFD_RELOC_X86_64_GOT64,
+  BFD_RELOC_X86_64_GOTPCREL64,
+  BFD_RELOC_X86_64_GOTPC64,
+  BFD_RELOC_X86_64_GOTPLT64,
+  BFD_RELOC_X86_64_PLTOFF64,
+  BFD_RELOC_X86_64_GOTPC32_TLSDESC,
+  BFD_RELOC_X86_64_TLSDESC_CALL,
+  BFD_RELOC_X86_64_TLSDESC,
+  BFD_RELOC_X86_64_IRELATIVE,
+
+/* ns32k relocations  */
+  BFD_RELOC_NS32K_IMM_8,
+  BFD_RELOC_NS32K_IMM_16,
+  BFD_RELOC_NS32K_IMM_32,
+  BFD_RELOC_NS32K_IMM_8_PCREL,
+  BFD_RELOC_NS32K_IMM_16_PCREL,
+  BFD_RELOC_NS32K_IMM_32_PCREL,
+  BFD_RELOC_NS32K_DISP_8,
+  BFD_RELOC_NS32K_DISP_16,
+  BFD_RELOC_NS32K_DISP_32,
+  BFD_RELOC_NS32K_DISP_8_PCREL,
+  BFD_RELOC_NS32K_DISP_16_PCREL,
+  BFD_RELOC_NS32K_DISP_32_PCREL,
+
+/* PDP11 relocations  */
+  BFD_RELOC_PDP11_DISP_8_PCREL,
+  BFD_RELOC_PDP11_DISP_6_PCREL,
+
+/* Picojava relocs.  Not all of these appear in object files.  */
+  BFD_RELOC_PJ_CODE_HI16,
+  BFD_RELOC_PJ_CODE_LO16,
+  BFD_RELOC_PJ_CODE_DIR16,
+  BFD_RELOC_PJ_CODE_DIR32,
+  BFD_RELOC_PJ_CODE_REL16,
+  BFD_RELOC_PJ_CODE_REL32,
+
+/* Power(rs6000) and PowerPC relocations.  */
+  BFD_RELOC_PPC_B26,
+  BFD_RELOC_PPC_BA26,
+  BFD_RELOC_PPC_TOC16,
+  BFD_RELOC_PPC_B16,
+  BFD_RELOC_PPC_B16_BRTAKEN,
+  BFD_RELOC_PPC_B16_BRNTAKEN,
+  BFD_RELOC_PPC_BA16,
+  BFD_RELOC_PPC_BA16_BRTAKEN,
+  BFD_RELOC_PPC_BA16_BRNTAKEN,
+  BFD_RELOC_PPC_COPY,
+  BFD_RELOC_PPC_GLOB_DAT,
+  BFD_RELOC_PPC_JMP_SLOT,
+  BFD_RELOC_PPC_RELATIVE,
+  BFD_RELOC_PPC_LOCAL24PC,
+  BFD_RELOC_PPC_EMB_NADDR32,
+  BFD_RELOC_PPC_EMB_NADDR16,
+  BFD_RELOC_PPC_EMB_NADDR16_LO,
+  BFD_RELOC_PPC_EMB_NADDR16_HI,
+  BFD_RELOC_PPC_EMB_NADDR16_HA,
+  BFD_RELOC_PPC_EMB_SDAI16,
+  BFD_RELOC_PPC_EMB_SDA2I16,
+  BFD_RELOC_PPC_EMB_SDA2REL,
+  BFD_RELOC_PPC_EMB_SDA21,
+  BFD_RELOC_PPC_EMB_MRKREF,
+  BFD_RELOC_PPC_EMB_RELSEC16,
+  BFD_RELOC_PPC_EMB_RELST_LO,
+  BFD_RELOC_PPC_EMB_RELST_HI,
+  BFD_RELOC_PPC_EMB_RELST_HA,
+  BFD_RELOC_PPC_EMB_BIT_FLD,
+  BFD_RELOC_PPC_EMB_RELSDA,
+  BFD_RELOC_PPC64_HIGHER,
+  BFD_RELOC_PPC64_HIGHER_S,
+  BFD_RELOC_PPC64_HIGHEST,
+  BFD_RELOC_PPC64_HIGHEST_S,
+  BFD_RELOC_PPC64_TOC16_LO,
+  BFD_RELOC_PPC64_TOC16_HI,
+  BFD_RELOC_PPC64_TOC16_HA,
+  BFD_RELOC_PPC64_TOC,
+  BFD_RELOC_PPC64_PLTGOT16,
+  BFD_RELOC_PPC64_PLTGOT16_LO,
+  BFD_RELOC_PPC64_PLTGOT16_HI,
+  BFD_RELOC_PPC64_PLTGOT16_HA,
+  BFD_RELOC_PPC64_ADDR16_DS,
+  BFD_RELOC_PPC64_ADDR16_LO_DS,
+  BFD_RELOC_PPC64_GOT16_DS,
+  BFD_RELOC_PPC64_GOT16_LO_DS,
+  BFD_RELOC_PPC64_PLT16_LO_DS,
+  BFD_RELOC_PPC64_SECTOFF_DS,
+  BFD_RELOC_PPC64_SECTOFF_LO_DS,
+  BFD_RELOC_PPC64_TOC16_DS,
+  BFD_RELOC_PPC64_TOC16_LO_DS,
+  BFD_RELOC_PPC64_PLTGOT16_DS,
+  BFD_RELOC_PPC64_PLTGOT16_LO_DS,
+
+/* PowerPC and PowerPC64 thread-local storage relocations.  */
+  BFD_RELOC_PPC_TLS,
+  BFD_RELOC_PPC_TLSGD,
+  BFD_RELOC_PPC_TLSLD,
+  BFD_RELOC_PPC_DTPMOD,
+  BFD_RELOC_PPC_TPREL16,
+  BFD_RELOC_PPC_TPREL16_LO,
+  BFD_RELOC_PPC_TPREL16_HI,
+  BFD_RELOC_PPC_TPREL16_HA,
+  BFD_RELOC_PPC_TPREL,
+  BFD_RELOC_PPC_DTPREL16,
+  BFD_RELOC_PPC_DTPREL16_LO,
+  BFD_RELOC_PPC_DTPREL16_HI,
+  BFD_RELOC_PPC_DTPREL16_HA,
+  BFD_RELOC_PPC_DTPREL,
+  BFD_RELOC_PPC_GOT_TLSGD16,
+  BFD_RELOC_PPC_GOT_TLSGD16_LO,
+  BFD_RELOC_PPC_GOT_TLSGD16_HI,
+  BFD_RELOC_PPC_GOT_TLSGD16_HA,
+  BFD_RELOC_PPC_GOT_TLSLD16,
+  BFD_RELOC_PPC_GOT_TLSLD16_LO,
+  BFD_RELOC_PPC_GOT_TLSLD16_HI,
+  BFD_RELOC_PPC_GOT_TLSLD16_HA,
+  BFD_RELOC_PPC_GOT_TPREL16,
+  BFD_RELOC_PPC_GOT_TPREL16_LO,
+  BFD_RELOC_PPC_GOT_TPREL16_HI,
+  BFD_RELOC_PPC_GOT_TPREL16_HA,
+  BFD_RELOC_PPC_GOT_DTPREL16,
+  BFD_RELOC_PPC_GOT_DTPREL16_LO,
+  BFD_RELOC_PPC_GOT_DTPREL16_HI,
+  BFD_RELOC_PPC_GOT_DTPREL16_HA,
+  BFD_RELOC_PPC64_TPREL16_DS,
+  BFD_RELOC_PPC64_TPREL16_LO_DS,
+  BFD_RELOC_PPC64_TPREL16_HIGHER,
+  BFD_RELOC_PPC64_TPREL16_HIGHERA,
+  BFD_RELOC_PPC64_TPREL16_HIGHEST,
+  BFD_RELOC_PPC64_TPREL16_HIGHESTA,
+  BFD_RELOC_PPC64_DTPREL16_DS,
+  BFD_RELOC_PPC64_DTPREL16_LO_DS,
+  BFD_RELOC_PPC64_DTPREL16_HIGHER,
+  BFD_RELOC_PPC64_DTPREL16_HIGHERA,
+  BFD_RELOC_PPC64_DTPREL16_HIGHEST,
+  BFD_RELOC_PPC64_DTPREL16_HIGHESTA,
+
+/* IBM 370/390 relocations  */
+  BFD_RELOC_I370_D12,
+
+/* The type of reloc used to build a constructor table - at the moment
+probably a 32 bit wide absolute relocation, but the target can choose.
+It generally does map to one of the other relocation types.  */
+  BFD_RELOC_CTOR,
+
+/* ARM 26 bit pc-relative branch.  The lowest two bits must be zero and are
+not stored in the instruction.  */
+  BFD_RELOC_ARM_PCREL_BRANCH,
+
+/* ARM 26 bit pc-relative branch.  The lowest bit must be zero and is
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
+field in the instruction.  */
+  BFD_RELOC_ARM_PCREL_BLX,
+
+/* Thumb 22 bit pc-relative branch.  The lowest bit must be zero and is
+not stored in the instruction.  The 2nd lowest bit comes from a 1 bit
+field in the instruction.  */
+  BFD_RELOC_THUMB_PCREL_BLX,
+
+/* ARM 26-bit pc-relative branch for an unconditional BL or BLX instruction.  */
+  BFD_RELOC_ARM_PCREL_CALL,
+
+/* ARM 26-bit pc-relative branch for B or conditional BL instruction.  */
+  BFD_RELOC_ARM_PCREL_JUMP,
+
+/* Thumb 7-, 9-, 12-, 20-, 23-, and 25-bit pc-relative branches.
+The lowest bit must be zero and is not stored in the instruction.
+Note that the corresponding ELF R_ARM_THM_JUMPnn constant has an
+"nn" one smaller in all cases.  Note further that BRANCH23
+corresponds to R_ARM_THM_CALL.  */
+  BFD_RELOC_THUMB_PCREL_BRANCH7,
+  BFD_RELOC_THUMB_PCREL_BRANCH9,
+  BFD_RELOC_THUMB_PCREL_BRANCH12,
+  BFD_RELOC_THUMB_PCREL_BRANCH20,
+  BFD_RELOC_THUMB_PCREL_BRANCH23,
+  BFD_RELOC_THUMB_PCREL_BRANCH25,
+
+/* 12-bit immediate offset, used in ARM-format ldr and str instructions.  */
+  BFD_RELOC_ARM_OFFSET_IMM,
+
+/* 5-bit immediate offset, used in Thumb-format ldr and str instructions.  */
+  BFD_RELOC_ARM_THUMB_OFFSET,
+
+/* Pc-relative or absolute relocation depending on target.  Used for
+entries in .init_array sections.  */
+  BFD_RELOC_ARM_TARGET1,
+
+/* Read-only segment base relative address.  */
+  BFD_RELOC_ARM_ROSEGREL32,
+
+/* Data segment base relative address.  */
+  BFD_RELOC_ARM_SBREL32,
+
+/* This reloc is used for references to RTTI data from exception handling
+tables.  The actual definition depends on the target.  It may be a
+pc-relative or some form of GOT-indirect relocation.  */
+  BFD_RELOC_ARM_TARGET2,
+
+/* 31-bit PC relative address.  */
+  BFD_RELOC_ARM_PREL31,
+
+/* Low and High halfword relocations for MOVW and MOVT instructions.  */
+  BFD_RELOC_ARM_MOVW,
+  BFD_RELOC_ARM_MOVT,
+  BFD_RELOC_ARM_MOVW_PCREL,
+  BFD_RELOC_ARM_MOVT_PCREL,
+  BFD_RELOC_ARM_THUMB_MOVW,
+  BFD_RELOC_ARM_THUMB_MOVT,
+  BFD_RELOC_ARM_THUMB_MOVW_PCREL,
+  BFD_RELOC_ARM_THUMB_MOVT_PCREL,
+
+/* Relocations for setting up GOTs and PLTs for shared libraries.  */
+  BFD_RELOC_ARM_JUMP_SLOT,
+  BFD_RELOC_ARM_GLOB_DAT,
+  BFD_RELOC_ARM_GOT32,
+  BFD_RELOC_ARM_PLT32,
+  BFD_RELOC_ARM_RELATIVE,
+  BFD_RELOC_ARM_GOTOFF,
+  BFD_RELOC_ARM_GOTPC,
+  BFD_RELOC_ARM_GOT_PREL,
+
+/* ARM thread-local storage relocations.  */
+  BFD_RELOC_ARM_TLS_GD32,
+  BFD_RELOC_ARM_TLS_LDO32,
+  BFD_RELOC_ARM_TLS_LDM32,
+  BFD_RELOC_ARM_TLS_DTPOFF32,
+  BFD_RELOC_ARM_TLS_DTPMOD32,
+  BFD_RELOC_ARM_TLS_TPOFF32,
+  BFD_RELOC_ARM_TLS_IE32,
+  BFD_RELOC_ARM_TLS_LE32,
+
+/* ARM group relocations.  */
+  BFD_RELOC_ARM_ALU_PC_G0_NC,
+  BFD_RELOC_ARM_ALU_PC_G0,
+  BFD_RELOC_ARM_ALU_PC_G1_NC,
+  BFD_RELOC_ARM_ALU_PC_G1,
+  BFD_RELOC_ARM_ALU_PC_G2,
+  BFD_RELOC_ARM_LDR_PC_G0,
+  BFD_RELOC_ARM_LDR_PC_G1,
+  BFD_RELOC_ARM_LDR_PC_G2,
+  BFD_RELOC_ARM_LDRS_PC_G0,
+  BFD_RELOC_ARM_LDRS_PC_G1,
+  BFD_RELOC_ARM_LDRS_PC_G2,
+  BFD_RELOC_ARM_LDC_PC_G0,
+  BFD_RELOC_ARM_LDC_PC_G1,
+  BFD_RELOC_ARM_LDC_PC_G2,
+  BFD_RELOC_ARM_ALU_SB_G0_NC,
+  BFD_RELOC_ARM_ALU_SB_G0,
+  BFD_RELOC_ARM_ALU_SB_G1_NC,
+  BFD_RELOC_ARM_ALU_SB_G1,
+  BFD_RELOC_ARM_ALU_SB_G2,
+  BFD_RELOC_ARM_LDR_SB_G0,
+  BFD_RELOC_ARM_LDR_SB_G1,
+  BFD_RELOC_ARM_LDR_SB_G2,
+  BFD_RELOC_ARM_LDRS_SB_G0,
+  BFD_RELOC_ARM_LDRS_SB_G1,
+  BFD_RELOC_ARM_LDRS_SB_G2,
+  BFD_RELOC_ARM_LDC_SB_G0,
+  BFD_RELOC_ARM_LDC_SB_G1,
+  BFD_RELOC_ARM_LDC_SB_G2,
+
+/* Annotation of BX instructions.  */
+  BFD_RELOC_ARM_V4BX,
+
+/* These relocs are only used within the ARM assembler.  They are not
+(at present) written to any object files.  */
+  BFD_RELOC_ARM_IMMEDIATE,
+  BFD_RELOC_ARM_ADRL_IMMEDIATE,
+  BFD_RELOC_ARM_T32_IMMEDIATE,
+  BFD_RELOC_ARM_T32_ADD_IMM,
+  BFD_RELOC_ARM_T32_IMM12,
+  BFD_RELOC_ARM_T32_ADD_PC12,
+  BFD_RELOC_ARM_SHIFT_IMM,
+  BFD_RELOC_ARM_SMC,
+  BFD_RELOC_ARM_SWI,
+  BFD_RELOC_ARM_MULTI,
+  BFD_RELOC_ARM_CP_OFF_IMM,
+  BFD_RELOC_ARM_CP_OFF_IMM_S2,
+  BFD_RELOC_ARM_T32_CP_OFF_IMM,
+  BFD_RELOC_ARM_T32_CP_OFF_IMM_S2,
+  BFD_RELOC_ARM_ADR_IMM,
+  BFD_RELOC_ARM_LDR_IMM,
+  BFD_RELOC_ARM_LITERAL,
+  BFD_RELOC_ARM_IN_POOL,
+  BFD_RELOC_ARM_OFFSET_IMM8,
+  BFD_RELOC_ARM_T32_OFFSET_U8,
+  BFD_RELOC_ARM_T32_OFFSET_IMM,
+  BFD_RELOC_ARM_HWLITERAL,
+  BFD_RELOC_ARM_THUMB_ADD,
+  BFD_RELOC_ARM_THUMB_IMM,
+  BFD_RELOC_ARM_THUMB_SHIFT,
+
+/* Renesas / SuperH SH relocs.  Not all of these appear in object files.  */
+  BFD_RELOC_SH_PCDISP8BY2,
+  BFD_RELOC_SH_PCDISP12BY2,
+  BFD_RELOC_SH_IMM3,
+  BFD_RELOC_SH_IMM3U,
+  BFD_RELOC_SH_DISP12,
+  BFD_RELOC_SH_DISP12BY2,
+  BFD_RELOC_SH_DISP12BY4,
+  BFD_RELOC_SH_DISP12BY8,
+  BFD_RELOC_SH_DISP20,
+  BFD_RELOC_SH_DISP20BY8,
+  BFD_RELOC_SH_IMM4,
+  BFD_RELOC_SH_IMM4BY2,
+  BFD_RELOC_SH_IMM4BY4,
+  BFD_RELOC_SH_IMM8,
+  BFD_RELOC_SH_IMM8BY2,
+  BFD_RELOC_SH_IMM8BY4,
+  BFD_RELOC_SH_PCRELIMM8BY2,
+  BFD_RELOC_SH_PCRELIMM8BY4,
+  BFD_RELOC_SH_SWITCH16,
+  BFD_RELOC_SH_SWITCH32,
+  BFD_RELOC_SH_USES,
+  BFD_RELOC_SH_COUNT,
+  BFD_RELOC_SH_ALIGN,
+  BFD_RELOC_SH_CODE,
+  BFD_RELOC_SH_DATA,
+  BFD_RELOC_SH_LABEL,
+  BFD_RELOC_SH_LOOP_START,
+  BFD_RELOC_SH_LOOP_END,
+  BFD_RELOC_SH_COPY,
+  BFD_RELOC_SH_GLOB_DAT,
+  BFD_RELOC_SH_JMP_SLOT,
+  BFD_RELOC_SH_RELATIVE,
+  BFD_RELOC_SH_GOTPC,
+  BFD_RELOC_SH_GOT_LOW16,
+  BFD_RELOC_SH_GOT_MEDLOW16,
+  BFD_RELOC_SH_GOT_MEDHI16,
+  BFD_RELOC_SH_GOT_HI16,
+  BFD_RELOC_SH_GOTPLT_LOW16,
+  BFD_RELOC_SH_GOTPLT_MEDLOW16,
+  BFD_RELOC_SH_GOTPLT_MEDHI16,
+  BFD_RELOC_SH_GOTPLT_HI16,
+  BFD_RELOC_SH_PLT_LOW16,
+  BFD_RELOC_SH_PLT_MEDLOW16,
+  BFD_RELOC_SH_PLT_MEDHI16,
+  BFD_RELOC_SH_PLT_HI16,
+  BFD_RELOC_SH_GOTOFF_LOW16,
+  BFD_RELOC_SH_GOTOFF_MEDLOW16,
+  BFD_RELOC_SH_GOTOFF_MEDHI16,
+  BFD_RELOC_SH_GOTOFF_HI16,
+  BFD_RELOC_SH_GOTPC_LOW16,
+  BFD_RELOC_SH_GOTPC_MEDLOW16,
+  BFD_RELOC_SH_GOTPC_MEDHI16,
+  BFD_RELOC_SH_GOTPC_HI16,
+  BFD_RELOC_SH_COPY64,
+  BFD_RELOC_SH_GLOB_DAT64,
+  BFD_RELOC_SH_JMP_SLOT64,
+  BFD_RELOC_SH_RELATIVE64,
+  BFD_RELOC_SH_GOT10BY4,
+  BFD_RELOC_SH_GOT10BY8,
+  BFD_RELOC_SH_GOTPLT10BY4,
+  BFD_RELOC_SH_GOTPLT10BY8,
+  BFD_RELOC_SH_GOTPLT32,
+  BFD_RELOC_SH_SHMEDIA_CODE,
+  BFD_RELOC_SH_IMMU5,
+  BFD_RELOC_SH_IMMS6,
+  BFD_RELOC_SH_IMMS6BY32,
+  BFD_RELOC_SH_IMMU6,
+  BFD_RELOC_SH_IMMS10,
+  BFD_RELOC_SH_IMMS10BY2,
+  BFD_RELOC_SH_IMMS10BY4,
+  BFD_RELOC_SH_IMMS10BY8,
+  BFD_RELOC_SH_IMMS16,
+  BFD_RELOC_SH_IMMU16,
+  BFD_RELOC_SH_IMM_LOW16,
+  BFD_RELOC_SH_IMM_LOW16_PCREL,
+  BFD_RELOC_SH_IMM_MEDLOW16,
+  BFD_RELOC_SH_IMM_MEDLOW16_PCREL,
+  BFD_RELOC_SH_IMM_MEDHI16,
+  BFD_RELOC_SH_IMM_MEDHI16_PCREL,
+  BFD_RELOC_SH_IMM_HI16,
+  BFD_RELOC_SH_IMM_HI16_PCREL,
+  BFD_RELOC_SH_PT_16,
+  BFD_RELOC_SH_TLS_GD_32,
+  BFD_RELOC_SH_TLS_LD_32,
+  BFD_RELOC_SH_TLS_LDO_32,
+  BFD_RELOC_SH_TLS_IE_32,
+  BFD_RELOC_SH_TLS_LE_32,
+  BFD_RELOC_SH_TLS_DTPMOD32,
+  BFD_RELOC_SH_TLS_DTPOFF32,
+  BFD_RELOC_SH_TLS_TPOFF32,
+  BFD_RELOC_SH_GOT20,
+  BFD_RELOC_SH_GOTOFF20,
+  BFD_RELOC_SH_GOTFUNCDESC,
+  BFD_RELOC_SH_GOTFUNCDESC20,
+  BFD_RELOC_SH_GOTOFFFUNCDESC,
+  BFD_RELOC_SH_GOTOFFFUNCDESC20,
+  BFD_RELOC_SH_FUNCDESC,
+
+/* ARC Cores relocs.
+ARC 22 bit pc-relative branch.  The lowest two bits must be zero and are
+not stored in the instruction.  The high 20 bits are installed in bits 26
+through 7 of the instruction.  */
+  BFD_RELOC_ARC_B22_PCREL,
+
+/* ARC 26 bit absolute branch.  The lowest two bits must be zero and are not
+stored in the instruction.  The high 24 bits are installed in bits 23
+through 0.  */
+  BFD_RELOC_ARC_B26,
+
+/* ADI Blackfin 16 bit immediate absolute reloc.  */
+  BFD_RELOC_BFIN_16_IMM,
+
+/* ADI Blackfin 16 bit immediate absolute reloc higher 16 bits.  */
+  BFD_RELOC_BFIN_16_HIGH,
+
+/* ADI Blackfin 'a' part of LSETUP.  */
+  BFD_RELOC_BFIN_4_PCREL,
+
+/* ADI Blackfin.  */
+  BFD_RELOC_BFIN_5_PCREL,
+
+/* ADI Blackfin 16 bit immediate absolute reloc lower 16 bits.  */
+  BFD_RELOC_BFIN_16_LOW,
+
+/* ADI Blackfin.  */
+  BFD_RELOC_BFIN_10_PCREL,
+
+/* ADI Blackfin 'b' part of LSETUP.  */
+  BFD_RELOC_BFIN_11_PCREL,
+
+/* ADI Blackfin.  */
+  BFD_RELOC_BFIN_12_PCREL_JUMP,
+
+/* ADI Blackfin Short jump, pcrel.  */
+  BFD_RELOC_BFIN_12_PCREL_JUMP_S,
+
+/* ADI Blackfin Call.x not implemented.  */
+  BFD_RELOC_BFIN_24_PCREL_CALL_X,
+
+/* ADI Blackfin Long Jump pcrel.  */
+  BFD_RELOC_BFIN_24_PCREL_JUMP_L,
+
+/* ADI Blackfin FD-PIC relocations.  */
+  BFD_RELOC_BFIN_GOT17M4,
+  BFD_RELOC_BFIN_GOTHI,
+  BFD_RELOC_BFIN_GOTLO,
+  BFD_RELOC_BFIN_FUNCDESC,
+  BFD_RELOC_BFIN_FUNCDESC_GOT17M4,
+  BFD_RELOC_BFIN_FUNCDESC_GOTHI,
+  BFD_RELOC_BFIN_FUNCDESC_GOTLO,
+  BFD_RELOC_BFIN_FUNCDESC_VALUE,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFF17M4,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFHI,
+  BFD_RELOC_BFIN_FUNCDESC_GOTOFFLO,
+  BFD_RELOC_BFIN_GOTOFF17M4,
+  BFD_RELOC_BFIN_GOTOFFHI,
+  BFD_RELOC_BFIN_GOTOFFLO,
+
+/* ADI Blackfin GOT relocation.  */
+  BFD_RELOC_BFIN_GOT,
+
+/* ADI Blackfin PLTPC relocation.  */
+  BFD_RELOC_BFIN_PLTPC,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_PUSH,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_CONST,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_ADD,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_SUB,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_MULT,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_DIV,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_MOD,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_LSHIFT,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_RSHIFT,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_AND,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_OR,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_XOR,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_LAND,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_LOR,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_LEN,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_NEG,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_COMP,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_PAGE,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_HWPAGE,
+
+/* ADI Blackfin arithmetic relocation.  */
+  BFD_ARELOC_BFIN_ADDR,
+
+/* Mitsubishi D10V relocs.
+This is a 10-bit reloc with the right 2 bits
+assumed to be 0.  */
+  BFD_RELOC_D10V_10_PCREL_R,
+
+/* Mitsubishi D10V relocs.
+This is a 10-bit reloc with the right 2 bits
+assumed to be 0.  This is the same as the previous reloc
+except it is in the left container, i.e.,
+shifted left 15 bits.  */
+  BFD_RELOC_D10V_10_PCREL_L,
+
+/* This is an 18-bit reloc with the right 2 bits
+assumed to be 0.  */
+  BFD_RELOC_D10V_18,
+
+/* This is an 18-bit reloc with the right 2 bits
+assumed to be 0.  */
+  BFD_RELOC_D10V_18_PCREL,
+
+/* Mitsubishi D30V relocs.
+This is a 6-bit absolute reloc.  */
+  BFD_RELOC_D30V_6,
+
+/* This is a 6-bit pc-relative reloc with
+the right 3 bits assumed to be 0.  */
+  BFD_RELOC_D30V_9_PCREL,
+
+/* This is a 6-bit pc-relative reloc with
+the right 3 bits assumed to be 0. Same
+as the previous reloc but on the right side
+of the container.  */
+  BFD_RELOC_D30V_9_PCREL_R,
+
+/* This is a 12-bit absolute reloc with the
+right 3 bitsassumed to be 0.  */
+  BFD_RELOC_D30V_15,
+
+/* This is a 12-bit pc-relative reloc with
+the right 3 bits assumed to be 0.  */
+  BFD_RELOC_D30V_15_PCREL,
+
+/* This is a 12-bit pc-relative reloc with
+the right 3 bits assumed to be 0. Same
+as the previous reloc but on the right side
+of the container.  */
+  BFD_RELOC_D30V_15_PCREL_R,
+
+/* This is an 18-bit absolute reloc with
+the right 3 bits assumed to be 0.  */
+  BFD_RELOC_D30V_21,
+
+/* This is an 18-bit pc-relative reloc with
+the right 3 bits assumed to be 0.  */
+  BFD_RELOC_D30V_21_PCREL,
+
+/* This is an 18-bit pc-relative reloc with
+the right 3 bits assumed to be 0. Same
+as the previous reloc but on the right side
+of the container.  */
+  BFD_RELOC_D30V_21_PCREL_R,
+
+/* This is a 32-bit absolute reloc.  */
+  BFD_RELOC_D30V_32,
+
+/* This is a 32-bit pc-relative reloc.  */
+  BFD_RELOC_D30V_32_PCREL,
+
+/* DLX relocs  */
+  BFD_RELOC_DLX_HI16_S,
+
+/* DLX relocs  */
+  BFD_RELOC_DLX_LO16,
+
+/* DLX relocs  */
+  BFD_RELOC_DLX_JMP26,
+
+/* Renesas M16C/M32C Relocations.  */
+  BFD_RELOC_M32C_HI8,
+  BFD_RELOC_M32C_RL_JUMP,
+  BFD_RELOC_M32C_RL_1ADDR,
+  BFD_RELOC_M32C_RL_2ADDR,
+
+/* Renesas M32R (formerly Mitsubishi M32R) relocs.
+This is a 24 bit absolute address.  */
+  BFD_RELOC_M32R_24,
+
+/* This is a 10-bit pc-relative reloc with the right 2 bits assumed to be 0.  */
+  BFD_RELOC_M32R_10_PCREL,
+
+/* This is an 18-bit reloc with the right 2 bits assumed to be 0.  */
+  BFD_RELOC_M32R_18_PCREL,
+
+/* This is a 26-bit reloc with the right 2 bits assumed to be 0.  */
+  BFD_RELOC_M32R_26_PCREL,
+
+/* This is a 16-bit reloc containing the high 16 bits of an address
+used when the lower 16 bits are treated as unsigned.  */
+  BFD_RELOC_M32R_HI16_ULO,
+
+/* This is a 16-bit reloc containing the high 16 bits of an address
+used when the lower 16 bits are treated as signed.  */
+  BFD_RELOC_M32R_HI16_SLO,
+
+/* This is a 16-bit reloc containing the lower 16 bits of an address.  */
+  BFD_RELOC_M32R_LO16,
+
+/* This is a 16-bit reloc containing the small data area offset for use in
+add3, load, and store instructions.  */
+  BFD_RELOC_M32R_SDA16,
+
+/* For PIC.  */
+  BFD_RELOC_M32R_GOT24,
+  BFD_RELOC_M32R_26_PLTREL,
+  BFD_RELOC_M32R_COPY,
+  BFD_RELOC_M32R_GLOB_DAT,
+  BFD_RELOC_M32R_JMP_SLOT,
+  BFD_RELOC_M32R_RELATIVE,
+  BFD_RELOC_M32R_GOTOFF,
+  BFD_RELOC_M32R_GOTOFF_HI_ULO,
+  BFD_RELOC_M32R_GOTOFF_HI_SLO,
+  BFD_RELOC_M32R_GOTOFF_LO,
+  BFD_RELOC_M32R_GOTPC24,
+  BFD_RELOC_M32R_GOT16_HI_ULO,
+  BFD_RELOC_M32R_GOT16_HI_SLO,
+  BFD_RELOC_M32R_GOT16_LO,
+  BFD_RELOC_M32R_GOTPC_HI_ULO,
+  BFD_RELOC_M32R_GOTPC_HI_SLO,
+  BFD_RELOC_M32R_GOTPC_LO,
+
+/* This is a 9-bit reloc  */
+  BFD_RELOC_V850_9_PCREL,
+
+/* This is a 22-bit reloc  */
+  BFD_RELOC_V850_22_PCREL,
+
+/* This is a 16 bit offset from the short data area pointer.  */
+  BFD_RELOC_V850_SDA_16_16_OFFSET,
+
+/* This is a 16 bit offset (of which only 15 bits are used) from the
+short data area pointer.  */
+  BFD_RELOC_V850_SDA_15_16_OFFSET,
+
+/* This is a 16 bit offset from the zero data area pointer.  */
+  BFD_RELOC_V850_ZDA_16_16_OFFSET,
+
+/* This is a 16 bit offset (of which only 15 bits are used) from the
+zero data area pointer.  */
+  BFD_RELOC_V850_ZDA_15_16_OFFSET,
+
+/* This is an 8 bit offset (of which only 6 bits are used) from the
+tiny data area pointer.  */
+  BFD_RELOC_V850_TDA_6_8_OFFSET,
+
+/* This is an 8bit offset (of which only 7 bits are used) from the tiny
+data area pointer.  */
+  BFD_RELOC_V850_TDA_7_8_OFFSET,
+
+/* This is a 7 bit offset from the tiny data area pointer.  */
+  BFD_RELOC_V850_TDA_7_7_OFFSET,
+
+/* This is a 16 bit offset from the tiny data area pointer.  */
+  BFD_RELOC_V850_TDA_16_16_OFFSET,
+
+/* This is a 5 bit offset (of which only 4 bits are used) from the tiny
+data area pointer.  */
+  BFD_RELOC_V850_TDA_4_5_OFFSET,
+
+/* This is a 4 bit offset from the tiny data area pointer.  */
+  BFD_RELOC_V850_TDA_4_4_OFFSET,
+
+/* This is a 16 bit offset from the short data area pointer, with the
+bits placed non-contiguously in the instruction.  */
+  BFD_RELOC_V850_SDA_16_16_SPLIT_OFFSET,
+
+/* This is a 16 bit offset from the zero data area pointer, with the
+bits placed non-contiguously in the instruction.  */
+  BFD_RELOC_V850_ZDA_16_16_SPLIT_OFFSET,
+
+/* This is a 6 bit offset from the call table base pointer.  */
+  BFD_RELOC_V850_CALLT_6_7_OFFSET,
+
+/* This is a 16 bit offset from the call table base pointer.  */
+  BFD_RELOC_V850_CALLT_16_16_OFFSET,
+
+/* Used for relaxing indirect function calls.  */
+  BFD_RELOC_V850_LONGCALL,
+
+/* Used for relaxing indirect jumps.  */
+  BFD_RELOC_V850_LONGJUMP,
+
+/* Used to maintain alignment whilst relaxing.  */
+  BFD_RELOC_V850_ALIGN,
+
+/* This is a variation of BFD_RELOC_LO16 that can be used in v850e ld.bu
+instructions.  */
+  BFD_RELOC_V850_LO16_SPLIT_OFFSET,
+
+/* This is a 32bit pcrel reloc for the mn10300, offset by two bytes in the
+instruction.  */
+  BFD_RELOC_MN10300_32_PCREL,
+
+/* This is a 16bit pcrel reloc for the mn10300, offset by two bytes in the
+instruction.  */
+  BFD_RELOC_MN10300_16_PCREL,
+
+/* This is a 8bit DP reloc for the tms320c30, where the most
+significant 8 bits of a 24 bit word are placed into the least
+significant 8 bits of the opcode.  */
+  BFD_RELOC_TIC30_LDP,
+
+/* This is a 7bit reloc for the tms320c54x, where the least
+significant 7 bits of a 16 bit word are placed into the least
+significant 7 bits of the opcode.  */
+  BFD_RELOC_TIC54X_PARTLS7,
+
+/* This is a 9bit DP reloc for the tms320c54x, where the most
+significant 9 bits of a 16 bit word are placed into the least
+significant 9 bits of the opcode.  */
+  BFD_RELOC_TIC54X_PARTMS9,
+
+/* This is an extended address 23-bit reloc for the tms320c54x.  */
+  BFD_RELOC_TIC54X_23,
+
+/* This is a 16-bit reloc for the tms320c54x, where the least
+significant 16 bits of a 23-bit extended address are placed into
+the opcode.  */
+  BFD_RELOC_TIC54X_16_OF_23,
+
+/* This is a reloc for the tms320c54x, where the most
+significant 7 bits of a 23-bit extended address are placed into
+the opcode.  */
+  BFD_RELOC_TIC54X_MS7_OF_23,
+
+/* TMS320C6000 relocations.  */
+  BFD_RELOC_C6000_PCR_S21,
+  BFD_RELOC_C6000_PCR_S12,
+  BFD_RELOC_C6000_PCR_S10,
+  BFD_RELOC_C6000_PCR_S7,
+  BFD_RELOC_C6000_ABS_S16,
+  BFD_RELOC_C6000_ABS_L16,
+  BFD_RELOC_C6000_ABS_H16,
+  BFD_RELOC_C6000_SBR_U15_B,
+  BFD_RELOC_C6000_SBR_U15_H,
+  BFD_RELOC_C6000_SBR_U15_W,
+  BFD_RELOC_C6000_SBR_S16,
+  BFD_RELOC_C6000_SBR_L16_B,
+  BFD_RELOC_C6000_SBR_L16_H,
+  BFD_RELOC_C6000_SBR_L16_W,
+  BFD_RELOC_C6000_SBR_H16_B,
+  BFD_RELOC_C6000_SBR_H16_H,
+  BFD_RELOC_C6000_SBR_H16_W,
+  BFD_RELOC_C6000_SBR_GOT_U15_W,
+  BFD_RELOC_C6000_SBR_GOT_L16_W,
+  BFD_RELOC_C6000_SBR_GOT_H16_W,
+  BFD_RELOC_C6000_DSBT_INDEX,
+  BFD_RELOC_C6000_PREL31,
+  BFD_RELOC_C6000_COPY,
+  BFD_RELOC_C6000_ALIGN,
+  BFD_RELOC_C6000_FPHEAD,
+  BFD_RELOC_C6000_NOCMP,
+
+/* This is a 48 bit reloc for the FR30 that stores 32 bits.  */
+  BFD_RELOC_FR30_48,
+
+/* This is a 32 bit reloc for the FR30 that stores 20 bits split up into
+two sections.  */
+  BFD_RELOC_FR30_20,
+
+/* This is a 16 bit reloc for the FR30 that stores a 6 bit word offset in
+4 bits.  */
+  BFD_RELOC_FR30_6_IN_4,
+
+/* This is a 16 bit reloc for the FR30 that stores an 8 bit byte offset
+into 8 bits.  */
+  BFD_RELOC_FR30_8_IN_8,
+
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit short offset
+into 8 bits.  */
+  BFD_RELOC_FR30_9_IN_8,
+
+/* This is a 16 bit reloc for the FR30 that stores a 10 bit word offset
+into 8 bits.  */
+  BFD_RELOC_FR30_10_IN_8,
+
+/* This is a 16 bit reloc for the FR30 that stores a 9 bit pc relative
+short offset into 8 bits.  */
+  BFD_RELOC_FR30_9_PCREL,
+
+/* This is a 16 bit reloc for the FR30 that stores a 12 bit pc relative
+short offset into 11 bits.  */
+  BFD_RELOC_FR30_12_PCREL,
+
+/* Motorola Mcore relocations.  */
+  BFD_RELOC_MCORE_PCREL_IMM8BY4,
+  BFD_RELOC_MCORE_PCREL_IMM11BY2,
+  BFD_RELOC_MCORE_PCREL_IMM4BY2,
+  BFD_RELOC_MCORE_PCREL_32,
+  BFD_RELOC_MCORE_PCREL_JSR_IMM11BY2,
+  BFD_RELOC_MCORE_RVA,
+
+/* Toshiba Media Processor Relocations.  */
+  BFD_RELOC_MEP_8,
+  BFD_RELOC_MEP_16,
+  BFD_RELOC_MEP_32,
+  BFD_RELOC_MEP_PCREL8A2,
+  BFD_RELOC_MEP_PCREL12A2,
+  BFD_RELOC_MEP_PCREL17A2,
+  BFD_RELOC_MEP_PCREL24A2,
+  BFD_RELOC_MEP_PCABS24A2,
+  BFD_RELOC_MEP_LOW16,
+  BFD_RELOC_MEP_HI16U,
+  BFD_RELOC_MEP_HI16S,
+  BFD_RELOC_MEP_GPREL,
+  BFD_RELOC_MEP_TPREL,
+  BFD_RELOC_MEP_TPREL7,
+  BFD_RELOC_MEP_TPREL7A2,
+  BFD_RELOC_MEP_TPREL7A4,
+  BFD_RELOC_MEP_UIMM24,
+  BFD_RELOC_MEP_ADDR24A4,
+  BFD_RELOC_MEP_GNU_VTINHERIT,
+  BFD_RELOC_MEP_GNU_VTENTRY,
+
+
+/* These are relocations for the GETA instruction.  */
+  BFD_RELOC_MMIX_GETA,
+  BFD_RELOC_MMIX_GETA_1,
+  BFD_RELOC_MMIX_GETA_2,
+  BFD_RELOC_MMIX_GETA_3,
+
+/* These are relocations for a conditional branch instruction.  */
+  BFD_RELOC_MMIX_CBRANCH,
+  BFD_RELOC_MMIX_CBRANCH_J,
+  BFD_RELOC_MMIX_CBRANCH_1,
+  BFD_RELOC_MMIX_CBRANCH_2,
+  BFD_RELOC_MMIX_CBRANCH_3,
+
+/* These are relocations for the PUSHJ instruction.  */
+  BFD_RELOC_MMIX_PUSHJ,
+  BFD_RELOC_MMIX_PUSHJ_1,
+  BFD_RELOC_MMIX_PUSHJ_2,
+  BFD_RELOC_MMIX_PUSHJ_3,
+  BFD_RELOC_MMIX_PUSHJ_STUBBABLE,
+
+/* These are relocations for the JMP instruction.  */
+  BFD_RELOC_MMIX_JMP,
+  BFD_RELOC_MMIX_JMP_1,
+  BFD_RELOC_MMIX_JMP_2,
+  BFD_RELOC_MMIX_JMP_3,
+
+/* This is a relocation for a relative address as in a GETA instruction or
+a branch.  */
+  BFD_RELOC_MMIX_ADDR19,
+
+/* This is a relocation for a relative address as in a JMP instruction.  */
+  BFD_RELOC_MMIX_ADDR27,
+
+/* This is a relocation for an instruction field that may be a general
+register or a value 0..255.  */
+  BFD_RELOC_MMIX_REG_OR_BYTE,
+
+/* This is a relocation for an instruction field that may be a general
+register.  */
+  BFD_RELOC_MMIX_REG,
+
+/* This is a relocation for two instruction fields holding a register and
+an offset, the equivalent of the relocation.  */
+  BFD_RELOC_MMIX_BASE_PLUS_OFFSET,
+
+/* This relocation is an assertion that the expression is not allocated as
+a global register.  It does not modify contents.  */
+  BFD_RELOC_MMIX_LOCAL,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit pc relative
+short offset into 7 bits.  */
+  BFD_RELOC_AVR_7_PCREL,
+
+/* This is a 16 bit reloc for the AVR that stores 13 bit pc relative
+short offset into 12 bits.  */
+  BFD_RELOC_AVR_13_PCREL,
+
+/* This is a 16 bit reloc for the AVR that stores 17 bit value (usually
+program memory address) into 16 bits.  */
+  BFD_RELOC_AVR_16_PM,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+data memory address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_LO8_LDI,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+of data memory address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_HI8_LDI,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
+of program memory address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_HH8_LDI,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_MS8_LDI,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(usually data memory address) into 8 bit immediate value of SUBI insn.  */
+  BFD_RELOC_AVR_LO8_LDI_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(high 8 bit of data memory address) into 8 bit immediate value of
+SUBI insn.  */
+  BFD_RELOC_AVR_HI8_LDI_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(most high 8 bit of program memory address) into 8 bit immediate value
+of LDI or SUBI insn.  */
+  BFD_RELOC_AVR_HH8_LDI_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value (msb
+of 32 bit value) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_MS8_LDI_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (usually
+command address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_LO8_LDI_PM,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value 
+(command address) into 8 bit immediate value of LDI insn. If the address
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
+in the lower 128k.  */
+  BFD_RELOC_AVR_LO8_LDI_GS,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+of command address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_HI8_LDI_PM,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (high 8 bit
+of command address) into 8 bit immediate value of LDI insn.  If the address
+is beyond the 128k boundary, the linker inserts a jump stub for this reloc
+below 128k.  */
+  BFD_RELOC_AVR_HI8_LDI_GS,
+
+/* This is a 16 bit reloc for the AVR that stores 8 bit value (most high 8 bit
+of command address) into 8 bit immediate value of LDI insn.  */
+  BFD_RELOC_AVR_HH8_LDI_PM,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(usually command address) into 8 bit immediate value of SUBI insn.  */
+  BFD_RELOC_AVR_LO8_LDI_PM_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(high 8 bit of 16 bit command address) into 8 bit immediate value
+of SUBI insn.  */
+  BFD_RELOC_AVR_HI8_LDI_PM_NEG,
+
+/* This is a 16 bit reloc for the AVR that stores negated 8 bit value
+(high 6 bit of 22 bit command address) into 8 bit immediate
+value of SUBI insn.  */
+  BFD_RELOC_AVR_HH8_LDI_PM_NEG,
+
+/* This is a 32 bit reloc for the AVR that stores 23 bit value
+into 22 bits.  */
+  BFD_RELOC_AVR_CALL,
+
+/* This is a 16 bit reloc for the AVR that stores all needed bits
+for absolute addressing with ldi with overflow check to linktime  */
+  BFD_RELOC_AVR_LDI,
+
+/* This is a 6 bit reloc for the AVR that stores offset for ldd/std
+instructions  */
+  BFD_RELOC_AVR_6,
+
+/* This is a 6 bit reloc for the AVR that stores offset for adiw/sbiw
+instructions  */
+  BFD_RELOC_AVR_6_ADIW,
+
+/* Renesas RX Relocations.  */
+  BFD_RELOC_RX_NEG8,
+  BFD_RELOC_RX_NEG16,
+  BFD_RELOC_RX_NEG24,
+  BFD_RELOC_RX_NEG32,
+  BFD_RELOC_RX_16_OP,
+  BFD_RELOC_RX_24_OP,
+  BFD_RELOC_RX_32_OP,
+  BFD_RELOC_RX_8U,
+  BFD_RELOC_RX_16U,
+  BFD_RELOC_RX_24U,
+  BFD_RELOC_RX_DIR3U_PCREL,
+  BFD_RELOC_RX_DIFF,
+  BFD_RELOC_RX_GPRELB,
+  BFD_RELOC_RX_GPRELW,
+  BFD_RELOC_RX_GPRELL,
+  BFD_RELOC_RX_SYM,
+  BFD_RELOC_RX_OP_SUBTRACT,
+  BFD_RELOC_RX_ABS8,
+  BFD_RELOC_RX_ABS16,
+  BFD_RELOC_RX_ABS32,
+  BFD_RELOC_RX_ABS16U,
+  BFD_RELOC_RX_ABS16UW,
+  BFD_RELOC_RX_ABS16UL,
+  BFD_RELOC_RX_RELAX,
+
+/* Direct 12 bit.  */
+  BFD_RELOC_390_12,
+
+/* 12 bit GOT offset.  */
+  BFD_RELOC_390_GOT12,
+
+/* 32 bit PC relative PLT address.  */
+  BFD_RELOC_390_PLT32,
+
+/* Copy symbol at runtime.  */
+  BFD_RELOC_390_COPY,
+
+/* Create GOT entry.  */
+  BFD_RELOC_390_GLOB_DAT,
+
+/* Create PLT entry.  */
+  BFD_RELOC_390_JMP_SLOT,
+
+/* Adjust by program base.  */
+  BFD_RELOC_390_RELATIVE,
+
+/* 32 bit PC relative offset to GOT.  */
+  BFD_RELOC_390_GOTPC,
+
+/* 16 bit GOT offset.  */
+  BFD_RELOC_390_GOT16,
+
+/* PC relative 16 bit shifted by 1.  */
+  BFD_RELOC_390_PC16DBL,
+
+/* 16 bit PC rel. PLT shifted by 1.  */
+  BFD_RELOC_390_PLT16DBL,
+
+/* PC relative 32 bit shifted by 1.  */
+  BFD_RELOC_390_PC32DBL,
+
+/* 32 bit PC rel. PLT shifted by 1.  */
+  BFD_RELOC_390_PLT32DBL,
+
+/* 32 bit PC rel. GOT shifted by 1.  */
+  BFD_RELOC_390_GOTPCDBL,
+
+/* 64 bit GOT offset.  */
+  BFD_RELOC_390_GOT64,
+
+/* 64 bit PC relative PLT address.  */
+  BFD_RELOC_390_PLT64,
+
+/* 32 bit rel. offset to GOT entry.  */
+  BFD_RELOC_390_GOTENT,
+
+/* 64 bit offset to GOT.  */
+  BFD_RELOC_390_GOTOFF64,
+
+/* 12-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_390_GOTPLT12,
+
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_390_GOTPLT16,
+
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_390_GOTPLT32,
+
+/* 64-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_390_GOTPLT64,
+
+/* 32-bit rel. offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_390_GOTPLTENT,
+
+/* 16-bit rel. offset from the GOT to a PLT entry.  */
+  BFD_RELOC_390_PLTOFF16,
+
+/* 32-bit rel. offset from the GOT to a PLT entry.  */
+  BFD_RELOC_390_PLTOFF32,
+
+/* 64-bit rel. offset from the GOT to a PLT entry.  */
+  BFD_RELOC_390_PLTOFF64,
+
+/* s390 tls relocations.  */
+  BFD_RELOC_390_TLS_LOAD,
+  BFD_RELOC_390_TLS_GDCALL,
+  BFD_RELOC_390_TLS_LDCALL,
+  BFD_RELOC_390_TLS_GD32,
+  BFD_RELOC_390_TLS_GD64,
+  BFD_RELOC_390_TLS_GOTIE12,
+  BFD_RELOC_390_TLS_GOTIE32,
+  BFD_RELOC_390_TLS_GOTIE64,
+  BFD_RELOC_390_TLS_LDM32,
+  BFD_RELOC_390_TLS_LDM64,
+  BFD_RELOC_390_TLS_IE32,
+  BFD_RELOC_390_TLS_IE64,
+  BFD_RELOC_390_TLS_IEENT,
+  BFD_RELOC_390_TLS_LE32,
+  BFD_RELOC_390_TLS_LE64,
+  BFD_RELOC_390_TLS_LDO32,
+  BFD_RELOC_390_TLS_LDO64,
+  BFD_RELOC_390_TLS_DTPMOD,
+  BFD_RELOC_390_TLS_DTPOFF,
+  BFD_RELOC_390_TLS_TPOFF,
+
+/* Long displacement extension.  */
+  BFD_RELOC_390_20,
+  BFD_RELOC_390_GOT20,
+  BFD_RELOC_390_GOTPLT20,
+  BFD_RELOC_390_TLS_GOTIE20,
+
+/* Score relocations
+Low 16 bit for load/store  */
+  BFD_RELOC_SCORE_GPREL15,
+
+/* This is a 24-bit reloc with the right 1 bit assumed to be 0  */
+  BFD_RELOC_SCORE_DUMMY2,
+  BFD_RELOC_SCORE_JMP,
+
+/* This is a 19-bit reloc with the right 1 bit assumed to be 0  */
+  BFD_RELOC_SCORE_BRANCH,
+
+/* This is a 32-bit reloc for 48-bit instructions.  */
+  BFD_RELOC_SCORE_IMM30,
+
+/* This is a 32-bit reloc for 48-bit instructions.  */
+  BFD_RELOC_SCORE_IMM32,
+
+/* This is a 11-bit reloc with the right 1 bit assumed to be 0  */
+  BFD_RELOC_SCORE16_JMP,
+
+/* This is a 8-bit reloc with the right 1 bit assumed to be 0  */
+  BFD_RELOC_SCORE16_BRANCH,
+
+/* This is a 9-bit reloc with the right 1 bit assumed to be 0  */
+  BFD_RELOC_SCORE_BCMP,
+
+/* Undocumented Score relocs  */
+  BFD_RELOC_SCORE_GOT15,
+  BFD_RELOC_SCORE_GOT_LO16,
+  BFD_RELOC_SCORE_CALL15,
+  BFD_RELOC_SCORE_DUMMY_HI16,
+
+/* Scenix IP2K - 9-bit register number / data address  */
+  BFD_RELOC_IP2K_FR9,
+
+/* Scenix IP2K - 4-bit register/data bank number  */
+  BFD_RELOC_IP2K_BANK,
+
+/* Scenix IP2K - low 13 bits of instruction word address  */
+  BFD_RELOC_IP2K_ADDR16CJP,
+
+/* Scenix IP2K - high 3 bits of instruction word address  */
+  BFD_RELOC_IP2K_PAGE3,
+
+/* Scenix IP2K - ext/low/high 8 bits of data address  */
+  BFD_RELOC_IP2K_LO8DATA,
+  BFD_RELOC_IP2K_HI8DATA,
+  BFD_RELOC_IP2K_EX8DATA,
+
+/* Scenix IP2K - low/high 8 bits of instruction word address  */
+  BFD_RELOC_IP2K_LO8INSN,
+  BFD_RELOC_IP2K_HI8INSN,
+
+/* Scenix IP2K - even/odd PC modifier to modify snb pcl.0  */
+  BFD_RELOC_IP2K_PC_SKIP,
+
+/* Scenix IP2K - 16 bit word address in text section.  */
+  BFD_RELOC_IP2K_TEXT,
+
+/* Scenix IP2K - 7-bit sp or dp offset  */
+  BFD_RELOC_IP2K_FR_OFFSET,
+
+/* Scenix VPE4K coprocessor - data/insn-space addressing  */
+  BFD_RELOC_VPE4KMATH_DATA,
+  BFD_RELOC_VPE4KMATH_INSN,
+
+/* These two relocations are used by the linker to determine which of
+the entries in a C++ virtual function table are actually used.  When
+the --gc-sections option is given, the linker will zero out the entries
+that are not used, so that the code for those functions need not be
+included in the output.
+
+VTABLE_INHERIT is a zero-space relocation used to describe to the
+linker the inheritance tree of a C++ virtual function table.  The
+relocation's symbol should be the parent class' vtable, and the
+relocation should be located at the child vtable.
+
+VTABLE_ENTRY is a zero-space relocation that describes the use of a
+virtual function table entry.  The reloc's symbol should refer to the
+table of the class mentioned in the code.  Off of that base, an offset
+describes the entry that is being used.  For Rela hosts, this offset
+is stored in the reloc's addend.  For Rel hosts, we are forced to put
+this offset in the reloc's section offset.  */
+  BFD_RELOC_VTABLE_INHERIT,
+  BFD_RELOC_VTABLE_ENTRY,
+
+/* Intel IA64 Relocations.  */
+  BFD_RELOC_IA64_IMM14,
+  BFD_RELOC_IA64_IMM22,
+  BFD_RELOC_IA64_IMM64,
+  BFD_RELOC_IA64_DIR32MSB,
+  BFD_RELOC_IA64_DIR32LSB,
+  BFD_RELOC_IA64_DIR64MSB,
+  BFD_RELOC_IA64_DIR64LSB,
+  BFD_RELOC_IA64_GPREL22,
+  BFD_RELOC_IA64_GPREL64I,
+  BFD_RELOC_IA64_GPREL32MSB,
+  BFD_RELOC_IA64_GPREL32LSB,
+  BFD_RELOC_IA64_GPREL64MSB,
+  BFD_RELOC_IA64_GPREL64LSB,
+  BFD_RELOC_IA64_LTOFF22,
+  BFD_RELOC_IA64_LTOFF64I,
+  BFD_RELOC_IA64_PLTOFF22,
+  BFD_RELOC_IA64_PLTOFF64I,
+  BFD_RELOC_IA64_PLTOFF64MSB,
+  BFD_RELOC_IA64_PLTOFF64LSB,
+  BFD_RELOC_IA64_FPTR64I,
+  BFD_RELOC_IA64_FPTR32MSB,
+  BFD_RELOC_IA64_FPTR32LSB,
+  BFD_RELOC_IA64_FPTR64MSB,
+  BFD_RELOC_IA64_FPTR64LSB,
+  BFD_RELOC_IA64_PCREL21B,
+  BFD_RELOC_IA64_PCREL21BI,
+  BFD_RELOC_IA64_PCREL21M,
+  BFD_RELOC_IA64_PCREL21F,
+  BFD_RELOC_IA64_PCREL22,
+  BFD_RELOC_IA64_PCREL60B,
+  BFD_RELOC_IA64_PCREL64I,
+  BFD_RELOC_IA64_PCREL32MSB,
+  BFD_RELOC_IA64_PCREL32LSB,
+  BFD_RELOC_IA64_PCREL64MSB,
+  BFD_RELOC_IA64_PCREL64LSB,
+  BFD_RELOC_IA64_LTOFF_FPTR22,
+  BFD_RELOC_IA64_LTOFF_FPTR64I,
+  BFD_RELOC_IA64_LTOFF_FPTR32MSB,
+  BFD_RELOC_IA64_LTOFF_FPTR32LSB,
+  BFD_RELOC_IA64_LTOFF_FPTR64MSB,
+  BFD_RELOC_IA64_LTOFF_FPTR64LSB,
+  BFD_RELOC_IA64_SEGREL32MSB,
+  BFD_RELOC_IA64_SEGREL32LSB,
+  BFD_RELOC_IA64_SEGREL64MSB,
+  BFD_RELOC_IA64_SEGREL64LSB,
+  BFD_RELOC_IA64_SECREL32MSB,
+  BFD_RELOC_IA64_SECREL32LSB,
+  BFD_RELOC_IA64_SECREL64MSB,
+  BFD_RELOC_IA64_SECREL64LSB,
+  BFD_RELOC_IA64_REL32MSB,
+  BFD_RELOC_IA64_REL32LSB,
+  BFD_RELOC_IA64_REL64MSB,
+  BFD_RELOC_IA64_REL64LSB,
+  BFD_RELOC_IA64_LTV32MSB,
+  BFD_RELOC_IA64_LTV32LSB,
+  BFD_RELOC_IA64_LTV64MSB,
+  BFD_RELOC_IA64_LTV64LSB,
+  BFD_RELOC_IA64_IPLTMSB,
+  BFD_RELOC_IA64_IPLTLSB,
+  BFD_RELOC_IA64_COPY,
+  BFD_RELOC_IA64_LTOFF22X,
+  BFD_RELOC_IA64_LDXMOV,
+  BFD_RELOC_IA64_TPREL14,
+  BFD_RELOC_IA64_TPREL22,
+  BFD_RELOC_IA64_TPREL64I,
+  BFD_RELOC_IA64_TPREL64MSB,
+  BFD_RELOC_IA64_TPREL64LSB,
+  BFD_RELOC_IA64_LTOFF_TPREL22,
+  BFD_RELOC_IA64_DTPMOD64MSB,
+  BFD_RELOC_IA64_DTPMOD64LSB,
+  BFD_RELOC_IA64_LTOFF_DTPMOD22,
+  BFD_RELOC_IA64_DTPREL14,
+  BFD_RELOC_IA64_DTPREL22,
+  BFD_RELOC_IA64_DTPREL64I,
+  BFD_RELOC_IA64_DTPREL32MSB,
+  BFD_RELOC_IA64_DTPREL32LSB,
+  BFD_RELOC_IA64_DTPREL64MSB,
+  BFD_RELOC_IA64_DTPREL64LSB,
+  BFD_RELOC_IA64_LTOFF_DTPREL22,
+
+/* Motorola 68HC11 reloc.
+This is the 8 bit high part of an absolute address.  */
+  BFD_RELOC_M68HC11_HI8,
+
+/* Motorola 68HC11 reloc.
+This is the 8 bit low part of an absolute address.  */
+  BFD_RELOC_M68HC11_LO8,
+
+/* Motorola 68HC11 reloc.
+This is the 3 bit of a value.  */
+  BFD_RELOC_M68HC11_3B,
+
+/* Motorola 68HC11 reloc.
+This reloc marks the beginning of a jump/call instruction.
+It is used for linker relaxation to correctly identify beginning
+of instruction and change some branches to use PC-relative
+addressing mode.  */
+  BFD_RELOC_M68HC11_RL_JUMP,
+
+/* Motorola 68HC11 reloc.
+This reloc marks a group of several instructions that gcc generates
+and for which the linker relaxation pass can modify and/or remove
+some of them.  */
+  BFD_RELOC_M68HC11_RL_GROUP,
+
+/* Motorola 68HC11 reloc.
+This is the 16-bit lower part of an address.  It is used for 'call'
+instruction to specify the symbol address without any special
+transformation (due to memory bank window).  */
+  BFD_RELOC_M68HC11_LO16,
+
+/* Motorola 68HC11 reloc.
+This is a 8-bit reloc that specifies the page number of an address.
+It is used by 'call' instruction to specify the page number of
+the symbol.  */
+  BFD_RELOC_M68HC11_PAGE,
+
+/* Motorola 68HC11 reloc.
+This is a 24-bit reloc that represents the address with a 16-bit
+value and a 8-bit page number.  The symbol address is transformed
+to follow the 16K memory bank of 68HC12 (seen as mapped in the window).  */
+  BFD_RELOC_M68HC11_24,
+
+/* Motorola 68HC12 reloc.
+This is the 5 bits of a value.  */
+  BFD_RELOC_M68HC12_5B,
+
+/* NS CR16C Relocations.  */
+  BFD_RELOC_16C_NUM08,
+  BFD_RELOC_16C_NUM08_C,
+  BFD_RELOC_16C_NUM16,
+  BFD_RELOC_16C_NUM16_C,
+  BFD_RELOC_16C_NUM32,
+  BFD_RELOC_16C_NUM32_C,
+  BFD_RELOC_16C_DISP04,
+  BFD_RELOC_16C_DISP04_C,
+  BFD_RELOC_16C_DISP08,
+  BFD_RELOC_16C_DISP08_C,
+  BFD_RELOC_16C_DISP16,
+  BFD_RELOC_16C_DISP16_C,
+  BFD_RELOC_16C_DISP24,
+  BFD_RELOC_16C_DISP24_C,
+  BFD_RELOC_16C_DISP24a,
+  BFD_RELOC_16C_DISP24a_C,
+  BFD_RELOC_16C_REG04,
+  BFD_RELOC_16C_REG04_C,
+  BFD_RELOC_16C_REG04a,
+  BFD_RELOC_16C_REG04a_C,
+  BFD_RELOC_16C_REG14,
+  BFD_RELOC_16C_REG14_C,
+  BFD_RELOC_16C_REG16,
+  BFD_RELOC_16C_REG16_C,
+  BFD_RELOC_16C_REG20,
+  BFD_RELOC_16C_REG20_C,
+  BFD_RELOC_16C_ABS20,
+  BFD_RELOC_16C_ABS20_C,
+  BFD_RELOC_16C_ABS24,
+  BFD_RELOC_16C_ABS24_C,
+  BFD_RELOC_16C_IMM04,
+  BFD_RELOC_16C_IMM04_C,
+  BFD_RELOC_16C_IMM16,
+  BFD_RELOC_16C_IMM16_C,
+  BFD_RELOC_16C_IMM20,
+  BFD_RELOC_16C_IMM20_C,
+  BFD_RELOC_16C_IMM24,
+  BFD_RELOC_16C_IMM24_C,
+  BFD_RELOC_16C_IMM32,
+  BFD_RELOC_16C_IMM32_C,
+
+/* NS CR16 Relocations.  */
+  BFD_RELOC_CR16_NUM8,
+  BFD_RELOC_CR16_NUM16,
+  BFD_RELOC_CR16_NUM32,
+  BFD_RELOC_CR16_NUM32a,
+  BFD_RELOC_CR16_REGREL0,
+  BFD_RELOC_CR16_REGREL4,
+  BFD_RELOC_CR16_REGREL4a,
+  BFD_RELOC_CR16_REGREL14,
+  BFD_RELOC_CR16_REGREL14a,
+  BFD_RELOC_CR16_REGREL16,
+  BFD_RELOC_CR16_REGREL20,
+  BFD_RELOC_CR16_REGREL20a,
+  BFD_RELOC_CR16_ABS20,
+  BFD_RELOC_CR16_ABS24,
+  BFD_RELOC_CR16_IMM4,
+  BFD_RELOC_CR16_IMM8,
+  BFD_RELOC_CR16_IMM16,
+  BFD_RELOC_CR16_IMM20,
+  BFD_RELOC_CR16_IMM24,
+  BFD_RELOC_CR16_IMM32,
+  BFD_RELOC_CR16_IMM32a,
+  BFD_RELOC_CR16_DISP4,
+  BFD_RELOC_CR16_DISP8,
+  BFD_RELOC_CR16_DISP16,
+  BFD_RELOC_CR16_DISP20,
+  BFD_RELOC_CR16_DISP24,
+  BFD_RELOC_CR16_DISP24a,
+  BFD_RELOC_CR16_SWITCH8,
+  BFD_RELOC_CR16_SWITCH16,
+  BFD_RELOC_CR16_SWITCH32,
+  BFD_RELOC_CR16_GOT_REGREL20,
+  BFD_RELOC_CR16_GOTC_REGREL20,
+  BFD_RELOC_CR16_GLOB_DAT,
+
+/* NS CRX Relocations.  */
+  BFD_RELOC_CRX_REL4,
+  BFD_RELOC_CRX_REL8,
+  BFD_RELOC_CRX_REL8_CMP,
+  BFD_RELOC_CRX_REL16,
+  BFD_RELOC_CRX_REL24,
+  BFD_RELOC_CRX_REL32,
+  BFD_RELOC_CRX_REGREL12,
+  BFD_RELOC_CRX_REGREL22,
+  BFD_RELOC_CRX_REGREL28,
+  BFD_RELOC_CRX_REGREL32,
+  BFD_RELOC_CRX_ABS16,
+  BFD_RELOC_CRX_ABS32,
+  BFD_RELOC_CRX_NUM8,
+  BFD_RELOC_CRX_NUM16,
+  BFD_RELOC_CRX_NUM32,
+  BFD_RELOC_CRX_IMM16,
+  BFD_RELOC_CRX_IMM32,
+  BFD_RELOC_CRX_SWITCH8,
+  BFD_RELOC_CRX_SWITCH16,
+  BFD_RELOC_CRX_SWITCH32,
+
+/* These relocs are only used within the CRIS assembler.  They are not
+(at present) written to any object files.  */
+  BFD_RELOC_CRIS_BDISP8,
+  BFD_RELOC_CRIS_UNSIGNED_5,
+  BFD_RELOC_CRIS_SIGNED_6,
+  BFD_RELOC_CRIS_UNSIGNED_6,
+  BFD_RELOC_CRIS_SIGNED_8,
+  BFD_RELOC_CRIS_UNSIGNED_8,
+  BFD_RELOC_CRIS_SIGNED_16,
+  BFD_RELOC_CRIS_UNSIGNED_16,
+  BFD_RELOC_CRIS_LAPCQ_OFFSET,
+  BFD_RELOC_CRIS_UNSIGNED_4,
+
+/* Relocs used in ELF shared libraries for CRIS.  */
+  BFD_RELOC_CRIS_COPY,
+  BFD_RELOC_CRIS_GLOB_DAT,
+  BFD_RELOC_CRIS_JUMP_SLOT,
+  BFD_RELOC_CRIS_RELATIVE,
+
+/* 32-bit offset to symbol-entry within GOT.  */
+  BFD_RELOC_CRIS_32_GOT,
+
+/* 16-bit offset to symbol-entry within GOT.  */
+  BFD_RELOC_CRIS_16_GOT,
+
+/* 32-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_CRIS_32_GOTPLT,
+
+/* 16-bit offset to symbol-entry within GOT, with PLT handling.  */
+  BFD_RELOC_CRIS_16_GOTPLT,
+
+/* 32-bit offset to symbol, relative to GOT.  */
+  BFD_RELOC_CRIS_32_GOTREL,
+
+/* 32-bit offset to symbol with PLT entry, relative to GOT.  */
+  BFD_RELOC_CRIS_32_PLT_GOTREL,
+
+/* 32-bit offset to symbol with PLT entry, relative to this relocation.  */
+  BFD_RELOC_CRIS_32_PLT_PCREL,
+
+/* Relocs used in TLS code for CRIS.  */
+  BFD_RELOC_CRIS_32_GOT_GD,
+  BFD_RELOC_CRIS_16_GOT_GD,
+  BFD_RELOC_CRIS_32_GD,
+  BFD_RELOC_CRIS_DTP,
+  BFD_RELOC_CRIS_32_DTPREL,
+  BFD_RELOC_CRIS_16_DTPREL,
+  BFD_RELOC_CRIS_32_GOT_TPREL,
+  BFD_RELOC_CRIS_16_GOT_TPREL,
+  BFD_RELOC_CRIS_32_TPREL,
+  BFD_RELOC_CRIS_16_TPREL,
+  BFD_RELOC_CRIS_DTPMOD,
+  BFD_RELOC_CRIS_32_IE,
+
+/* Intel i860 Relocations.  */
+  BFD_RELOC_860_COPY,
+  BFD_RELOC_860_GLOB_DAT,
+  BFD_RELOC_860_JUMP_SLOT,
+  BFD_RELOC_860_RELATIVE,
+  BFD_RELOC_860_PC26,
+  BFD_RELOC_860_PLT26,
+  BFD_RELOC_860_PC16,
+  BFD_RELOC_860_LOW0,
+  BFD_RELOC_860_SPLIT0,
+  BFD_RELOC_860_LOW1,
+  BFD_RELOC_860_SPLIT1,
+  BFD_RELOC_860_LOW2,
+  BFD_RELOC_860_SPLIT2,
+  BFD_RELOC_860_LOW3,
+  BFD_RELOC_860_LOGOT0,
+  BFD_RELOC_860_SPGOT0,
+  BFD_RELOC_860_LOGOT1,
+  BFD_RELOC_860_SPGOT1,
+  BFD_RELOC_860_LOGOTOFF0,
+  BFD_RELOC_860_SPGOTOFF0,
+  BFD_RELOC_860_LOGOTOFF1,
+  BFD_RELOC_860_SPGOTOFF1,
+  BFD_RELOC_860_LOGOTOFF2,
+  BFD_RELOC_860_LOGOTOFF3,
+  BFD_RELOC_860_LOPC,
+  BFD_RELOC_860_HIGHADJ,
+  BFD_RELOC_860_HAGOT,
+  BFD_RELOC_860_HAGOTOFF,
+  BFD_RELOC_860_HAPC,
+  BFD_RELOC_860_HIGH,
+  BFD_RELOC_860_HIGOT,
+  BFD_RELOC_860_HIGOTOFF,
+
+/* OpenRISC Relocations.  */
+  BFD_RELOC_OPENRISC_ABS_26,
+  BFD_RELOC_OPENRISC_REL_26,
+
+/* H8 elf Relocations.  */
+  BFD_RELOC_H8_DIR16A8,
+  BFD_RELOC_H8_DIR16R8,
+  BFD_RELOC_H8_DIR24A8,
+  BFD_RELOC_H8_DIR24R8,
+  BFD_RELOC_H8_DIR32A16,
+
+/* Sony Xstormy16 Relocations.  */
+  BFD_RELOC_XSTORMY16_REL_12,
+  BFD_RELOC_XSTORMY16_12,
+  BFD_RELOC_XSTORMY16_24,
+  BFD_RELOC_XSTORMY16_FPTR16,
+
+/* Self-describing complex relocations.  */
+  BFD_RELOC_RELC,
+
+
+/* Infineon Relocations.  */
+  BFD_RELOC_XC16X_PAG,
+  BFD_RELOC_XC16X_POF,
+  BFD_RELOC_XC16X_SEG,
+  BFD_RELOC_XC16X_SOF,
+
+/* Relocations used by VAX ELF.  */
+  BFD_RELOC_VAX_GLOB_DAT,
+  BFD_RELOC_VAX_JMP_SLOT,
+  BFD_RELOC_VAX_RELATIVE,
+
+/* Morpho MT - 16 bit immediate relocation.  */
+  BFD_RELOC_MT_PC16,
+
+/* Morpho MT - Hi 16 bits of an address.  */
+  BFD_RELOC_MT_HI16,
+
+/* Morpho MT - Low 16 bits of an address.  */
+  BFD_RELOC_MT_LO16,
+
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
+  BFD_RELOC_MT_GNU_VTINHERIT,
+
+/* Morpho MT - Used to tell the linker which vtable entries are used.  */
+  BFD_RELOC_MT_GNU_VTENTRY,
+
+/* Morpho MT - 8 bit immediate relocation.  */
+  BFD_RELOC_MT_PCINSN8,
+
+/* msp430 specific relocation codes  */
+  BFD_RELOC_MSP430_10_PCREL,
+  BFD_RELOC_MSP430_16_PCREL,
+  BFD_RELOC_MSP430_16,
+  BFD_RELOC_MSP430_16_PCREL_BYTE,
+  BFD_RELOC_MSP430_16_BYTE,
+  BFD_RELOC_MSP430_2X_PCREL,
+  BFD_RELOC_MSP430_RL_PCREL,
+
+/* IQ2000 Relocations.  */
+  BFD_RELOC_IQ2000_OFFSET_16,
+  BFD_RELOC_IQ2000_OFFSET_21,
+  BFD_RELOC_IQ2000_UHI16,
+
+/* Special Xtensa relocation used only by PLT entries in ELF shared
+objects to indicate that the runtime linker should set the value
+to one of its own internal functions or data structures.  */
+  BFD_RELOC_XTENSA_RTLD,
+
+/* Xtensa relocations for ELF shared objects.  */
+  BFD_RELOC_XTENSA_GLOB_DAT,
+  BFD_RELOC_XTENSA_JMP_SLOT,
+  BFD_RELOC_XTENSA_RELATIVE,
+
+/* Xtensa relocation used in ELF object files for symbols that may require
+PLT entries.  Otherwise, this is just a generic 32-bit relocation.  */
+  BFD_RELOC_XTENSA_PLT,
+
+/* Xtensa relocations to mark the difference of two local symbols.
+These are only needed to support linker relaxation and can be ignored
+when not relaxing.  The field is set to the value of the difference
+assuming no relaxation.  The relocation encodes the position of the
+first symbol so the linker can determine whether to adjust the field
+value.  */
+  BFD_RELOC_XTENSA_DIFF8,
+  BFD_RELOC_XTENSA_DIFF16,
+  BFD_RELOC_XTENSA_DIFF32,
+
+/* Generic Xtensa relocations for instruction operands.  Only the slot
+number is encoded in the relocation.  The relocation applies to the
+last PC-relative immediate operand, or if there are no PC-relative
+immediates, to the last immediate operand.  */
+  BFD_RELOC_XTENSA_SLOT0_OP,
+  BFD_RELOC_XTENSA_SLOT1_OP,
+  BFD_RELOC_XTENSA_SLOT2_OP,
+  BFD_RELOC_XTENSA_SLOT3_OP,
+  BFD_RELOC_XTENSA_SLOT4_OP,
+  BFD_RELOC_XTENSA_SLOT5_OP,
+  BFD_RELOC_XTENSA_SLOT6_OP,
+  BFD_RELOC_XTENSA_SLOT7_OP,
+  BFD_RELOC_XTENSA_SLOT8_OP,
+  BFD_RELOC_XTENSA_SLOT9_OP,
+  BFD_RELOC_XTENSA_SLOT10_OP,
+  BFD_RELOC_XTENSA_SLOT11_OP,
+  BFD_RELOC_XTENSA_SLOT12_OP,
+  BFD_RELOC_XTENSA_SLOT13_OP,
+  BFD_RELOC_XTENSA_SLOT14_OP,
+
+/* Alternate Xtensa relocations.  Only the slot is encoded in the
+relocation.  The meaning of these relocations is opcode-specific.  */
+  BFD_RELOC_XTENSA_SLOT0_ALT,
+  BFD_RELOC_XTENSA_SLOT1_ALT,
+  BFD_RELOC_XTENSA_SLOT2_ALT,
+  BFD_RELOC_XTENSA_SLOT3_ALT,
+  BFD_RELOC_XTENSA_SLOT4_ALT,
+  BFD_RELOC_XTENSA_SLOT5_ALT,
+  BFD_RELOC_XTENSA_SLOT6_ALT,
+  BFD_RELOC_XTENSA_SLOT7_ALT,
+  BFD_RELOC_XTENSA_SLOT8_ALT,
+  BFD_RELOC_XTENSA_SLOT9_ALT,
+  BFD_RELOC_XTENSA_SLOT10_ALT,
+  BFD_RELOC_XTENSA_SLOT11_ALT,
+  BFD_RELOC_XTENSA_SLOT12_ALT,
+  BFD_RELOC_XTENSA_SLOT13_ALT,
+  BFD_RELOC_XTENSA_SLOT14_ALT,
+
+/* Xtensa relocations for backward compatibility.  These have all been
+replaced by BFD_RELOC_XTENSA_SLOT0_OP.  */
+  BFD_RELOC_XTENSA_OP0,
+  BFD_RELOC_XTENSA_OP1,
+  BFD_RELOC_XTENSA_OP2,
+
+/* Xtensa relocation to mark that the assembler expanded the
+instructions from an original target.  The expansion size is
+encoded in the reloc size.  */
+  BFD_RELOC_XTENSA_ASM_EXPAND,
+
+/* Xtensa relocation to mark that the linker should simplify
+assembler-expanded instructions.  This is commonly used
+internally by the linker after analysis of a
+BFD_RELOC_XTENSA_ASM_EXPAND.  */
+  BFD_RELOC_XTENSA_ASM_SIMPLIFY,
+
+/* Xtensa TLS relocations.  */
+  BFD_RELOC_XTENSA_TLSDESC_FN,
+  BFD_RELOC_XTENSA_TLSDESC_ARG,
+  BFD_RELOC_XTENSA_TLS_DTPOFF,
+  BFD_RELOC_XTENSA_TLS_TPOFF,
+  BFD_RELOC_XTENSA_TLS_FUNC,
+  BFD_RELOC_XTENSA_TLS_ARG,
+  BFD_RELOC_XTENSA_TLS_CALL,
+
+/* 8 bit signed offset in (ix+d) or (iy+d).  */
+  BFD_RELOC_Z80_DISP8,
+
+/* DJNZ offset.  */
+  BFD_RELOC_Z8K_DISP7,
+
+/* CALR offset.  */
+  BFD_RELOC_Z8K_CALLR,
+
+/* 4 bit value.  */
+  BFD_RELOC_Z8K_IMM4L,
+
+/* Lattice Mico32 relocations.  */
+  BFD_RELOC_LM32_CALL,
+  BFD_RELOC_LM32_BRANCH,
+  BFD_RELOC_LM32_16_GOT,
+  BFD_RELOC_LM32_GOTOFF_HI16,
+  BFD_RELOC_LM32_GOTOFF_LO16,
+  BFD_RELOC_LM32_COPY,
+  BFD_RELOC_LM32_GLOB_DAT,
+  BFD_RELOC_LM32_JMP_SLOT,
+  BFD_RELOC_LM32_RELATIVE,
+
+/* Difference between two section addreses.  Must be followed by a
+BFD_RELOC_MACH_O_PAIR.  */
+  BFD_RELOC_MACH_O_SECTDIFF,
+
+/* Pair of relocation.  Contains the first symbol.  */
+  BFD_RELOC_MACH_O_PAIR,
+
+/* PCREL relocations.  They are marked as branch to create PLT entry if
+required.  */
+  BFD_RELOC_MACH_O_X86_64_BRANCH32,
+  BFD_RELOC_MACH_O_X86_64_BRANCH8,
+
+/* Used when referencing a GOT entry.  */
+  BFD_RELOC_MACH_O_X86_64_GOT,
+
+/* Used when loading a GOT entry with movq.  It is specially marked so that
+the linker could optimize the movq to a leaq if possible.  */
+  BFD_RELOC_MACH_O_X86_64_GOT_LOAD,
+
+/* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR32,
+
+/* Symbol will be substracted.  Must be followed by a BFD_RELOC_64.  */
+  BFD_RELOC_MACH_O_X86_64_SUBTRACTOR64,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -1 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_1,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -2 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_2,
+
+/* Same as BFD_RELOC_32_PCREL but with an implicit -4 addend.  */
+  BFD_RELOC_MACH_O_X86_64_PCREL32_4,
+
+/* This is a 32 bit reloc for the microblaze that stores the 
+low 16 bits of a value  */
+  BFD_RELOC_MICROBLAZE_32_LO,
+
+/* This is a 32 bit pc-relative reloc for the microblaze that 
+stores the low 16 bits of a value  */
+  BFD_RELOC_MICROBLAZE_32_LO_PCREL,
+
+/* This is a 32 bit reloc for the microblaze that stores a 
+value relative to the read-only small data area anchor  */
+  BFD_RELOC_MICROBLAZE_32_ROSDA,
+
+/* This is a 32 bit reloc for the microblaze that stores a 
+value relative to the read-write small data area anchor  */
+  BFD_RELOC_MICROBLAZE_32_RWSDA,
+
+/* This is a 32 bit reloc for the microblaze to handle 
+expressions of the form "Symbol Op Symbol"  */
+  BFD_RELOC_MICROBLAZE_32_SYM_OP_SYM,
+
+/* This is a 64 bit reloc that stores the 32 bit pc relative 
+value in two words (with an imm instruction).  No relocation is 
+done here - only used for relaxing  */
+  BFD_RELOC_MICROBLAZE_64_NONE,
+
+/* This is a 64 bit reloc that stores the 32 bit pc relative 
+value in two words (with an imm instruction).  The relocation is
+PC-relative GOT offset  */
+  BFD_RELOC_MICROBLAZE_64_GOTPC,
+
+/* This is a 64 bit reloc that stores the 32 bit pc relative 
+value in two words (with an imm instruction).  The relocation is
+GOT offset  */
+  BFD_RELOC_MICROBLAZE_64_GOT,
+
+/* This is a 64 bit reloc that stores the 32 bit pc relative 
+value in two words (with an imm instruction).  The relocation is
+PC-relative offset into PLT  */
+  BFD_RELOC_MICROBLAZE_64_PLT,
+
+/* This is a 64 bit reloc that stores the 32 bit GOT relative 
+value in two words (with an imm instruction).  The relocation is
+relative offset from _GLOBAL_OFFSET_TABLE_  */
+  BFD_RELOC_MICROBLAZE_64_GOTOFF,
+
+/* This is a 32 bit reloc that stores the 32 bit GOT relative 
+value in a word.  The relocation is relative offset from  */
+  BFD_RELOC_MICROBLAZE_32_GOTOFF,
+
+/* This is used to tell the dynamic linker to copy the value out of
+the dynamic object into the runtime process image.  */
+  BFD_RELOC_MICROBLAZE_COPY,
+  BFD_RELOC_UNUSED };
+typedef enum bfd_reloc_code_real bfd_reloc_code_real_type;
+reloc_howto_type *bfd_reloc_type_lookup
+   (bfd *abfd, bfd_reloc_code_real_type code);
+reloc_howto_type *bfd_reloc_name_lookup
+   (bfd *abfd, const char *reloc_name);
+
+const char *bfd_get_reloc_code_name (bfd_reloc_code_real_type code);
+
+/* Extracted from syms.c.  */
+
+typedef struct bfd_symbol
+{
+  /* A pointer to the BFD which owns the symbol. This information
+     is necessary so that a back end can work out what additional
+     information (invisible to the application writer) is carried
+     with the symbol.
+
+     This field is *almost* redundant, since you can use section->owner
+     instead, except that some symbols point to the global sections
+     bfd_{abs,com,und}_section.  This could be fixed by making
+     these globals be per-bfd (or per-target-flavor).  FIXME.  */
+  struct bfd *the_bfd; /* Use bfd_asymbol_bfd(sym) to access this field.  */
+
+  /* The text of the symbol. The name is left alone, and not copied; the
+     application may not alter it.  */
+  const char *name;
+
+  /* The value of the symbol.  This really should be a union of a
+     numeric value with a pointer, since some flags indicate that
+     a pointer to another symbol is stored here.  */
+  symvalue value;
+
+  /* Attributes of a symbol.  */
+#define BSF_NO_FLAGS           0x00
+
+  /* The symbol has local scope; <<static>> in <<C>>. The value
+     is the offset into the section of the data.  */
+#define BSF_LOCAL              (1 << 0)
+
+  /* The symbol has global scope; initialized data in <<C>>. The
+     value is the offset into the section of the data.  */
+#define BSF_GLOBAL             (1 << 1)
+
+  /* The symbol has global scope and is exported. The value is
+     the offset into the section of the data.  */
+#define BSF_EXPORT     BSF_GLOBAL /* No real difference.  */
+
+  /* A normal C symbol would be one of:
+     <<BSF_LOCAL>>, <<BSF_COMMON>>,  <<BSF_UNDEFINED>> or
+     <<BSF_GLOBAL>>.  */
+
+  /* The symbol is a debugging record. The value has an arbitrary
+     meaning, unless BSF_DEBUGGING_RELOC is also set.  */
+#define BSF_DEBUGGING          (1 << 2)
+
+  /* The symbol denotes a function entry point.  Used in ELF,
+     perhaps others someday.  */
+#define BSF_FUNCTION           (1 << 3)
+
+  /* Used by the linker.  */
+#define BSF_KEEP               (1 << 5)
+#define BSF_KEEP_G             (1 << 6)
+
+  /* A weak global symbol, overridable without warnings by
+     a regular global symbol of the same name.  */
+#define BSF_WEAK               (1 << 7)
+
+  /* This symbol was created to point to a section, e.g. ELF's
+     STT_SECTION symbols.  */
+#define BSF_SECTION_SYM        (1 << 8)
+
+  /* The symbol used to be a common symbol, but now it is
+     allocated.  */
+#define BSF_OLD_COMMON         (1 << 9)
+
+  /* In some files the type of a symbol sometimes alters its
+     location in an output file - ie in coff a <<ISFCN>> symbol
+     which is also <<C_EXT>> symbol appears where it was
+     declared and not at the end of a section.  This bit is set
+     by the target BFD part to convey this information.  */
+#define BSF_NOT_AT_END         (1 << 10)
+
+  /* Signal that the symbol is the label of constructor section.  */
+#define BSF_CONSTRUCTOR        (1 << 11)
+
+  /* Signal that the symbol is a warning symbol.  The name is a
+     warning.  The name of the next symbol is the one to warn about;
+     if a reference is made to a symbol with the same name as the next
+     symbol, a warning is issued by the linker.  */
+#define BSF_WARNING            (1 << 12)
+
+  /* Signal that the symbol is indirect.  This symbol is an indirect
+     pointer to the symbol with the same name as the next symbol.  */
+#define BSF_INDIRECT           (1 << 13)
+
+  /* BSF_FILE marks symbols that contain a file name.  This is used
+     for ELF STT_FILE symbols.  */
+#define BSF_FILE               (1 << 14)
+
+  /* Symbol is from dynamic linking information.  */
+#define BSF_DYNAMIC            (1 << 15)
+
+  /* The symbol denotes a data object.  Used in ELF, and perhaps
+     others someday.  */
+#define BSF_OBJECT             (1 << 16)
+
+  /* This symbol is a debugging symbol.  The value is the offset
+     into the section of the data.  BSF_DEBUGGING should be set
+     as well.  */
+#define BSF_DEBUGGING_RELOC    (1 << 17)
+
+  /* This symbol is thread local.  Used in ELF.  */
+#define BSF_THREAD_LOCAL       (1 << 18)
+
+  /* This symbol represents a complex relocation expression,
+     with the expression tree serialized in the symbol name.  */
+#define BSF_RELC               (1 << 19)
+
+  /* This symbol represents a signed complex relocation expression,
+     with the expression tree serialized in the symbol name.  */
+#define BSF_SRELC              (1 << 20)
+
+  /* This symbol was created by bfd_get_synthetic_symtab.  */
+#define BSF_SYNTHETIC          (1 << 21)
+
+  /* This symbol is an indirect code object.  Unrelated to BSF_INDIRECT.
+     The dynamic linker will compute the value of this symbol by
+     calling the function that it points to.  BSF_FUNCTION must
+     also be also set.  */
+#define BSF_GNU_INDIRECT_FUNCTION (1 << 22)
+  /* This symbol is a globally unique data object.  The dynamic linker
+     will make sure that in the entire process there is just one symbol
+     with this name and type in use.  BSF_OBJECT must also be set.  */
+#define BSF_GNU_UNIQUE         (1 << 23)
+
+  flagword flags;
+
+  /* A pointer to the section to which this symbol is
+     relative.  This will always be non NULL, there are special
+     sections for undefined and absolute symbols.  */
+  struct bfd_section *section;
+
+  /* Back end special data.  */
+  union
+    {
+      void *p;
+      bfd_vma i;
+    }
+  udata;
+}
+asymbol;
+
+#define bfd_get_symtab_upper_bound(abfd) \
+     BFD_SEND (abfd, _bfd_get_symtab_upper_bound, (abfd))
+
+bfd_boolean bfd_is_local_label (bfd *abfd, asymbol *sym);
+
+bfd_boolean bfd_is_local_label_name (bfd *abfd, const char *name);
+
+#define bfd_is_local_label_name(abfd, name) \
+  BFD_SEND (abfd, _bfd_is_local_label_name, (abfd, name))
+
+bfd_boolean bfd_is_target_special_symbol (bfd *abfd, asymbol *sym);
+
+#define bfd_is_target_special_symbol(abfd, sym) \
+  BFD_SEND (abfd, _bfd_is_target_special_symbol, (abfd, sym))
+
+#define bfd_canonicalize_symtab(abfd, location) \
+  BFD_SEND (abfd, _bfd_canonicalize_symtab, (abfd, location))
+
+bfd_boolean bfd_set_symtab
+   (bfd *abfd, asymbol **location, unsigned int count);
+
+void bfd_print_symbol_vandf (bfd *abfd, void *file, asymbol *symbol);
+
+#define bfd_make_empty_symbol(abfd) \
+  BFD_SEND (abfd, _bfd_make_empty_symbol, (abfd))
+
+asymbol *_bfd_generic_make_empty_symbol (bfd *);
+
+#define bfd_make_debug_symbol(abfd,ptr,size) \
+  BFD_SEND (abfd, _bfd_make_debug_symbol, (abfd, ptr, size))
+
+int bfd_decode_symclass (asymbol *symbol);
+
+bfd_boolean bfd_is_undefined_symclass (int symclass);
+
+void bfd_symbol_info (asymbol *symbol, symbol_info *ret);
+
+bfd_boolean bfd_copy_private_symbol_data
+   (bfd *ibfd, asymbol *isym, bfd *obfd, asymbol *osym);
+
+#define bfd_copy_private_symbol_data(ibfd, isymbol, obfd, osymbol) \
+  BFD_SEND (obfd, _bfd_copy_private_symbol_data, \
+            (ibfd, isymbol, obfd, osymbol))
+
+/* Extracted from bfd.c.  */
+enum bfd_direction
+  {
+    no_direction = 0,
+    read_direction = 1,
+    write_direction = 2,
+    both_direction = 3
+  };
+
+struct bfd
+{
+  /* A unique identifier of the BFD  */
+  unsigned int id;
+
+  /* The filename the application opened the BFD with.  */
+  const char *filename;
+
+  /* A pointer to the target jump table.  */
+  const struct bfd_target *xvec;
+
+  /* The IOSTREAM, and corresponding IO vector that provide access
+     to the file backing the BFD.  */
+  void *iostream;
+  const struct bfd_iovec *iovec;
+
+  /* The caching routines use these to maintain a
+     least-recently-used list of BFDs.  */
+  struct bfd *lru_prev, *lru_next;
+
+  /* When a file is closed by the caching routines, BFD retains
+     state information on the file here...  */
+  ufile_ptr where;
+
+  /* File modified time, if mtime_set is TRUE.  */
+  long mtime;
+
+  /* Reserved for an unimplemented file locking extension.  */
+  int ifd;
+
+  /* The format which belongs to the BFD. (object, core, etc.)  */
+  bfd_format format;
+
+  /* The direction with which the BFD was opened.  */
+  enum bfd_direction direction;
+
+  /* Format_specific flags.  */
+  flagword flags;
+
+  /* Values that may appear in the flags field of a BFD.  These also
+     appear in the object_flags field of the bfd_target structure, where
+     they indicate the set of flags used by that backend (not all flags
+     are meaningful for all object file formats) (FIXME: at the moment,
+     the object_flags values have mostly just been copied from backend
+     to another, and are not necessarily correct).  */
+
+#define BFD_NO_FLAGS   0x00
+
+  /* BFD contains relocation entries.  */
+#define HAS_RELOC      0x01
+
+  /* BFD is directly executable.  */
+#define EXEC_P         0x02
+
+  /* BFD has line number information (basically used for F_LNNO in a
+     COFF header).  */
+#define HAS_LINENO     0x04
+
+  /* BFD has debugging information.  */
+#define HAS_DEBUG      0x08
+
+  /* BFD has symbols.  */
+#define HAS_SYMS       0x10
+
+  /* BFD has local symbols (basically used for F_LSYMS in a COFF
+     header).  */
+#define HAS_LOCALS     0x20
+
+  /* BFD is a dynamic object.  */
+#define DYNAMIC        0x40
+
+  /* Text section is write protected (if D_PAGED is not set, this is
+     like an a.out NMAGIC file) (the linker sets this by default, but
+     clears it for -r or -N).  */
+#define WP_TEXT        0x80
+
+  /* BFD is dynamically paged (this is like an a.out ZMAGIC file) (the
+     linker sets this by default, but clears it for -r or -n or -N).  */
+#define D_PAGED        0x100
+
+  /* BFD is relaxable (this means that bfd_relax_section may be able to
+     do something) (sometimes bfd_relax_section can do something even if
+     this is not set).  */
+#define BFD_IS_RELAXABLE 0x200
+
+  /* This may be set before writing out a BFD to request using a
+     traditional format.  For example, this is used to request that when
+     writing out an a.out object the symbols not be hashed to eliminate
+     duplicates.  */
+#define BFD_TRADITIONAL_FORMAT 0x400
+
+  /* This flag indicates that the BFD contents are actually cached
+     in memory.  If this is set, iostream points to a bfd_in_memory
+     struct.  */
+#define BFD_IN_MEMORY 0x800
+
+  /* The sections in this BFD specify a memory page.  */
+#define HAS_LOAD_PAGE 0x1000
+
+  /* This BFD has been created by the linker and doesn't correspond
+     to any input file.  */
+#define BFD_LINKER_CREATED 0x2000
+
+  /* This may be set before writing out a BFD to request that it
+     be written using values for UIDs, GIDs, timestamps, etc. that
+     will be consistent from run to run.  */
+#define BFD_DETERMINISTIC_OUTPUT 0x4000
+
+  /* Currently my_archive is tested before adding origin to
+     anything. I believe that this can become always an add of
+     origin, with origin set to 0 for non archive files.  */
+  ufile_ptr origin;
+
+  /* The origin in the archive of the proxy entry.  This will
+     normally be the same as origin, except for thin archives,
+     when it will contain the current offset of the proxy in the
+     thin archive rather than the offset of the bfd in its actual
+     container.  */
+  ufile_ptr proxy_origin;
+
+  /* A hash table for section names.  */
+  struct bfd_hash_table section_htab;
+
+  /* Pointer to linked list of sections.  */
+  struct bfd_section *sections;
+
+  /* The last section on the section list.  */
+  struct bfd_section *section_last;
+
+  /* The number of sections.  */
+  unsigned int section_count;
+
+  /* Stuff only useful for object files:
+     The start address.  */
+  bfd_vma start_address;
+
+  /* Used for input and output.  */
+  unsigned int symcount;
+
+  /* Symbol table for output BFD (with symcount entries).
+     Also used by the linker to cache input BFD symbols.  */
+  struct bfd_symbol  **outsymbols;
+
+  /* Used for slurped dynamic symbol tables.  */
+  unsigned int dynsymcount;
+
+  /* Pointer to structure which contains architecture information.  */
+  const struct bfd_arch_info *arch_info;
+
+  /* Stuff only useful for archives.  */
+  void *arelt_data;
+  struct bfd *my_archive;      /* The containing archive BFD.  */
+  struct bfd *archive_next;    /* The next BFD in the archive.  */
+  struct bfd *archive_head;    /* The first BFD in the archive.  */
+  struct bfd *nested_archives; /* List of nested archive in a flattened
+                                  thin archive.  */
+
+  /* A chain of BFD structures involved in a link.  */
+  struct bfd *link_next;
+
+  /* A field used by _bfd_generic_link_add_archive_symbols.  This will
+     be used only for archive elements.  */
+  int archive_pass;
+
+  /* Used by the back end to hold private data.  */
+  union
+    {
+      struct aout_data_struct *aout_data;
+      struct artdata *aout_ar_data;
+      struct _oasys_data *oasys_obj_data;
+      struct _oasys_ar_data *oasys_ar_data;
+      struct coff_tdata *coff_obj_data;
+      struct pe_tdata *pe_obj_data;
+      struct xcoff_tdata *xcoff_obj_data;
+      struct ecoff_tdata *ecoff_obj_data;
+      struct ieee_data_struct *ieee_data;
+      struct ieee_ar_data_struct *ieee_ar_data;
+      struct srec_data_struct *srec_data;
+      struct verilog_data_struct *verilog_data;
+      struct ihex_data_struct *ihex_data;
+      struct tekhex_data_struct *tekhex_data;
+      struct elf_obj_tdata *elf_obj_data;
+      struct nlm_obj_tdata *nlm_obj_data;
+      struct bout_data_struct *bout_data;
+      struct mmo_data_struct *mmo_data;
+      struct sun_core_struct *sun_core_data;
+      struct sco5_core_struct *sco5_core_data;
+      struct trad_core_struct *trad_core_data;
+      struct som_data_struct *som_data;
+      struct hpux_core_struct *hpux_core_data;
+      struct hppabsd_core_struct *hppabsd_core_data;
+      struct sgi_core_struct *sgi_core_data;
+      struct lynx_core_struct *lynx_core_data;
+      struct osf_core_struct *osf_core_data;
+      struct cisco_core_struct *cisco_core_data;
+      struct versados_data_struct *versados_data;
+      struct netbsd_core_struct *netbsd_core_data;
+      struct mach_o_data_struct *mach_o_data;
+      struct mach_o_fat_data_struct *mach_o_fat_data;
+      struct plugin_data_struct *plugin_data;
+      struct bfd_pef_data_struct *pef_data;
+      struct bfd_pef_xlib_data_struct *pef_xlib_data;
+      struct bfd_sym_data_struct *sym_data;
+      void *any;
+    }
+  tdata;
+
+  /* Used by the application to hold private data.  */
+  void *usrdata;
+
+  /* Where all the allocated stuff under this BFD goes.  This is a
+     struct objalloc *, but we use void * to avoid requiring the inclusion
+     of objalloc.h.  */
+  void *memory;
+
+  /* Is the file descriptor being cached?  That is, can it be closed as
+     needed, and re-opened when accessed later?  */
+  unsigned int cacheable : 1;
+
+  /* Marks whether there was a default target specified when the
+     BFD was opened. This is used to select which matching algorithm
+     to use to choose the back end.  */
+  unsigned int target_defaulted : 1;
+
+  /* ... and here: (``once'' means at least once).  */
+  unsigned int opened_once : 1;
+
+  /* Set if we have a locally maintained mtime value, rather than
+     getting it from the file each time.  */
+  unsigned int mtime_set : 1;
+
+  /* Flag set if symbols from this BFD should not be exported.  */
+  unsigned int no_export : 1;
+
+  /* Remember when output has begun, to stop strange things
+     from happening.  */
+  unsigned int output_has_begun : 1;
+
+  /* Have archive map.  */
+  unsigned int has_armap : 1;
+
+  /* Set if this is a thin archive.  */
+  unsigned int is_thin_archive : 1;
+
+  /* Set if only required symbols should be added in the link hash table for
+     this object.  Used by VMS linkers.  */
+  unsigned int selective_search : 1;
+};
+
+typedef enum bfd_error
+{
+  bfd_error_no_error = 0,
+  bfd_error_system_call,
+  bfd_error_invalid_target,
+  bfd_error_wrong_format,
+  bfd_error_wrong_object_format,
+  bfd_error_invalid_operation,
+  bfd_error_no_memory,
+  bfd_error_no_symbols,
+  bfd_error_no_armap,
+  bfd_error_no_more_archived_files,
+  bfd_error_malformed_archive,
+  bfd_error_file_not_recognized,
+  bfd_error_file_ambiguously_recognized,
+  bfd_error_no_contents,
+  bfd_error_nonrepresentable_section,
+  bfd_error_no_debug_section,
+  bfd_error_bad_value,
+  bfd_error_file_truncated,
+  bfd_error_file_too_big,
+  bfd_error_on_input,
+  bfd_error_invalid_error_code
+}
+bfd_error_type;
+
+bfd_error_type bfd_get_error (void);
+
+void bfd_set_error (bfd_error_type error_tag, ...);
+
+const char *bfd_errmsg (bfd_error_type error_tag);
+
+void bfd_perror (const char *message);
+
+typedef void (*bfd_error_handler_type) (const char *, ...);
+
+bfd_error_handler_type bfd_set_error_handler (bfd_error_handler_type);
+
+void bfd_set_error_program_name (const char *);
+
+bfd_error_handler_type bfd_get_error_handler (void);
+
+long bfd_get_reloc_upper_bound (bfd *abfd, asection *sect);
+
+long bfd_canonicalize_reloc
+   (bfd *abfd, asection *sec, arelent **loc, asymbol **syms);
+
+void bfd_set_reloc
+   (bfd *abfd, asection *sec, arelent **rel, unsigned int count);
+
+bfd_boolean bfd_set_file_flags (bfd *abfd, flagword flags);
+
+int bfd_get_arch_size (bfd *abfd);
+
+int bfd_get_sign_extend_vma (bfd *abfd);
+
+bfd_boolean bfd_set_start_address (bfd *abfd, bfd_vma vma);
+
+unsigned int bfd_get_gp_size (bfd *abfd);
+
+void bfd_set_gp_size (bfd *abfd, unsigned int i);
+
+bfd_vma bfd_scan_vma (const char *string, const char **end, int base);
+
+bfd_boolean bfd_copy_private_header_data (bfd *ibfd, bfd *obfd);
+
+#define bfd_copy_private_header_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_copy_private_header_data, \
+               (ibfd, obfd))
+bfd_boolean bfd_copy_private_bfd_data (bfd *ibfd, bfd *obfd);
+
+#define bfd_copy_private_bfd_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_copy_private_bfd_data, \
+               (ibfd, obfd))
+bfd_boolean bfd_merge_private_bfd_data (bfd *ibfd, bfd *obfd);
+
+#define bfd_merge_private_bfd_data(ibfd, obfd) \
+     BFD_SEND (obfd, _bfd_merge_private_bfd_data, \
+               (ibfd, obfd))
+bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
+
+#define bfd_set_private_flags(abfd, flags) \
+     BFD_SEND (abfd, _bfd_set_private_flags, (abfd, flags))
+#define bfd_sizeof_headers(abfd, info) \
+       BFD_SEND (abfd, _bfd_sizeof_headers, (abfd, info))
+
+#define bfd_find_nearest_line(abfd, sec, syms, off, file, func, line) \
+       BFD_SEND (abfd, _bfd_find_nearest_line, \
+                 (abfd, sec, syms, off, file, func, line))
+
+#define bfd_find_line(abfd, syms, sym, file, line) \
+       BFD_SEND (abfd, _bfd_find_line, \
+                 (abfd, syms, sym, file, line))
+
+#define bfd_find_inliner_info(abfd, file, func, line) \
+       BFD_SEND (abfd, _bfd_find_inliner_info, \
+                 (abfd, file, func, line))
+
+#define bfd_debug_info_start(abfd) \
+       BFD_SEND (abfd, _bfd_debug_info_start, (abfd))
+
+#define bfd_debug_info_end(abfd) \
+       BFD_SEND (abfd, _bfd_debug_info_end, (abfd))
+
+#define bfd_debug_info_accumulate(abfd, section) \
+       BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
+
+#define bfd_stat_arch_elt(abfd, stat) \
+       BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
+
+#define bfd_update_armap_timestamp(abfd) \
+       BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
+
+#define bfd_set_arch_mach(abfd, arch, mach)\
+       BFD_SEND ( abfd, _bfd_set_arch_mach, (abfd, arch, mach))
+
+#define bfd_relax_section(abfd, section, link_info, again) \
+       BFD_SEND (abfd, _bfd_relax_section, (abfd, section, link_info, again))
+
+#define bfd_gc_sections(abfd, link_info) \
+       BFD_SEND (abfd, _bfd_gc_sections, (abfd, link_info))
+
+#define bfd_merge_sections(abfd, link_info) \
+       BFD_SEND (abfd, _bfd_merge_sections, (abfd, link_info))
+
+#define bfd_is_group_section(abfd, sec) \
+       BFD_SEND (abfd, _bfd_is_group_section, (abfd, sec))
+
+#define bfd_discard_group(abfd, sec) \
+       BFD_SEND (abfd, _bfd_discard_group, (abfd, sec))
+
+#define bfd_link_hash_table_create(abfd) \
+       BFD_SEND (abfd, _bfd_link_hash_table_create, (abfd))
+
+#define bfd_link_hash_table_free(abfd, hash) \
+       BFD_SEND (abfd, _bfd_link_hash_table_free, (hash))
+
+#define bfd_link_add_symbols(abfd, info) \
+       BFD_SEND (abfd, _bfd_link_add_symbols, (abfd, info))
+
+#define bfd_link_just_syms(abfd, sec, info) \
+       BFD_SEND (abfd, _bfd_link_just_syms, (sec, info))
+
+#define bfd_final_link(abfd, info) \
+       BFD_SEND (abfd, _bfd_final_link, (abfd, info))
+
+#define bfd_free_cached_info(abfd) \
+       BFD_SEND (abfd, _bfd_free_cached_info, (abfd))
+
+#define bfd_get_dynamic_symtab_upper_bound(abfd) \
+       BFD_SEND (abfd, _bfd_get_dynamic_symtab_upper_bound, (abfd))
+
+#define bfd_print_private_bfd_data(abfd, file)\
+       BFD_SEND (abfd, _bfd_print_private_bfd_data, (abfd, file))
+
+#define bfd_canonicalize_dynamic_symtab(abfd, asymbols) \
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_symtab, (abfd, asymbols))
+
+#define bfd_get_synthetic_symtab(abfd, count, syms, dyncount, dynsyms, ret) \
+       BFD_SEND (abfd, _bfd_get_synthetic_symtab, (abfd, count, syms, \
+                                                   dyncount, dynsyms, ret))
+
+#define bfd_get_dynamic_reloc_upper_bound(abfd) \
+       BFD_SEND (abfd, _bfd_get_dynamic_reloc_upper_bound, (abfd))
+
+#define bfd_canonicalize_dynamic_reloc(abfd, arels, asyms) \
+       BFD_SEND (abfd, _bfd_canonicalize_dynamic_reloc, (abfd, arels, asyms))
+
+extern bfd_byte *bfd_get_relocated_section_contents
+  (bfd *, struct bfd_link_info *, struct bfd_link_order *, bfd_byte *,
+   bfd_boolean, asymbol **);
+
+bfd_boolean bfd_alt_mach_code (bfd *abfd, int alternative);
+
+struct bfd_preserve
+{
+  void *marker;
+  void *tdata;
+  flagword flags;
+  const struct bfd_arch_info *arch_info;
+  struct bfd_section *sections;
+  struct bfd_section *section_last;
+  unsigned int section_count;
+  struct bfd_hash_table section_htab;
+};
+
+bfd_boolean bfd_preserve_save (bfd *, struct bfd_preserve *);
+
+void bfd_preserve_restore (bfd *, struct bfd_preserve *);
+
+void bfd_preserve_finish (bfd *, struct bfd_preserve *);
+
+bfd_vma bfd_emul_get_maxpagesize (const char *);
+
+void bfd_emul_set_maxpagesize (const char *, bfd_vma);
+
+bfd_vma bfd_emul_get_commonpagesize (const char *);
+
+void bfd_emul_set_commonpagesize (const char *, bfd_vma);
+
+char *bfd_demangle (bfd *, const char *, int);
+
+/* Extracted from archive.c.  */
+symindex bfd_get_next_mapent
+   (bfd *abfd, symindex previous, carsym **sym);
+
+bfd_boolean bfd_set_archive_head (bfd *output, bfd *new_head);
+
+bfd *bfd_openr_next_archived_file (bfd *archive, bfd *previous);
+
+/* Extracted from corefile.c.  */
+const char *bfd_core_file_failing_command (bfd *abfd);
+
+int bfd_core_file_failing_signal (bfd *abfd);
+
+bfd_boolean core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+
+bfd_boolean generic_core_file_matches_executable_p
+   (bfd *core_bfd, bfd *exec_bfd);
+
+/* Extracted from targets.c.  */
+#define BFD_SEND(bfd, message, arglist) \
+  ((*((bfd)->xvec->message)) arglist)
+
+#ifdef DEBUG_BFD_SEND
+#undef BFD_SEND
+#define BFD_SEND(bfd, message, arglist) \
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+    ((*((bfd)->xvec->message)) arglist) : \
+    (bfd_assert (__FILE__,__LINE__), NULL))
+#endif
+#define BFD_SEND_FMT(bfd, message, arglist) \
+  (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist)
+
+#ifdef DEBUG_BFD_SEND
+#undef BFD_SEND_FMT
+#define BFD_SEND_FMT(bfd, message, arglist) \
+  (((bfd) && (bfd)->xvec && (bfd)->xvec->message) ? \
+   (((bfd)->xvec->message[(int) ((bfd)->format)]) arglist) : \
+   (bfd_assert (__FILE__,__LINE__), NULL))
+#endif
+
+enum bfd_flavour
+{
+  bfd_target_unknown_flavour,
+  bfd_target_aout_flavour,
+  bfd_target_coff_flavour,
+  bfd_target_ecoff_flavour,
+  bfd_target_xcoff_flavour,
+  bfd_target_elf_flavour,
+  bfd_target_ieee_flavour,
+  bfd_target_nlm_flavour,
+  bfd_target_oasys_flavour,
+  bfd_target_tekhex_flavour,
+  bfd_target_srec_flavour,
+  bfd_target_verilog_flavour,
+  bfd_target_ihex_flavour,
+  bfd_target_som_flavour,
+  bfd_target_os9k_flavour,
+  bfd_target_versados_flavour,
+  bfd_target_msdos_flavour,
+  bfd_target_ovax_flavour,
+  bfd_target_evax_flavour,
+  bfd_target_mmo_flavour,
+  bfd_target_mach_o_flavour,
+  bfd_target_pef_flavour,
+  bfd_target_pef_xlib_flavour,
+  bfd_target_sym_flavour
+};
+
+enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
+
+/* Forward declaration.  */
+typedef struct bfd_link_info _bfd_link_info;
+
+typedef struct bfd_target
+{
+  /* Identifies the kind of target, e.g., SunOS4, Ultrix, etc.  */
+  char *name;
+
+ /* The "flavour" of a back end is a general indication about
+    the contents of a file.  */
+  enum bfd_flavour flavour;
+
+  /* The order of bytes within the data area of a file.  */
+  enum bfd_endian byteorder;
+
+ /* The order of bytes within the header parts of a file.  */
+  enum bfd_endian header_byteorder;
+
+  /* A mask of all the flags which an executable may have set -
+     from the set <<BFD_NO_FLAGS>>, <<HAS_RELOC>>, ...<<D_PAGED>>.  */
+  flagword object_flags;
+
+ /* A mask of all the flags which a section may have set - from
+    the set <<SEC_NO_FLAGS>>, <<SEC_ALLOC>>, ...<<SET_NEVER_LOAD>>.  */
+  flagword section_flags;
+
+ /* The character normally found at the front of a symbol.
+    (if any), perhaps `_'.  */
+  char symbol_leading_char;
+
+ /* The pad character for file names within an archive header.  */
+  char ar_pad_char;
+
+  /* The maximum number of characters in an archive header.  */
+  unsigned short ar_max_namelen;
+
+  /* Entries for byte swapping for data. These are different from the
+     other entry points, since they don't take a BFD as the first argument.
+     Certain other handlers could do the same.  */
+  bfd_uint64_t   (*bfd_getx64) (const void *);
+  bfd_int64_t    (*bfd_getx_signed_64) (const void *);
+  void           (*bfd_putx64) (bfd_uint64_t, void *);
+  bfd_vma        (*bfd_getx32) (const void *);
+  bfd_signed_vma (*bfd_getx_signed_32) (const void *);
+  void           (*bfd_putx32) (bfd_vma, void *);
+  bfd_vma        (*bfd_getx16) (const void *);
+  bfd_signed_vma (*bfd_getx_signed_16) (const void *);
+  void           (*bfd_putx16) (bfd_vma, void *);
+
+  /* Byte swapping for the headers.  */
+  bfd_uint64_t   (*bfd_h_getx64) (const void *);
+  bfd_int64_t    (*bfd_h_getx_signed_64) (const void *);
+  void           (*bfd_h_putx64) (bfd_uint64_t, void *);
+  bfd_vma        (*bfd_h_getx32) (const void *);
+  bfd_signed_vma (*bfd_h_getx_signed_32) (const void *);
+  void           (*bfd_h_putx32) (bfd_vma, void *);
+  bfd_vma        (*bfd_h_getx16) (const void *);
+  bfd_signed_vma (*bfd_h_getx_signed_16) (const void *);
+  void           (*bfd_h_putx16) (bfd_vma, void *);
+
+  /* Format dependent routines: these are vectors of entry points
+     within the target vector structure, one for each format to check.  */
+
+  /* Check the format of a file being read.  Return a <<bfd_target *>> or zero.  */
+  const struct bfd_target *(*_bfd_check_format[bfd_type_end]) (bfd *);
+
+  /* Set the format of a file being written.  */
+  bfd_boolean (*_bfd_set_format[bfd_type_end]) (bfd *);
+
+  /* Write cached information into a file being written, at <<bfd_close>>.  */
+  bfd_boolean (*_bfd_write_contents[bfd_type_end]) (bfd *);
+
+
+  /* Generic entry points.  */
+#define BFD_JUMP_TABLE_GENERIC(NAME) \
+  NAME##_close_and_cleanup, \
+  NAME##_bfd_free_cached_info, \
+  NAME##_new_section_hook, \
+  NAME##_get_section_contents, \
+  NAME##_get_section_contents_in_window
+
+  /* Called when the BFD is being closed to do any necessary cleanup.  */
+  bfd_boolean (*_close_and_cleanup) (bfd *);
+  /* Ask the BFD to free all cached information.  */
+  bfd_boolean (*_bfd_free_cached_info) (bfd *);
+  /* Called when a new section is created.  */
+  bfd_boolean (*_new_section_hook) (bfd *, sec_ptr);
+  /* Read the contents of a section.  */
+  bfd_boolean (*_bfd_get_section_contents)
+    (bfd *, sec_ptr, void *, file_ptr, bfd_size_type);
+  bfd_boolean (*_bfd_get_section_contents_in_window)
+    (bfd *, sec_ptr, bfd_window *, file_ptr, bfd_size_type);
+
+  /* Entry points to copy private data.  */
+#define BFD_JUMP_TABLE_COPY(NAME) \
+  NAME##_bfd_copy_private_bfd_data, \
+  NAME##_bfd_merge_private_bfd_data, \
+  _bfd_generic_init_private_section_data, \
+  NAME##_bfd_copy_private_section_data, \
+  NAME##_bfd_copy_private_symbol_data, \
+  NAME##_bfd_copy_private_header_data, \
+  NAME##_bfd_set_private_flags, \
+  NAME##_bfd_print_private_bfd_data
+
+  /* Called to copy BFD general private data from one object file
+     to another.  */
+  bfd_boolean (*_bfd_copy_private_bfd_data) (bfd *, bfd *);
+  /* Called to merge BFD general private data from one object file
+     to a common output file when linking.  */
+  bfd_boolean (*_bfd_merge_private_bfd_data) (bfd *, bfd *);
+  /* Called to initialize BFD private section data from one object file
+     to another.  */
+#define bfd_init_private_section_data(ibfd, isec, obfd, osec, link_info) \
+  BFD_SEND (obfd, _bfd_init_private_section_data, (ibfd, isec, obfd, osec, link_info))
+  bfd_boolean (*_bfd_init_private_section_data)
+    (bfd *, sec_ptr, bfd *, sec_ptr, struct bfd_link_info *);
+  /* Called to copy BFD private section data from one object file
+     to another.  */
+  bfd_boolean (*_bfd_copy_private_section_data)
+    (bfd *, sec_ptr, bfd *, sec_ptr);
+  /* Called to copy BFD private symbol data from one symbol
+     to another.  */
+  bfd_boolean (*_bfd_copy_private_symbol_data)
+    (bfd *, asymbol *, bfd *, asymbol *);
+  /* Called to copy BFD private header data from one object file
+     to another.  */
+  bfd_boolean (*_bfd_copy_private_header_data)
+    (bfd *, bfd *);
+  /* Called to set private backend flags.  */
+  bfd_boolean (*_bfd_set_private_flags) (bfd *, flagword);
+
+  /* Called to print private BFD data.  */
+  bfd_boolean (*_bfd_print_private_bfd_data) (bfd *, void *);
+
+  /* Core file entry points.  */
+#define BFD_JUMP_TABLE_CORE(NAME) \
+  NAME##_core_file_failing_command, \
+  NAME##_core_file_failing_signal, \
+  NAME##_core_file_matches_executable_p
+
+  char *      (*_core_file_failing_command) (bfd *);
+  int         (*_core_file_failing_signal) (bfd *);
+  bfd_boolean (*_core_file_matches_executable_p) (bfd *, bfd *);
+
+  /* Archive entry points.  */
+#define BFD_JUMP_TABLE_ARCHIVE(NAME) \
+  NAME##_slurp_armap, \
+  NAME##_slurp_extended_name_table, \
+  NAME##_construct_extended_name_table, \
+  NAME##_truncate_arname, \
+  NAME##_write_armap, \
+  NAME##_read_ar_hdr, \
+  NAME##_write_ar_hdr, \
+  NAME##_openr_next_archived_file, \
+  NAME##_get_elt_at_index, \
+  NAME##_generic_stat_arch_elt, \
+  NAME##_update_armap_timestamp
+
+  bfd_boolean (*_bfd_slurp_armap) (bfd *);
+  bfd_boolean (*_bfd_slurp_extended_name_table) (bfd *);
+  bfd_boolean (*_bfd_construct_extended_name_table)
+    (bfd *, char **, bfd_size_type *, const char **);
+  void        (*_bfd_truncate_arname) (bfd *, const char *, char *);
+  bfd_boolean (*write_armap)
+    (bfd *, unsigned int, struct orl *, unsigned int, int);
+  void *      (*_bfd_read_ar_hdr_fn) (bfd *);
+  bfd_boolean (*_bfd_write_ar_hdr_fn) (bfd *, bfd *);
+  bfd *       (*openr_next_archived_file) (bfd *, bfd *);
+#define bfd_get_elt_at_index(b,i) BFD_SEND (b, _bfd_get_elt_at_index, (b,i))
+  bfd *       (*_bfd_get_elt_at_index) (bfd *, symindex);
+  int         (*_bfd_stat_arch_elt) (bfd *, struct stat *);
+  bfd_boolean (*_bfd_update_armap_timestamp) (bfd *);
+
+  /* Entry points used for symbols.  */
+#define BFD_JUMP_TABLE_SYMBOLS(NAME) \
+  NAME##_get_symtab_upper_bound, \
+  NAME##_canonicalize_symtab, \
+  NAME##_make_empty_symbol, \
+  NAME##_print_symbol, \
+  NAME##_get_symbol_info, \
+  NAME##_bfd_is_local_label_name, \
+  NAME##_bfd_is_target_special_symbol, \
+  NAME##_get_lineno, \
+  NAME##_find_nearest_line, \
+  _bfd_generic_find_line, \
+  NAME##_find_inliner_info, \
+  NAME##_bfd_make_debug_symbol, \
+  NAME##_read_minisymbols, \
+  NAME##_minisymbol_to_symbol
+
+  long        (*_bfd_get_symtab_upper_bound) (bfd *);
+  long        (*_bfd_canonicalize_symtab)
+    (bfd *, struct bfd_symbol **);
+  struct bfd_symbol *
+              (*_bfd_make_empty_symbol) (bfd *);
+  void        (*_bfd_print_symbol)
+    (bfd *, void *, struct bfd_symbol *, bfd_print_symbol_type);
+#define bfd_print_symbol(b,p,s,e) BFD_SEND (b, _bfd_print_symbol, (b,p,s,e))
+  void        (*_bfd_get_symbol_info)
+    (bfd *, struct bfd_symbol *, symbol_info *);
+#define bfd_get_symbol_info(b,p,e) BFD_SEND (b, _bfd_get_symbol_info, (b,p,e))
+  bfd_boolean (*_bfd_is_local_label_name) (bfd *, const char *);
+  bfd_boolean (*_bfd_is_target_special_symbol) (bfd *, asymbol *);
+  alent *     (*_get_lineno) (bfd *, struct bfd_symbol *);
+  bfd_boolean (*_bfd_find_nearest_line)
+    (bfd *, struct bfd_section *, struct bfd_symbol **, bfd_vma,
+     const char **, const char **, unsigned int *);
+  bfd_boolean (*_bfd_find_line)
+    (bfd *, struct bfd_symbol **, struct bfd_symbol *,
+     const char **, unsigned int *);
+  bfd_boolean (*_bfd_find_inliner_info)
+    (bfd *, const char **, const char **, unsigned int *);
+ /* Back-door to allow format-aware applications to create debug symbols
+    while using BFD for everything else.  Currently used by the assembler
+    when creating COFF files.  */
+  asymbol *   (*_bfd_make_debug_symbol)
+    (bfd *, void *, unsigned long size);
+#define bfd_read_minisymbols(b, d, m, s) \
+  BFD_SEND (b, _read_minisymbols, (b, d, m, s))
+  long        (*_read_minisymbols)
+    (bfd *, bfd_boolean, void **, unsigned int *);
+#define bfd_minisymbol_to_symbol(b, d, m, f) \
+  BFD_SEND (b, _minisymbol_to_symbol, (b, d, m, f))
+  asymbol *   (*_minisymbol_to_symbol)
+    (bfd *, bfd_boolean, const void *, asymbol *);
+
+  /* Routines for relocs.  */
+#define BFD_JUMP_TABLE_RELOCS(NAME) \
+  NAME##_get_reloc_upper_bound, \
+  NAME##_canonicalize_reloc, \
+  NAME##_bfd_reloc_type_lookup, \
+  NAME##_bfd_reloc_name_lookup
+
+  long        (*_get_reloc_upper_bound) (bfd *, sec_ptr);
+  long        (*_bfd_canonicalize_reloc)
+    (bfd *, sec_ptr, arelent **, struct bfd_symbol **);
+  /* See documentation on reloc types.  */
+  reloc_howto_type *
+              (*reloc_type_lookup) (bfd *, bfd_reloc_code_real_type);
+  reloc_howto_type *
+              (*reloc_name_lookup) (bfd *, const char *);
+
+
+  /* Routines used when writing an object file.  */
+#define BFD_JUMP_TABLE_WRITE(NAME) \
+  NAME##_set_arch_mach, \
+  NAME##_set_section_contents
+
+  bfd_boolean (*_bfd_set_arch_mach)
+    (bfd *, enum bfd_architecture, unsigned long);
+  bfd_boolean (*_bfd_set_section_contents)
+    (bfd *, sec_ptr, const void *, file_ptr, bfd_size_type);
+
+  /* Routines used by the linker.  */
+#define BFD_JUMP_TABLE_LINK(NAME) \
+  NAME##_sizeof_headers, \
+  NAME##_bfd_get_relocated_section_contents, \
+  NAME##_bfd_relax_section, \
+  NAME##_bfd_link_hash_table_create, \
+  NAME##_bfd_link_hash_table_free, \
+  NAME##_bfd_link_add_symbols, \
+  NAME##_bfd_link_just_syms, \
+  NAME##_bfd_copy_link_hash_symbol_type, \
+  NAME##_bfd_final_link, \
+  NAME##_bfd_link_split_section, \
+  NAME##_bfd_gc_sections, \
+  NAME##_bfd_merge_sections, \
+  NAME##_bfd_is_group_section, \
+  NAME##_bfd_discard_group, \
+  NAME##_section_already_linked, \
+  NAME##_bfd_define_common_symbol
+
+  int         (*_bfd_sizeof_headers) (bfd *, struct bfd_link_info *);
+  bfd_byte *  (*_bfd_get_relocated_section_contents)
+    (bfd *, struct bfd_link_info *, struct bfd_link_order *,
+     bfd_byte *, bfd_boolean, struct bfd_symbol **);
+
+  bfd_boolean (*_bfd_relax_section)
+    (bfd *, struct bfd_section *, struct bfd_link_info *, bfd_boolean *);
+
+  /* Create a hash table for the linker.  Different backends store
+     different information in this table.  */
+  struct bfd_link_hash_table *
+              (*_bfd_link_hash_table_create) (bfd *);
+
+  /* Release the memory associated with the linker hash table.  */
+  void        (*_bfd_link_hash_table_free) (struct bfd_link_hash_table *);
+
+  /* Add symbols from this object file into the hash table.  */
+  bfd_boolean (*_bfd_link_add_symbols) (bfd *, struct bfd_link_info *);
+
+  /* Indicate that we are only retrieving symbol values from this section.  */
+  void        (*_bfd_link_just_syms) (asection *, struct bfd_link_info *);
+
+  /* Copy the symbol type of a linker hash table entry.  */
+#define bfd_copy_link_hash_symbol_type(b, t, f) \
+  BFD_SEND (b, _bfd_copy_link_hash_symbol_type, (b, t, f))
+  void (*_bfd_copy_link_hash_symbol_type)
+    (bfd *, struct bfd_link_hash_entry *, struct bfd_link_hash_entry *);
+
+  /* Do a link based on the link_order structures attached to each
+     section of the BFD.  */
+  bfd_boolean (*_bfd_final_link) (bfd *, struct bfd_link_info *);
+
+  /* Should this section be split up into smaller pieces during linking.  */
+  bfd_boolean (*_bfd_link_split_section) (bfd *, struct bfd_section *);
+
+  /* Remove sections that are not referenced from the output.  */
+  bfd_boolean (*_bfd_gc_sections) (bfd *, struct bfd_link_info *);
+
+  /* Attempt to merge SEC_MERGE sections.  */
+  bfd_boolean (*_bfd_merge_sections) (bfd *, struct bfd_link_info *);
+
+  /* Is this section a member of a group?  */
+  bfd_boolean (*_bfd_is_group_section) (bfd *, const struct bfd_section *);
+
+  /* Discard members of a group.  */
+  bfd_boolean (*_bfd_discard_group) (bfd *, struct bfd_section *);
+
+  /* Check if SEC has been already linked during a reloceatable or
+     final link.  */
+  void (*_section_already_linked) (bfd *, struct bfd_section *,
+                                   struct bfd_link_info *);
+
+  /* Define a common symbol.  */
+  bfd_boolean (*_bfd_define_common_symbol) (bfd *, struct bfd_link_info *,
+                                            struct bfd_link_hash_entry *);
+
+  /* Routines to handle dynamic symbols and relocs.  */
+#define BFD_JUMP_TABLE_DYNAMIC(NAME) \
+  NAME##_get_dynamic_symtab_upper_bound, \
+  NAME##_canonicalize_dynamic_symtab, \
+  NAME##_get_synthetic_symtab, \
+  NAME##_get_dynamic_reloc_upper_bound, \
+  NAME##_canonicalize_dynamic_reloc
+
+  /* Get the amount of memory required to hold the dynamic symbols.  */
+  long        (*_bfd_get_dynamic_symtab_upper_bound) (bfd *);
+  /* Read in the dynamic symbols.  */
+  long        (*_bfd_canonicalize_dynamic_symtab)
+    (bfd *, struct bfd_symbol **);
+  /* Create synthetized symbols.  */
+  long        (*_bfd_get_synthetic_symtab)
+    (bfd *, long, struct bfd_symbol **, long, struct bfd_symbol **,
+     struct bfd_symbol **);
+  /* Get the amount of memory required to hold the dynamic relocs.  */
+  long        (*_bfd_get_dynamic_reloc_upper_bound) (bfd *);
+  /* Read in the dynamic relocs.  */
+  long        (*_bfd_canonicalize_dynamic_reloc)
+    (bfd *, arelent **, struct bfd_symbol **);
+
+  /* Opposite endian version of this target.  */
+  const struct bfd_target * alternative_target;
+
+  /* Data for use by back-end routines, which isn't
+     generic enough to belong in this structure.  */
+  const void *backend_data;
+
+} bfd_target;
+
+bfd_boolean bfd_set_default_target (const char *name);
+
+const bfd_target *bfd_find_target (const char *target_name, bfd *abfd);
+
+const bfd_target *bfd_get_target_info (const char *target_name,
+    bfd *abfd,
+    bfd_boolean *is_bigendian,
+    int *underscoring,
+    const char **def_target_arch);
+const char ** bfd_target_list (void);
+
+const bfd_target *bfd_search_for_target
+   (int (*search_func) (const bfd_target *, void *),
+    void *);
+
+/* Extracted from format.c.  */
+bfd_boolean bfd_check_format (bfd *abfd, bfd_format format);
+
+bfd_boolean bfd_check_format_matches
+   (bfd *abfd, bfd_format format, char ***matching);
+
+bfd_boolean bfd_set_format (bfd *abfd, bfd_format format);
+
+const char *bfd_format_string (bfd_format format);
+
+/* Extracted from linker.c.  */
+bfd_boolean bfd_link_split_section (bfd *abfd, asection *sec);
+
+#define bfd_link_split_section(abfd, sec) \
+       BFD_SEND (abfd, _bfd_link_split_section, (abfd, sec))
+
+void bfd_section_already_linked (bfd *abfd, asection *sec,
+    struct bfd_link_info *info);
+
+#define bfd_section_already_linked(abfd, sec, info) \
+       BFD_SEND (abfd, _section_already_linked, (abfd, sec, info))
+
+bfd_boolean bfd_generic_define_common_symbol
+   (bfd *output_bfd, struct bfd_link_info *info,
+    struct bfd_link_hash_entry *h);
+
+#define bfd_define_common_symbol(output_bfd, info, h) \
+       BFD_SEND (output_bfd, _bfd_define_common_symbol, (output_bfd, info, h))
+
+struct bfd_elf_version_tree * bfd_find_version_for_sym
+   (struct bfd_elf_version_tree *verdefs,
+    const char *sym_name, bfd_boolean *hide);
+
+/* Extracted from simple.c.  */
+bfd_byte *bfd_simple_get_relocated_section_contents
+   (bfd *abfd, asection *sec, bfd_byte *outbuf, asymbol **symbol_table);
+
+/* Extracted from compress.c.  */
+bfd_boolean bfd_uncompress_section_contents
+   (bfd_byte **buffer, bfd_size_type *size);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/bfdlink.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,784 @@
+/* bfdlink.h -- header file for BFD link routines
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+   2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+   Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
+
+   This file is part of BFD, the Binary File Descriptor library.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT 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
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+   MA 02110-1301, USA.  */
+
+#ifndef BFDLINK_H
+#define BFDLINK_H
+
+/* Which symbols to strip during a link.  */
+enum bfd_link_strip
+{
+  strip_none,		/* Don't strip any symbols.  */
+  strip_debugger,	/* Strip debugging symbols.  */
+  strip_some,		/* keep_hash is the list of symbols to keep.  */
+  strip_all		/* Strip all symbols.  */
+};
+
+/* Which local symbols to discard during a link.  This is irrelevant
+   if strip_all is used.  */
+enum bfd_link_discard
+{
+  discard_sec_merge,	/* Discard local temporary symbols in SEC_MERGE
+			   sections.  */
+  discard_none,		/* Don't discard any locals.  */
+  discard_l,		/* Discard local temporary symbols.  */
+  discard_all		/* Discard all locals.  */
+};
+
+/* Describes the type of hash table entry structure being used.
+   Different hash table structure have different fields and so
+   support different linking features.  */
+enum bfd_link_hash_table_type
+  {
+    bfd_link_generic_hash_table,
+    bfd_link_elf_hash_table
+  };
+
+/* These are the possible types of an entry in the BFD link hash
+   table.  */
+
+enum bfd_link_hash_type
+{
+  bfd_link_hash_new,		/* Symbol is new.  */
+  bfd_link_hash_undefined,	/* Symbol seen before, but undefined.  */
+  bfd_link_hash_undefweak,	/* Symbol is weak and undefined.  */
+  bfd_link_hash_defined,	/* Symbol is defined.  */
+  bfd_link_hash_defweak,	/* Symbol is weak and defined.  */
+  bfd_link_hash_common,		/* Symbol is common.  */
+  bfd_link_hash_indirect,	/* Symbol is an indirect link.  */
+  bfd_link_hash_warning		/* Like indirect, but warn if referenced.  */
+};
+
+enum bfd_link_common_skip_ar_symbols
+{
+  bfd_link_common_skip_none,
+  bfd_link_common_skip_text,
+  bfd_link_common_skip_data,
+  bfd_link_common_skip_all
+};
+
+struct bfd_link_hash_common_entry
+  {
+    unsigned int alignment_power;	/* Alignment.  */
+    asection *section;		/* Symbol section.  */
+  };
+
+/* The linking routines use a hash table which uses this structure for
+   its elements.  */
+
+struct bfd_link_hash_entry
+{
+  /* Base hash table entry structure.  */
+  struct bfd_hash_entry root;
+
+  /* Type of this entry.  */
+  enum bfd_link_hash_type type;
+
+  /* A union of information depending upon the type.  */
+  union
+    {
+      /* Nothing is kept for bfd_hash_new.  */
+      /* bfd_link_hash_undefined, bfd_link_hash_undefweak.  */
+      struct
+	{
+	  /* Undefined and common symbols are kept in a linked list through
+	     this field.  This field is present in all of the union element
+	     so that we don't need to remove entries from the list when we
+	     change their type.  Removing entries would either require the
+	     list to be doubly linked, which would waste more memory, or
+	     require a traversal.  When an undefined or common symbol is
+	     created, it should be added to this list, the head of which is in
+	     the link hash table itself.  As symbols are defined, they need
+	     not be removed from the list; anything which reads the list must
+	     doublecheck the symbol type.
+
+	     Weak symbols are not kept on this list.
+
+	     Defined and defweak symbols use this field as a reference marker.
+	     If the field is not NULL, or this structure is the tail of the
+	     undefined symbol list, the symbol has been referenced.  If the
+	     symbol is undefined and becomes defined, this field will
+	     automatically be non-NULL since the symbol will have been on the
+	     undefined symbol list.  */
+	  struct bfd_link_hash_entry *next;
+	  bfd *abfd;		/* BFD symbol was found in.  */
+	  bfd *weak;		/* BFD weak symbol was found in.  */
+	} undef;
+      /* bfd_link_hash_defined, bfd_link_hash_defweak.  */
+      struct
+	{
+	  struct bfd_link_hash_entry *next;
+	  asection *section;	/* Symbol section.  */
+	  bfd_vma value;	/* Symbol value.  */
+	} def;
+      /* bfd_link_hash_indirect, bfd_link_hash_warning.  */
+      struct
+	{
+	  struct bfd_link_hash_entry *next;
+	  struct bfd_link_hash_entry *link;	/* Real symbol.  */
+	  const char *warning;	/* Warning (bfd_link_hash_warning only).  */
+	} i;
+      /* bfd_link_hash_common.  */
+      struct
+	{
+	  struct bfd_link_hash_entry *next;
+	  /* The linker needs to know three things about common
+	     symbols: the size, the alignment, and the section in
+	     which the symbol should be placed.  We store the size
+	     here, and we allocate a small structure to hold the
+	     section and the alignment.  The alignment is stored as a
+	     power of two.  We don't store all the information
+	     directly because we don't want to increase the size of
+	     the union; this structure is a major space user in the
+	     linker.  */
+	  struct bfd_link_hash_common_entry *p;
+	  bfd_size_type size;	/* Common symbol size.  */
+	} c;
+    } u;
+};
+
+/* This is the link hash table.  It is a derived class of
+   bfd_hash_table.  */
+
+struct bfd_link_hash_table
+{
+  /* The hash table itself.  */
+  struct bfd_hash_table table;
+  /* A linked list of undefined and common symbols, linked through the
+     next field in the bfd_link_hash_entry structure.  */
+  struct bfd_link_hash_entry *undefs;
+  /* Entries are added to the tail of the undefs list.  */
+  struct bfd_link_hash_entry *undefs_tail;
+  /* The type of the link hash table.  */
+  enum bfd_link_hash_table_type type;
+};
+
+/* Look up an entry in a link hash table.  If FOLLOW is TRUE, this
+   follows bfd_link_hash_indirect and bfd_link_hash_warning links to
+   the real symbol.  */
+extern struct bfd_link_hash_entry *bfd_link_hash_lookup
+  (struct bfd_link_hash_table *, const char *, bfd_boolean create,
+   bfd_boolean copy, bfd_boolean follow);
+
+/* Look up an entry in the main linker hash table if the symbol might
+   be wrapped.  This should only be used for references to an
+   undefined symbol, not for definitions of a symbol.  */
+
+extern struct bfd_link_hash_entry *bfd_wrapped_link_hash_lookup
+  (bfd *, struct bfd_link_info *, const char *, bfd_boolean,
+   bfd_boolean, bfd_boolean);
+
+/* Traverse a link hash table.  */
+extern void bfd_link_hash_traverse
+  (struct bfd_link_hash_table *,
+    bfd_boolean (*) (struct bfd_link_hash_entry *, void *),
+    void *);
+
+/* Add an entry to the undefs list.  */
+extern void bfd_link_add_undef
+  (struct bfd_link_hash_table *, struct bfd_link_hash_entry *);
+
+/* Remove symbols from the undefs list that don't belong there.  */
+extern void bfd_link_repair_undef_list
+  (struct bfd_link_hash_table *table);
+
+/* Read symbols and cache symbol pointer array in outsymbols.  */
+extern bfd_boolean bfd_generic_link_read_symbols (bfd *);
+
+struct bfd_sym_chain
+{
+  struct bfd_sym_chain *next;
+  const char *name;
+};
+
+/* How to handle unresolved symbols.
+   There are four possibilities which are enumerated below:  */
+enum report_method
+{
+  /* This is the initial value when then link_info structure is created.
+     It allows the various stages of the linker to determine whether they
+     allowed to set the value.  */
+  RM_NOT_YET_SET = 0,
+  RM_IGNORE,
+  RM_GENERATE_WARNING,
+  RM_GENERATE_ERROR
+};
+
+struct bfd_elf_dynamic_list;
+
+/* This structure holds all the information needed to communicate
+   between BFD and the linker when doing a link.  */
+
+struct bfd_link_info
+{
+  /* TRUE if BFD should generate a relocatable object file.  */
+  unsigned int relocatable: 1;
+
+  /* TRUE if BFD should generate relocation information in the final
+     executable.  */
+  unsigned int emitrelocations: 1;
+
+  /* TRUE if BFD should generate a "task linked" object file,
+     similar to relocatable but also with globals converted to
+     statics.  */
+  unsigned int task_link: 1;
+
+  /* TRUE if BFD should generate a shared object.  */
+  unsigned int shared: 1;
+
+  /* TRUE if BFD should pre-bind symbols in a shared object.  */
+  unsigned int symbolic: 1;
+
+  /* TRUE if BFD should export all symbols in the dynamic symbol table
+     of an executable, rather than only those used.  */
+  unsigned int export_dynamic: 1;
+
+  /* TRUE if shared objects should be linked directly, not shared.  */
+  unsigned int static_link: 1;
+
+  /* TRUE if the output file should be in a traditional format.  This
+     is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag
+     on the output file, but may be checked when reading the input
+     files.  */
+  unsigned int traditional_format: 1;
+
+  /* TRUE if we want to produced optimized output files.  This might
+     need much more time and therefore must be explicitly selected.  */
+  unsigned int optimize: 1;
+
+  /* TRUE if ok to have multiple definition.  */
+  unsigned int allow_multiple_definition: 1;
+
+  /* TRUE if ok to have version with no definition.  */
+  unsigned int allow_undefined_version: 1;
+
+  /* TRUE if a default symbol version should be created and used for
+     exported symbols.  */
+  unsigned int create_default_symver: 1;
+
+  /* TRUE if a default symbol version should be created and used for
+     imported symbols.  */
+  unsigned int default_imported_symver: 1;
+
+  /* TRUE if symbols should be retained in memory, FALSE if they
+     should be freed and reread.  */
+  unsigned int keep_memory: 1;
+
+  /* TRUE if every symbol should be reported back via the notice
+     callback.  */
+  unsigned int notice_all: 1;
+
+  /* TRUE if executable should not contain copy relocs.
+     Setting this true may result in a non-sharable text segment.  */
+  unsigned int nocopyreloc: 1;
+
+  /* TRUE if the new ELF dynamic tags are enabled. */
+  unsigned int new_dtags: 1;
+
+  /* TRUE if non-PLT relocs should be merged into one reloc section
+     and sorted so that relocs against the same symbol come together.  */
+  unsigned int combreloc: 1;
+
+  /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
+     should be created.  */
+  unsigned int eh_frame_hdr: 1;
+
+  /* TRUE if global symbols in discarded sections should be stripped.  */
+  unsigned int strip_discarded: 1;
+
+  /* TRUE if generating a position independent executable.  */
+  unsigned int pie: 1;
+
+  /* TRUE if generating an executable, position independent or not.  */
+  unsigned int executable : 1;
+
+  /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W|PF_X
+     flags.  */
+  unsigned int execstack: 1;
+
+  /* TRUE if PT_GNU_STACK segment should be created with PF_R|PF_W
+     flags.  */
+  unsigned int noexecstack: 1;
+
+  /* TRUE if PT_GNU_RELRO segment should be created.  */
+  unsigned int relro: 1;
+
+  /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
+  unsigned int warn_shared_textrel: 1;
+
+  /* TRUE if we should warn alternate ELF machine code.  */
+  unsigned int warn_alternate_em: 1;
+
+  /* TRUE if unreferenced sections should be removed.  */
+  unsigned int gc_sections: 1;
+
+  /* TRUE if user shoudl be informed of removed unreferenced sections.  */
+  unsigned int print_gc_sections: 1;
+
+  /* TRUE if .hash section should be created.  */
+  unsigned int emit_hash: 1;
+
+  /* TRUE if .gnu.hash section should be created.  */
+  unsigned int emit_gnu_hash: 1;
+
+  /* If TRUE reduce memory overheads, at the expense of speed. This will
+     cause map file generation to use an O(N^2) algorithm and disable
+     caching ELF symbol buffer.  */
+  unsigned int reduce_memory_overheads: 1;
+
+  /* TRUE if all data symbols should be dynamic.  */
+   unsigned int dynamic_data: 1;
+
+  /* TRUE if some symbols have to be dynamic, controlled by
+     --dynamic-list command line options.  */
+  unsigned int dynamic: 1;
+
+  /* Non-NULL if .note.gnu.build-id section should be created.  */
+  char *emit_note_gnu_build_id;
+
+  /* What to do with unresolved symbols in an object file.
+     When producing executables the default is GENERATE_ERROR.
+     When producing shared libraries the default is IGNORE.  The
+     assumption with shared libraries is that the reference will be
+     resolved at load/execution time.  */
+  enum report_method unresolved_syms_in_objects;
+
+  /* What to do with unresolved symbols in a shared library.
+     The same defaults apply.  */
+  enum report_method unresolved_syms_in_shared_libs;
+
+  /* Which symbols to strip.  */
+  enum bfd_link_strip strip;
+
+  /* Which local symbols to discard.  */
+  enum bfd_link_discard discard;
+
+  /* Criteria for skipping symbols when determining
+     whether to include an object from an archive. */
+  enum bfd_link_common_skip_ar_symbols common_skip_ar_symbols;
+
+  /* Char that may appear as the first char of a symbol, but should be
+     skipped (like symbol_leading_char) when looking up symbols in
+     wrap_hash.  Used by PowerPC Linux for 'dot' symbols.  */
+  char wrap_char;
+
+  /* Separator between archive and filename in linker script filespecs.  */
+  char path_separator;
+
+  /* Function callbacks.  */
+  const struct bfd_link_callbacks *callbacks;
+
+  /* Hash table handled by BFD.  */
+  struct bfd_link_hash_table *hash;
+
+  /* Hash table of symbols to keep.  This is NULL unless strip is
+     strip_some.  */
+  struct bfd_hash_table *keep_hash;
+
+  /* Hash table of symbols to report back via the notice callback.  If
+     this is NULL, and notice_all is FALSE, then no symbols are
+     reported back.  */
+  struct bfd_hash_table *notice_hash;
+
+  /* Hash table of symbols which are being wrapped (the --wrap linker
+     option).  If this is NULL, no symbols are being wrapped.  */
+  struct bfd_hash_table *wrap_hash;
+
+  /* The output BFD.  */
+  bfd *output_bfd;
+
+  /* The list of input BFD's involved in the link.  These are chained
+     together via the link_next field.  */
+  bfd *input_bfds;
+  bfd **input_bfds_tail;
+
+  /* If a symbol should be created for each input BFD, this is section
+     where those symbols should be placed.  It must be a section in
+     the output BFD.  It may be NULL, in which case no such symbols
+     will be created.  This is to support CREATE_OBJECT_SYMBOLS in the
+     linker command language.  */
+  asection *create_object_symbols_section;
+
+  /* List of global symbol names that are starting points for marking
+     sections against garbage collection.  */
+  struct bfd_sym_chain *gc_sym_list;
+
+  /* If a base output file is wanted, then this points to it */
+  void *base_file;
+
+  /* The function to call when the executable or shared object is
+     loaded.  */
+  const char *init_function;
+
+  /* The function to call when the executable or shared object is
+     unloaded.  */
+  const char *fini_function;
+
+  /* Number of relaxation passes.  Usually only one relaxation pass
+     is needed.  But a backend can have as many relaxation passes as
+     necessary.  During bfd_relax_section call, it is set to the
+     current pass, starting from 0.  */
+  int relax_pass;
+
+  /* Number of relaxation trips.  This number is incremented every
+     time the relaxation pass is restarted due to a previous
+     relaxation returning true in *AGAIN.  */
+  int relax_trip;
+
+  /* Non-zero if auto-import thunks for DATA items in pei386 DLLs
+     should be generated/linked against.  Set to 1 if this feature
+     is explicitly requested by the user, -1 if enabled by default.  */
+  int pei386_auto_import;
+
+  /* Non-zero if runtime relocs for DATA items with non-zero addends
+     in pei386 DLLs should be generated.  Set to 1 if this feature
+     is explicitly requested by the user, -1 if enabled by default.  */
+  int pei386_runtime_pseudo_reloc;
+
+  /* How many spare .dynamic DT_NULL entries should be added?  */
+  unsigned int spare_dynamic_tags;
+
+  /* May be used to set DT_FLAGS for ELF. */
+  bfd_vma flags;
+
+  /* May be used to set DT_FLAGS_1 for ELF. */
+  bfd_vma flags_1;
+
+  /* Start and end of RELRO region.  */
+  bfd_vma relro_start, relro_end;
+
+  /* List of symbols should be dynamic.  */
+  struct bfd_elf_dynamic_list *dynamic_list;
+};
+
+/* This structures holds a set of callback functions.  These are called
+   by the BFD linker routines.  Except for the info functions, the first
+   argument to each callback function is the bfd_link_info structure
+   being used and each function returns a boolean value.  If the
+   function returns FALSE, then the BFD function which called it should
+   return with a failure indication.  */
+
+struct bfd_link_callbacks
+{
+  /* A function which is called when an object is added from an
+     archive.  ABFD is the archive element being added.  NAME is the
+     name of the symbol which caused the archive element to be pulled
+     in.  */
+  bfd_boolean (*add_archive_element)
+    (struct bfd_link_info *, bfd *abfd, const char *name);
+  /* A function which is called when a symbol is found with multiple
+     definitions.  NAME is the symbol which is defined multiple times.
+     OBFD is the old BFD, OSEC is the old section, OVAL is the old
+     value, NBFD is the new BFD, NSEC is the new section, and NVAL is
+     the new value.  OBFD may be NULL.  OSEC and NSEC may be
+     bfd_com_section or bfd_ind_section.  */
+  bfd_boolean (*multiple_definition)
+    (struct bfd_link_info *, const char *name,
+     bfd *obfd, asection *osec, bfd_vma oval,
+     bfd *nbfd, asection *nsec, bfd_vma nval);
+  /* A function which is called when a common symbol is defined
+     multiple times.  NAME is the symbol appearing multiple times.
+     OBFD is the BFD of the existing symbol; it may be NULL if this is
+     not known.  OTYPE is the type of the existing symbol, which may
+     be bfd_link_hash_defined, bfd_link_hash_defweak,
+     bfd_link_hash_common, or bfd_link_hash_indirect.  If OTYPE is
+     bfd_link_hash_common, OSIZE is the size of the existing symbol.
+     NBFD is the BFD of the new symbol.  NTYPE is the type of the new
+     symbol, one of bfd_link_hash_defined, bfd_link_hash_common, or
+     bfd_link_hash_indirect.  If NTYPE is bfd_link_hash_common, NSIZE
+     is the size of the new symbol.  */
+  bfd_boolean (*multiple_common)
+    (struct bfd_link_info *, const char *name,
+     bfd *obfd, enum bfd_link_hash_type otype, bfd_vma osize,
+     bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize);
+  /* A function which is called to add a symbol to a set.  ENTRY is
+     the link hash table entry for the set itself (e.g.,
+     __CTOR_LIST__).  RELOC is the relocation to use for an entry in
+     the set when generating a relocatable file, and is also used to
+     get the size of the entry when generating an executable file.
+     ABFD, SEC and VALUE identify the value to add to the set.  */
+  bfd_boolean (*add_to_set)
+    (struct bfd_link_info *, struct bfd_link_hash_entry *entry,
+     bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec, bfd_vma value);
+  /* A function which is called when the name of a g++ constructor or
+     destructor is found.  This is only called by some object file
+     formats.  CONSTRUCTOR is TRUE for a constructor, FALSE for a
+     destructor.  This will use BFD_RELOC_CTOR when generating a
+     relocatable file.  NAME is the name of the symbol found.  ABFD,
+     SECTION and VALUE are the value of the symbol.  */
+  bfd_boolean (*constructor)
+    (struct bfd_link_info *, bfd_boolean constructor, const char *name,
+     bfd *abfd, asection *sec, bfd_vma value);
+  /* A function which is called to issue a linker warning.  For
+     example, this is called when there is a reference to a warning
+     symbol.  WARNING is the warning to be issued.  SYMBOL is the name
+     of the symbol which triggered the warning; it may be NULL if
+     there is none.  ABFD, SECTION and ADDRESS identify the location
+     which trigerred the warning; either ABFD or SECTION or both may
+     be NULL if the location is not known.  */
+  bfd_boolean (*warning)
+    (struct bfd_link_info *, const char *warning, const char *symbol,
+     bfd *abfd, asection *section, bfd_vma address);
+  /* A function which is called when a relocation is attempted against
+     an undefined symbol.  NAME is the symbol which is undefined.
+     ABFD, SECTION and ADDRESS identify the location from which the
+     reference is made. IS_FATAL indicates whether an undefined symbol is
+     a fatal error or not. In some cases SECTION may be NULL.  */
+  bfd_boolean (*undefined_symbol)
+    (struct bfd_link_info *, const char *name, bfd *abfd,
+     asection *section, bfd_vma address, bfd_boolean is_fatal);
+  /* A function which is called when a reloc overflow occurs. ENTRY is
+     the link hash table entry for the symbol the reloc is against.
+     NAME is the name of the local symbol or section the reloc is
+     against, RELOC_NAME is the name of the relocation, and ADDEND is
+     any addend that is used.  ABFD, SECTION and ADDRESS identify the
+     location at which the overflow occurs; if this is the result of a
+     bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
+     ABFD will be NULL.  */
+  bfd_boolean (*reloc_overflow)
+    (struct bfd_link_info *, struct bfd_link_hash_entry *entry,
+     const char *name, const char *reloc_name, bfd_vma addend,
+     bfd *abfd, asection *section, bfd_vma address);
+  /* A function which is called when a dangerous reloc is performed.
+     MESSAGE is an appropriate message.
+     ABFD, SECTION and ADDRESS identify the location at which the
+     problem occurred; if this is the result of a
+     bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
+     ABFD will be NULL.  */
+  bfd_boolean (*reloc_dangerous)
+    (struct bfd_link_info *, const char *message,
+     bfd *abfd, asection *section, bfd_vma address);
+  /* A function which is called when a reloc is found to be attached
+     to a symbol which is not being written out.  NAME is the name of
+     the symbol.  ABFD, SECTION and ADDRESS identify the location of
+     the reloc; if this is the result of a
+     bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
+     ABFD will be NULL.  */
+  bfd_boolean (*unattached_reloc)
+    (struct bfd_link_info *, const char *name,
+     bfd *abfd, asection *section, bfd_vma address);
+  /* A function which is called when a symbol in notice_hash is
+     defined or referenced.  NAME is the symbol.  ABFD, SECTION and
+     ADDRESS are the value of the symbol.  If SECTION is
+     bfd_und_section, this is a reference.  */
+  bfd_boolean (*notice)
+    (struct bfd_link_info *, const char *name,
+     bfd *abfd, asection *section, bfd_vma address);
+  /* Error or warning link info message.  */
+  void (*einfo)
+    (const char *fmt, ...);
+  /* General link info message.  */
+  void (*info)
+    (const char *fmt, ...);
+  /* Message to be printed in linker map file.  */
+  void (*minfo)
+    (const char *fmt, ...);
+  /* This callback provides a chance for users of the BFD library to
+     override its decision about whether to place two adjacent sections
+     into the same segment.  */
+  bfd_boolean (*override_segment_assignment)
+    (struct bfd_link_info *, bfd * abfd,
+     asection * current_section, asection * previous_section,
+     bfd_boolean new_segment);
+};
+
+/* The linker builds link_order structures which tell the code how to
+   include input data in the output file.  */
+
+/* These are the types of link_order structures.  */
+
+enum bfd_link_order_type
+{
+  bfd_undefined_link_order,	/* Undefined.  */
+  bfd_indirect_link_order,	/* Built from a section.  */
+  bfd_data_link_order,		/* Set to explicit data.  */
+  bfd_section_reloc_link_order,	/* Relocate against a section.  */
+  bfd_symbol_reloc_link_order	/* Relocate against a symbol.  */
+};
+
+/* This is the link_order structure itself.  These form a chain
+   attached to the output section whose contents they are describing.  */
+
+struct bfd_link_order
+{
+  /* Next link_order in chain.  */
+  struct bfd_link_order *next;
+  /* Type of link_order.  */
+  enum bfd_link_order_type type;
+  /* Offset within output section.  */
+  bfd_vma offset;
+  /* Size within output section.  */
+  bfd_size_type size;
+  /* Type specific information.  */
+  union
+    {
+      struct
+	{
+	  /* Section to include.  If this is used, then
+	     section->output_section must be the section the
+	     link_order is attached to, section->output_offset must
+	     equal the link_order offset field, and section->size
+	     must equal the link_order size field.  Maybe these
+	     restrictions should be relaxed someday.  */
+	  asection *section;
+	} indirect;
+      struct
+	{
+	  /* Size of contents, or zero when contents size == size
+	     within output section.
+	     A non-zero value allows filling of the output section
+	     with an arbitrary repeated pattern.  */
+	  unsigned int size;
+	  /* Data to put into file.  */
+	  bfd_byte *contents;
+	} data;
+      struct
+	{
+	  /* Description of reloc to generate.  Used for
+	     bfd_section_reloc_link_order and
+	     bfd_symbol_reloc_link_order.  */
+	  struct bfd_link_order_reloc *p;
+	} reloc;
+    } u;
+};
+
+/* A linker order of type bfd_section_reloc_link_order or
+   bfd_symbol_reloc_link_order means to create a reloc against a
+   section or symbol, respectively.  This is used to implement -Ur to
+   generate relocs for the constructor tables.  The
+   bfd_link_order_reloc structure describes the reloc that BFD should
+   create.  It is similar to a arelent, but I didn't use arelent
+   because the linker does not know anything about most symbols, and
+   any asymbol structure it creates will be partially meaningless.
+   This information could logically be in the bfd_link_order struct,
+   but I didn't want to waste the space since these types of relocs
+   are relatively rare.  */
+
+struct bfd_link_order_reloc
+{
+  /* Reloc type.  */
+  bfd_reloc_code_real_type reloc;
+
+  union
+    {
+      /* For type bfd_section_reloc_link_order, this is the section
+	 the reloc should be against.  This must be a section in the
+	 output BFD, not any of the input BFDs.  */
+      asection *section;
+      /* For type bfd_symbol_reloc_link_order, this is the name of the
+	 symbol the reloc should be against.  */
+      const char *name;
+    } u;
+
+  /* Addend to use.  The object file should contain zero.  The BFD
+     backend is responsible for filling in the contents of the object
+     file correctly.  For some object file formats (e.g., COFF) the
+     addend must be stored into in the object file, and for some
+     (e.g., SPARC a.out) it is kept in the reloc.  */
+  bfd_vma addend;
+};
+
+/* Allocate a new link_order for a section.  */
+extern struct bfd_link_order *bfd_new_link_order (bfd *, asection *);
+
+/* These structures are used to describe version information for the
+   ELF linker.  These structures could be manipulated entirely inside
+   BFD, but it would be a pain.  Instead, the regular linker sets up
+   these structures, and then passes them into BFD.  */
+
+/* Glob pattern for a version.  */
+
+struct bfd_elf_version_expr
+{
+  /* Next glob pattern for this version.  */
+  struct bfd_elf_version_expr *next;
+  /* Glob pattern.  */
+  const char *pattern;
+  /* Set if pattern is not a glob.  */
+  unsigned int literal : 1;
+  /* Defined by ".symver".  */
+  unsigned int symver : 1;
+  /* Defined by version script.  */
+  unsigned int script : 1;
+  /* Pattern type.  */
+#define BFD_ELF_VERSION_C_TYPE		1
+#define BFD_ELF_VERSION_CXX_TYPE	2
+#define BFD_ELF_VERSION_JAVA_TYPE	4
+  unsigned int mask : 3;
+};
+
+struct bfd_elf_version_expr_head
+{
+  /* List of all patterns, both wildcards and non-wildcards.  */
+  struct bfd_elf_version_expr *list;
+  /* Hash table for non-wildcards.  */
+  void *htab;
+  /* Remaining patterns.  */
+  struct bfd_elf_version_expr *remaining;
+  /* What kind of pattern types are present in list (bitmask).  */
+  unsigned int mask;
+};
+
+/* Version dependencies.  */
+
+struct bfd_elf_version_deps
+{
+  /* Next dependency for this version.  */
+  struct bfd_elf_version_deps *next;
+  /* The version which this version depends upon.  */
+  struct bfd_elf_version_tree *version_needed;
+};
+
+/* A node in the version tree.  */
+
+struct bfd_elf_version_tree
+{
+  /* Next version.  */
+  struct bfd_elf_version_tree *next;
+  /* Name of this version.  */
+  const char *name;
+  /* Version number.  */
+  unsigned int vernum;
+  /* Regular expressions for global symbols in this version.  */
+  struct bfd_elf_version_expr_head globals;
+  /* Regular expressions for local symbols in this version.  */
+  struct bfd_elf_version_expr_head locals;
+  /* List of versions which this version depends upon.  */
+  struct bfd_elf_version_deps *deps;
+  /* Index of the version name.  This is used within BFD.  */
+  unsigned int name_indx;
+  /* Whether this version tree was used.  This is used within BFD.  */
+  int used;
+  /* Matching hook.  */
+  struct bfd_elf_version_expr *(*match)
+    (struct bfd_elf_version_expr_head *head,
+     struct bfd_elf_version_expr *prev, const char *sym);
+};
+
+struct bfd_elf_dynamic_list
+{
+  struct bfd_elf_version_expr_head head;
+  struct bfd_elf_version_expr *(*match)
+    (struct bfd_elf_version_expr_head *head,
+     struct bfd_elf_version_expr *prev, const char *sym);
+};
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cderr.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,44 @@
+#ifndef _CDERR_H
+#define _CDERR_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define CDERR_DIALOGFAILURE	0xFFFF
+#define CDERR_GENERALCODES	0x0000
+#define CDERR_STRUCTSIZE	0x0001
+#define CDERR_INITIALIZATION	0x0002
+#define CDERR_NOTEMPLATE	0x0003
+#define CDERR_NOHINSTANCE	0x0004
+#define CDERR_LOADSTRFAILURE	0x0005
+#define CDERR_FINDRESFAILURE	0x0006
+#define CDERR_LOADRESFAILURE	0x0007
+#define CDERR_LOCKRESFAILURE	0x0008
+#define CDERR_MEMALLOCFAILURE	0x0009
+#define CDERR_MEMLOCKFAILURE	0x000A
+#define CDERR_NOHOOK	0x000B
+#define CDERR_REGISTERMSGFAIL	0x000C
+#define PDERR_PRINTERCODES	0x1000
+#define PDERR_SETUPFAILURE	0x1001
+#define PDERR_PARSEFAILURE	0x1002
+#define PDERR_RETDEFFAILURE	0x1003
+#define PDERR_LOADDRVFAILURE	0x1004
+#define PDERR_GETDEVMODEFAIL	0x1005
+#define PDERR_INITFAILURE	0x1006
+#define PDERR_NODEVICES	0x1007
+#define PDERR_NODEFAULTPRN	0x1008
+#define PDERR_DNDMMISMATCH	0x1009
+#define PDERR_CREATEICFAILURE	0x100A
+#define PDERR_PRINTERNOTFOUND	0x100B
+#define PDERR_DEFAULTDIFFERENT	0x100C
+#define CFERR_CHOOSEFONTCODES	0x2000
+#define CFERR_NOFONTS	0x2001
+#define CFERR_MAXLESSTHANMIN	0x2002
+#define FNERR_FILENAMECODES	0x3000
+#define FNERR_SUBCLASSFAILURE	0x3001
+#define FNERR_INVALIDFILENAME	0x3002
+#define FNERR_BUFFERTOOSMALL	0x3003
+#define FRERR_FINDREPLACECODES	0x4000
+#define FRERR_BUFFERLENGTHZERO	0x4001
+#define CCERR_CHOOSECOLORCODES	0x5000
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cguid.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,83 @@
+#ifndef _CGUID_H
+#define _CGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const IID GUID_NULL;
+extern const IID IID_IRpcChannel;
+extern const IID IID_IRpcStub;
+extern const IID IID_IStubManager;
+extern const IID IID_IRpcProxy;
+extern const IID IID_IProxyManager;
+extern const IID IID_IPSFactory;
+extern const IID IID_IInternalMoniker;
+extern const IID IID_IDfReserved1;
+extern const IID IID_IDfReserved2;
+extern const IID IID_IDfReserved3;
+extern const CLSID CLSID_StdMarshal;
+extern const IID IID_IStub;
+extern const IID IID_IProxy;
+extern const IID IID_IEnumGeneric;
+extern const IID IID_IEnumHolder;
+extern const IID IID_IEnumCallback;
+extern const IID IID_IOleManager;
+extern const IID IID_IOlePresObj;
+extern const IID IID_IDebug;
+extern const IID IID_IDebugStream;
+extern const CLSID CLSID_PSGenObject;
+extern const CLSID CLSID_PSClientSite;
+extern const CLSID CLSID_PSClassObject;
+extern const CLSID CLSID_PSInPlaceActive;
+extern const CLSID CLSID_PSInPlaceFrame;
+extern const CLSID CLSID_PSDragDrop;
+extern const CLSID CLSID_PSBindCtx;
+extern const CLSID CLSID_PSEnumerators;
+extern const CLSID CLSID_StaticMetafile;
+extern const CLSID CLSID_StaticDib;
+extern const CLSID CID_CDfsVolume;
+extern const CLSID CLSID_CCDFormKrnl;
+extern const CLSID CLSID_CCDPropertyPage;
+extern const CLSID CLSID_CCDFormDialog;
+extern const CLSID CLSID_CCDCommandButton;
+extern const CLSID CLSID_CCDComboBox;
+extern const CLSID CLSID_CCDTextBox;
+extern const CLSID CLSID_CCDCheckBox;
+extern const CLSID CLSID_CCDLabel;
+extern const CLSID CLSID_CCDOptionButton;
+extern const CLSID CLSID_CCDListBox;
+extern const CLSID CLSID_CCDScrollBar;
+extern const CLSID CLSID_CCDGroupBox;
+extern const CLSID CLSID_CCDGeneralPropertyPage;
+extern const CLSID CLSID_CCDGenericPropertyPage;
+extern const CLSID CLSID_CCDFontPropertyPage;
+extern const CLSID CLSID_CCDColorPropertyPage;
+extern const CLSID CLSID_CCDLabelPropertyPage;
+extern const CLSID CLSID_CCDCheckBoxPropertyPage;
+extern const CLSID CLSID_CCDTextBoxPropertyPage;
+extern const CLSID CLSID_CCDOptionButtonPropertyPage;
+extern const CLSID CLSID_CCDListBoxPropertyPage;
+extern const CLSID CLSID_CCDCommandButtonPropertyPage;
+extern const CLSID CLSID_CCDComboBoxPropertyPage;
+extern const CLSID CLSID_CCDScrollBarPropertyPage;
+extern const CLSID CLSID_CCDGroupBoxPropertyPage;
+extern const CLSID CLSID_CCDXObjectPropertyPage;
+extern const CLSID CLSID_CStdPropertyFrame;
+extern const CLSID CLSID_CFormPropertyPage;
+extern const CLSID CLSID_CGridPropertyPage;
+extern const CLSID CLSID_CWSJArticlePage;
+extern const CLSID CLSID_CSystemPage;
+extern const CLSID CLSID_IdentityUnmarshal;
+extern const CLSID CLSID_InProcFreeMarshaler;
+extern const CLSID CLSID_Picture_Metafile;
+extern const CLSID CLSID_Picture_EnhMetafile;
+extern const CLSID CLSID_Picture_Dib;
+extern const CLSID CLSID_StdGlobalInterfaceTable;
+extern const GUID GUID_TRISTATE;
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cmnquery.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,81 @@
+/*
+ * cmnquery.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _CMNQUERY_H
+#define _CMNQUERY_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	CLSID clsid;
+	HICON hIcon;
+	LPWSTR pszTitle;
+} CQFORM,*LPCQFORM;
+#define CQFF_NOGLOBALPAGES 0x00000001
+#define CQFF_ISOPTIONAL 0x00000002
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPCQPAGEPROC pPageProc;
+	HINSTANCE hInstance;
+	INT idPageName;
+	INT idPageTemplate;
+	DLGPROC pDlgProc;
+	LPARAM lParam;
+} CQPAGE,*LPCQPAGE;
+/*********
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	CLSID clsidHandler;
+	LPVOID pHandlerParameters;
+	CLSID clsidDefaultForm;
+	IPersistQuery* pPersistQuery;
+	union {
+		void* pFormParameters;
+		IPropertyBag* ppbFormParameters;
+	};
+} OPENQUERYWINDOW,*LPOPENQUERYWINDOW;
+*********/
+#define OQWF_OKCANCEL 0x00000001
+#define OQWF_DEFAULTFORM 0x00000002
+#define OQWF_SINGLESELECT 0x00000004
+#define OQWF_LOADQUERY 0x00000008
+#define OQWF_REMOVESCOPES 0x00000010
+#define OQWF_REMOVEFORMS 0x00000020
+#define OQWF_ISSUEONOPEN 0x00000040
+#define OQWF_SHOWOPTIONAL 0x00000080
+#define OQWF_SAVEQUERYONOK 0x00000200
+#define OQWF_HIDEMENUS 0x00000400
+#define OQWF_HIDESEARCHUI 0x00000800
+#define OQWF_PARAMISPROPERTYBAG 0x80000000
+/*--- Active Directory Reference - Active Directory Functions - Active Directory Display Functions */
+typedef HRESULT (CALLBACK* CQAddFormsProc)(LPARAM,LPCQFORM);
+typedef HRESULT (CALLBACK* CQAddPagesProc)(LPARAM,REFCLSID,LPCQPAGE);
+typedef HRESULT (CALLBACK* CQPageProc)(LPCQPAGE,HWND,UINT,WPARAM,LPARAM);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/comcat.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,175 @@
+#ifndef _COMCAT_H
+#define _COMCAT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef _RC_INVOKED
+
+#ifdef __cplusplus
+extern "C"{
+#endif
+
+EXTERN_C const IID IID_IEnumGUID;
+typedef _COM_interface IEnumGUID *LPENUMGUID;
+
+#define INTERFACE IEnumGUID
+DECLARE_INTERFACE_(IEnumGUID,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,GUID*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMGUID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IEnumGUID_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IEnumGUID_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IEnumGUID_Release(p)            (p)->lpVtbl->Release(p)
+#define IEnumGUID_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
+#define IEnumGUID_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
+#define IEnumGUID_Reset(p)              (p)->lpVtbl->Reset(p)
+#define IEnumGUID_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
+#endif
+
+typedef GUID CATID;
+typedef REFGUID REFCATID;
+#define CATID_NULL GUID_NULL
+#define IsEqualCATID(a, b) IsEqualGUID(a, b)
+
+typedef struct tagCATEGORYINFO {
+    CATID   catid;		/* category identifier for component */
+    LCID    lcid;		/* locale identifier */
+    OLECHAR szDescription[128];	/* description of the category */
+} CATEGORYINFO, *LPCATEGORYINFO;
+
+EXTERN_C const CATID CATID_Insertable;
+EXTERN_C const CATID CATID_Control;
+EXTERN_C const CATID CATID_Programmable;
+EXTERN_C const CATID CATID_IsShortcut;
+EXTERN_C const CATID CATID_NeverShowExt;
+EXTERN_C const CATID CATID_DocObject;
+EXTERN_C const CATID CATID_Printable;
+EXTERN_C const CATID CATID_RequiresDataPathHost;
+EXTERN_C const CATID CATID_PersistsToMoniker;
+EXTERN_C const CATID CATID_PersistsToStorage;
+EXTERN_C const CATID CATID_PersistsToStreamInit;
+EXTERN_C const CATID CATID_PersistsToStream;
+EXTERN_C const CATID CATID_PersistsToMemory;
+EXTERN_C const CATID CATID_PersistsToFile;
+EXTERN_C const CATID CATID_PersistsToPropertyBag;
+EXTERN_C const CATID CATID_InternetAware;
+EXTERN_C const CATID CATID_DesignTimeUIActivatableControl;
+
+#define IEnumCATID IEnumGUID
+#define LPENUMCATID LPENUMGUID
+#define IID_IEnumCATID IID_IEnumGUID
+
+#define IEnumCLSID IEnumGUID
+#define LPENUMCLSID LPENUMGUID
+#define IID_IEnumCLSID IID_IEnumGUID
+
+EXTERN_C const IID IID_ICatInformation;
+typedef _COM_interface ICatInformation *LPCATINFORMATION;
+
+EXTERN_C const IID IID_ICatRegister;
+typedef _COM_interface ICatRegister *LPCATREGISTER;
+
+EXTERN_C const IID IID_IEnumCATEGORYINFO;
+typedef _COM_interface IEnumCATEGORYINFO *LPENUMCATEGORYINFO;
+
+EXTERN_C const CLSID CLSID_StdComponentCategoriesMgr;
+
+#define INTERFACE ICatInformation
+DECLARE_INTERFACE_(ICatInformation,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(EnumCategories)(THIS_ LCID,LPENUMCATEGORYINFO*) PURE;
+	STDMETHOD(GetCategoryDesc)(THIS_ REFCATID,LCID,PWCHAR*) PURE;
+	STDMETHOD(EnumClassesOfCategories)(THIS_ ULONG,CATID*,ULONG,CATID*,LPENUMCLSID*) PURE;
+	STDMETHOD(IsClassOfCategories)(THIS_ REFCLSID,ULONG,CATID*,ULONG,CATID*) PURE;
+	STDMETHOD(EnumImplCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
+	STDMETHOD(EnumReqCategoriesOfClass)(THIS_ REFCLSID,LPENUMCATID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define ICatInformation_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ICatInformation_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ICatInformation_Release(p)            (p)->lpVtbl->Release(p)
+#define ICatInformation_EnumCategories(p,a,b) (p)->lpVtbl->EnumCategories(p,a,b)
+#define ICatInformation_GetCategoryDesc(p,a,b,c) (p)->lpVtbl->GetCategoryDesc(p,a,b,c)
+#define ICatInformation_EnumClassesOfCategories(p,a,b,c,d,e) (p)->lpVtbl->EnumClassesOfCategories(p,a,b,c,d,e)
+#define ICatInformation_IsClassOfCategories(p,a,b,c,d,e) (p)->lpVtbl->IsClassOfCategories(p,a,b,c,d,e)
+#define ICatInformation_EnumImplCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumImplCategoriesOfClass(p,a,b)
+#define ICatInformation_EnumReqCategoriesOfClass(p,a,b) (p)->lpVtbl->EnumReqCategoriesOfClass(p,a,b)
+#endif
+
+#define INTERFACE ICatRegister
+DECLARE_INTERFACE_(ICatRegister,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterCategories)(THIS_ ULONG,CATEGORYINFO*) PURE;
+	STDMETHOD(UnRegisterCategories)(THIS_ ULONG,CATID*) PURE;
+	STDMETHOD(RegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(UnRegisterClassImplCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(RegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+	STDMETHOD(UnRegisterClassReqCategories)(THIS_ REFCLSID,ULONG,CATID*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define ICatRegister_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define ICatRegister_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define ICatRegister_Release(p)            (p)->lpVtbl->Release(p)
+#define ICatRegister_RegisterCategories(p,a,b) (p)->lpVtbl->RegisterCategories(p,a,b)
+#define ICatRegister_UnRegisterCategories(p,a,b) (p)->lpVtbl->UnRegisterCategories(p,a,b)
+#define ICatRegister_RegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->RegisterClassImplCategories(p,a,b,c)
+#define ICatRegister_UnRegisterClassImplCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassImplCategories(p,a,b,c)
+#define ICatRegister_RegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->RegisterClassReqCategories(p,a,b,c)
+#define ICatRegister_UnRegisterClassReqCategories(p,a,b,c) (p)->lpVtbl->UnRegisterClassReqCategories(p,a,b,c)
+#endif
+
+EXTERN_C const IID IID_IEnumCATEGORYINFO;
+#define INTERFACE IEnumCATEGORYINFO
+DECLARE_INTERFACE_(IEnumCATEGORYINFO,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Next)(THIS_ ULONG,CATEGORYINFO*,ULONG*) PURE;
+	STDMETHOD(Skip)(THIS_ ULONG) PURE;
+	STDMETHOD(Reset)(THIS) PURE;
+	STDMETHOD(Clone)(THIS_ LPENUMCATEGORYINFO*) PURE;
+};
+#undef INTERFACE
+#if (!defined (__cplusplus) || defined (CINTERFACE)) \
+    && defined (COBJMACROS)
+#define IEnumCATEGORYINFO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IEnumCATEGORYINFO_AddRef(p)             (p)->lpVtbl->AddRef(p)
+#define IEnumCATEGORYINFO_Release(p)            (p)->lpVtbl->Release(p)
+#define IEnumCATEGORYINFO_Next(p,a,b,c)         (p)->lpVtbl->Next(p,a,b,c)
+#define IEnumCATEGORYINFO_Skip(p,a)             (p)->lpVtbl->Skip(p,a)
+#define IEnumCATEGORYINFO_Reset(p)              (p)->lpVtbl->Reset(p)
+#define IEnumCATEGORYINFO_Clone(p,a)            (p)->lpVtbl->Clone(p,a)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _RC_INVOKED */
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commctrl.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,3756 @@
+#ifndef _COMMCTRL_H
+#define _COMMCTRL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#include <prsht.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef _WIN32_IE
+/* define _WIN32_IE if you really want it */
+#if 0
+#define _WIN32_IE	0x0300
+#endif
+#endif
+
+#ifndef COMMCTRLAPI
+#ifdef __W32API_USE_DLLIMPORT__
+#define COMMCTRLAPI DECLSPEC_IMPORT
+#else
+#define COMMCTRLAPI
+#endif
+#endif
+
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#define DRAGLISTMSGSTRING TEXT("commctrl_DragListMsg")
+#define HOTKEY_CLASSA	"msctls_hotkey32"
+#define HOTKEY_CLASSW	L"msctls_hotkey32"
+#define PROGRESS_CLASSA	"msctls_progress32"
+#define PROGRESS_CLASSW	L"msctls_progress32"
+#define STATUSCLASSNAMEA	"msctls_statusbar32"
+#define STATUSCLASSNAMEW	L"msctls_statusbar32"
+#define TOOLBARCLASSNAMEA	"ToolbarWindow32"
+#define TOOLBARCLASSNAMEW	L"ToolbarWindow32"
+#define TOOLTIPS_CLASSA	"tooltips_class32"
+#define TOOLTIPS_CLASSW	L"tooltips_class32"
+#define TRACKBAR_CLASSA	"msctls_trackbar32"
+#define TRACKBAR_CLASSW	L"msctls_trackbar32"
+#define UPDOWN_CLASSA	"msctls_updown32"
+#define UPDOWN_CLASSW	L"msctls_updown32"
+#define ANIMATE_CLASSA	"SysAnimate32"
+#define ANIMATE_CLASSW	L"SysAnimate32"
+#define DATETIMEPICK_CLASSW L"SysDateTimePick32"
+#define DATETIMEPICK_CLASSA "SysDateTimePick32"
+#define MONTHCAL_CLASSW L"SysMonthCal32"
+#define MONTHCAL_CLASSA "SysMonthCal32"
+#define REBARCLASSNAMEW L"ReBarWindow32"
+#define REBARCLASSNAMEA "ReBarWindow32"
+#define WC_COMBOBOXEXW	L"ComboBoxEx32"
+#define WC_COMBOBOXEXA	"ComboBoxEx32"
+#define WC_IPADDRESSW	L"SysIPAddress32"
+#define WC_IPADDRESSA	"SysIPAddress32"
+#define WC_LISTVIEWA	"SysListView32"
+#define WC_LISTVIEWW	L"SysListView32"
+#define WC_TABCONTROLA	"SysTabControl32"
+#define WC_TABCONTROLW	L"SysTabControl32"
+#define WC_TREEVIEWA	"SysTreeView32"
+#define WC_TREEVIEWW	L"SysTreeView32"
+#define WC_HEADERA	"SysHeader32"
+#define WC_HEADERW 	L"SysHeader32"
+#define WC_PAGESCROLLERW	L"SysPager"
+#define WC_PAGESCROLLERA	"SysPager"
+#define WC_NATIVEFONTCTLW	L"NativeFontCtl"
+#define WC_NATIVEFONTCTLA	"NativeFontCtl"
+#define WC_BUTTONA	"Button"
+#define WC_BUTTONW	L"Button"
+#define WC_STATICA	"Static"
+#define WC_STATICW	L"Static"
+#define WC_EDITA	"Edit"
+#define WC_EDITW	L"Edit"
+#define WC_LISTBOXA	"ListBox"
+#define WC_LISTBOXW	L"ListBox"
+#define WC_COMBOBOXA	"ComboBox"
+#define WC_COMBOBOXW	L"ComboBox"
+#define WC_SCROLLBARA	"ScrollBar"
+#define WC_SCROLLBARW	L"ScrollBar"
+#define WC_LINKA	"SysLink"
+#define WC_LINKW	L"SysLink"
+
+#ifdef UNICODE
+#define HOTKEY_CLASS HOTKEY_CLASSW
+#define PROGRESS_CLASS PROGRESS_CLASSW
+#define STATUSCLASSNAME STATUSCLASSNAMEW
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEW
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSW
+#define TRACKBAR_CLASS TRACKBAR_CLASSW
+#define UPDOWN_CLASS UPDOWN_CLASSW
+#define ANIMATE_CLASS ANIMATE_CLASSW
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSW
+#define MONTHCAL_CLASS MONTHCAL_CLASSW
+#define REBARCLASSNAME REBARCLASSNAMEW
+#define WC_COMBOBOXEX WC_COMBOBOXEXW
+#define WC_HEADER WC_HEADERW
+#define WC_IPADDRESS WC_IPADDRESSW
+#define WC_LISTVIEW WC_LISTVIEWW
+#define WC_TABCONTROL WC_TABCONTROLW
+#define WC_TREEVIEW WC_TREEVIEWW
+#define WC_PAGESCROLLER WC_PAGESCROLLERW
+#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLW
+#define WC_BUTTON WC_BUTTONW
+#define WC_STATIC WC_STATICW
+#define WC_EDIT WC_EDITW
+#define WC_LISTBOX WC_LISTBOXW
+#define WC_COMBOBOX WC_COMBOBOXW
+#define WC_SCROLLBAR WC_SCROLLBARW
+#define WC_LINK WC_LINKW
+#else
+#define ANIMATE_CLASS ANIMATE_CLASSA
+#define HOTKEY_CLASS HOTKEY_CLASSA
+#define PROGRESS_CLASS PROGRESS_CLASSA
+#define STATUSCLASSNAME STATUSCLASSNAMEA
+#define TOOLBARCLASSNAME TOOLBARCLASSNAMEA
+#define TOOLTIPS_CLASS TOOLTIPS_CLASSA
+#define TRACKBAR_CLASS TRACKBAR_CLASSA
+#define UPDOWN_CLASS UPDOWN_CLASSA
+#define DATETIMEPICK_CLASS DATETIMEPICK_CLASSA
+#define MONTHCAL_CLASS MONTHCAL_CLASSA
+#define REBARCLASSNAME REBARCLASSNAMEA
+#define WC_COMBOBOXEX WC_COMBOBOXEXA
+#define WC_HEADER WC_HEADERA
+#define WC_IPADDRESS WC_IPADDRESSA
+#define WC_LISTVIEW WC_LISTVIEWA
+#define WC_TABCONTROL WC_TABCONTROLA
+#define WC_TREEVIEW WC_TREEVIEWA
+#define WC_PAGESCROLLER WC_PAGESCROLLERA
+#define WC_NATIVEFONTCTL WC_NATIVEFONTCTLA
+#define WC_BUTTON WC_BUTTONA
+#define WC_STATIC WC_STATICA
+#define WC_EDIT WC_EDITA
+#define WC_LISTBOX WC_LISTBOXA
+#define WC_COMBOBOX WC_COMBOBOXA
+#define WC_SCROLLBAR WC_SCROLLBARA
+#define WC_LINK WC_LINKA
+#endif
+
+#if (_WIN32_IE >= 0x0500)
+#if (_WIN32_WINNT >= 0x0501)
+#define COMCTL32_VERSION 6
+#else
+#define COMCTL32_VERSION 5
+#endif
+#endif
+
+#define LVM_FIRST 0x1000
+#define TV_FIRST 0x1100
+#define HDM_FIRST 0x1200
+#define ACM_OPENA	(WM_USER+100)
+#define ACM_PLAY	(WM_USER+101)
+#define ACM_STOP	(WM_USER+102)
+#define ACM_OPENW	(WM_USER+103)
+#define ACN_START	1
+#define ACN_STOP	2
+#define CBEIF_TEXT	0x00000001
+#define CBEIF_IMAGE	0x00000002
+#define CBEIF_SELECTEDIMAGE	0x00000004
+#define CBEIF_OVERLAY	0x00000008
+#define CBEIF_INDENT	0x00000010
+#define CBEIF_LPARAM	0x00000020
+#define CBEIF_DI_SETITEM	0x10000000
+#define CBEN_INSERTITEM	(CBEN_FIRST - 1)
+#define CBEN_DELETEITEM	(CBEN_FIRST - 2)
+#define CBEN_BEGINEDIT	(CBEN_FIRST - 4)
+#define CBEN_ENDEDITA	(CBEN_FIRST - 5)
+#define CBEN_ENDEDITW	(CBEN_FIRST - 6)
+#define CBENF_KILLFOCUS	1
+#define CBENF_RETURN	2
+#define CBENF_ESCAPE	3
+#define CBENF_DROPDOWN	4
+#define CBEMAXSTRLEN 260
+#define DL_BEGINDRAG	1157
+#define DL_CANCELDRAG	1160
+#define DL_DRAGGING	1158
+#define DL_DROPPED	1159
+#define DL_CURSORSET	0
+#define DL_STOPCURSOR	1
+#define DL_COPYCURSOR	2
+#define DL_MOVECURSOR	3
+#define CCS_TOP	1
+#define CCS_NOMOVEY	2
+#define CCS_BOTTOM	3
+#define CCS_NORESIZE	4
+#define CCS_NOPARENTALIGN	8
+#define CCS_ADJUSTABLE	32
+#define CCS_NODIVIDER	64
+#if (_WIN32_IE >= 0x0300)
+#define CCS_VERT 128
+#define CCS_LEFT 129
+#define CCS_NOMOVEX 130
+#define CCS_RIGHT 131
+#endif
+#define ACS_CENTER	0x0001
+#define ACS_TRANSPARENT	0x0002
+#define ACS_AUTOPLAY	0x0004
+#define ACS_TIMER	0x0008
+#define PGS_VERT	0x00000000
+#define PGS_HORZ	0x00000001
+#define PGS_AUTOSCROLL	0x00000002
+#define PGS_DRAGNDROP	0x00000004
+#define CMB_MASKED	2
+#define MINSYSCOMMAND	SC_SIZE
+#define SBT_OWNERDRAW	0x1000
+#define SBT_NOBORDERS	256
+#define SBT_POPOUT	512
+#define SBT_RTLREADING	1024
+#define SB_SETTEXTA	(WM_USER+1)
+#define SB_SETTEXTW	(WM_USER+11)
+#define SB_GETTEXTA	(WM_USER+2)
+#define SB_GETTEXTW	(WM_USER+13)
+#define SB_GETTEXTLENGTHA	(WM_USER+3)
+#define SB_GETTEXTLENGTHW	(WM_USER+12)
+#define SB_SETPARTS	(WM_USER+4)
+#define SB_GETPARTS	(WM_USER+6)
+#define SB_GETBORDERS	(WM_USER+7)
+#define SB_SETMINHEIGHT	(WM_USER+8)
+#define SB_SIMPLE	(WM_USER+9)
+#define SB_GETRECT	(WM_USER+10)
+#define MSGF_COMMCTRL_BEGINDRAG	0x4200
+#define MSGF_COMMCTRL_SIZEHEADER	0x4201
+#define MSGF_COMMCTRL_DRAGSELECT	0x4202
+#define MSGF_COMMCTRL_TOOLBARCUST	0x4203
+#define ILC_COLOR 0
+#define ILC_COLOR4 4
+#define ILC_COLOR8 8
+#define ILC_COLOR16 16
+#define ILC_COLOR24 24
+#define ILC_COLOR32 32
+#define ILC_COLORDDB 254
+#define ILC_MASK 1
+#define ILC_PALETTE 2048
+#define ILCF_MOVE 0
+#define ILCF_SWAP 1
+#define ILS_NORMAL 0
+#define ILS_GLOW 1
+#define ILS_SHADOW 2
+#define ILS_SATURATE 4
+#define ILS_ALPHA 8
+#define ILD_BLEND25 2
+#define ILD_BLEND50 4
+#define ILD_SELECTED 4
+#define ILD_BLEND 4
+#define ILD_FOCUS 2
+#define ILD_MASK 16
+#define ILD_NORMAL 0
+#define ILD_TRANSPARENT 1
+#define ILD_IMAGE 0x0020
+#define ILD_ROP 0x0040
+#define ILD_OVERLAYMASK 0x0F00
+#define ILD_PRESERVEALPHA 0x1000
+#define ILD_SCALE 0x2000
+#define ILD_DPISCALE 0x4000
+#define HDS_HORZ	0
+#define HDS_BUTTONS	2
+#define HDS_HIDDEN	8
+#if (_WIN32_IE > 0x0300)
+#define HDS_HOTTRACK	4
+#define HDS_DRAGDROP	0x0040
+#define HDS_FULLDRAG	0x0080
+#endif /* _WIN32_IE > 0x0300 */
+#if (_WIN32_IE >= 0x0500)
+#define HDS_FILTERBAR	0x0100
+#endif /* _WIN32_IE >= 0x0500 */
+#define NM_FIRST	0
+#define NM_LAST	((UINT)-99)
+#define LVN_FIRST	((UINT)-100)
+#define LVN_LAST	((UINT)-199)
+#define HDN_FIRST	((UINT)-300)
+#define HDN_LAST	((UINT)-399)
+#define TVN_FIRST	((UINT)-400)
+#define TVN_LAST	((UINT)-499)
+#define TTN_FIRST	((UINT)-520)
+#define TTN_LAST	((UINT)-549)
+#define TCN_FIRST	((UINT)-550)
+#define TCN_LAST	((UINT)-580)
+#ifndef CDN_FIRST
+#define CDN_FIRST	((UINT)-601) /* also in commdlg.h */
+#define CDN_LAST	((UINT)-699)
+#endif
+#define TBN_FIRST	((UINT)-700)
+#define TBN_LAST	((UINT)-720)
+#define UDN_FIRST	((UINT)-721)
+#define UDN_LAST	((UINT)-740)
+#if (_WIN32_IE >= 0x0300)
+#define RBN_FIRST	((UINT)-831)
+#define RBN_LAST	((UINT)-859)
+#define MCN_FIRST	((UINT)-750)
+#define MCN_LAST	((UINT)-759)
+#define DTN_FIRST	((UINT)-760)
+#define DTN_LAST	((UINT)-799)
+#define CBEN_FIRST	((UINT)-800)
+#define CBEN_LAST	((UINT)-830)
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)
+#define IPN_FIRST	((UINT)-860)
+#define IPN_LAST	((UINT)-879)
+#define IPN_FIELDCHANGED	(IPN_FIRST-0)
+#define SBN_FIRST	((UINT)-880U)
+#define SBN_LAST	((UINT)-899U)
+#define PGN_FIRST	((UINT)-900U)
+#define PGN_LAST	((UINT)-950U)
+#define PGN_SCROLL	(PGN_FIRST-1)
+#define PGN_CALCSIZE	(PGN_FIRST-2)
+#endif /* _WIN32_IE >= 0x0400 */
+#define HDI_WIDTH	1
+#define HDI_HEIGHT	1
+#define HDI_TEXT	2
+#define HDI_FORMAT	4
+#define HDI_LPARAM	8
+#define HDI_BITMAP	16
+#if (_WIN32_IE >= 0x0300)
+#define HDI_IMAGE	32
+#define HDI_DI_SETITEM	64
+#define HDI_ORDER	128
+#endif
+#define CBES_EX_NOEDITIMAGE	0x00000001
+#define CBES_EX_NOEDITIMAGEINDENT	0x00000002
+#define CBES_EX_PATHWORDBREAKPROC	0x00000004
+#if (_WIN32_IE >= 0x0400)
+#define CBES_EX_NOSIZELIMIT	0x00000008
+#define CBES_EX_CASESENSITIVE	0x00000010
+#define CBEN_GETDISPINFOA	(CBEN_FIRST - 0)
+#define CBEN_GETDISPINFOW	(CBEN_FIRST - 7)
+#define CBEN_DRAGBEGINA	(CBEN_FIRST - 8)
+#define CBEN_DRAGBEGINW	(CBEN_FIRST - 9)
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0500)
+#define HDI_FILTER	256
+#endif
+#define HDF_LEFT	0
+#define HDF_RIGHT	1
+#define HDF_CENTER	2
+#define HDF_JUSTIFYMASK	3
+#define HDF_RTLREADING	4
+#define HDF_OWNERDRAW	0x8000
+#define HDF_STRING	0x4000
+#define HDF_BITMAP	0x2000
+#if (_WIN32_IE >= 0x0300)
+#define HDF_BITMAP_ON_RIGHT	0x1000
+#define HDF_IMAGE	0x0800
+#endif
+#define HDM_GETITEMCOUNT	HDM_FIRST
+#define HDM_INSERTITEMA	(HDM_FIRST+1)
+#define HDM_INSERTITEMW	(HDM_FIRST+10)
+#define HDM_DELETEITEM	(HDM_FIRST+2)
+#define HDM_GETITEMA	(HDM_FIRST+3)
+#define HDM_GETITEMW	(HDM_FIRST+11)
+#define HDM_SETITEMA	(HDM_FIRST+4)
+#define HDM_SETITEMW	(HDM_FIRST+12)
+#define HDM_LAYOUT	(HDM_FIRST+5)
+#if (_WIN32_IE >= 0x0300)
+#define HDM_GETITEMRECT (HDM_FIRST+7)
+#define HDM_SETIMAGELIST	(HDM_FIRST+8)
+#define HDM_GETIMAGELIST	(HDM_FIRST+9)
+#define HDM_ORDERTOINDEX	(HDM_FIRST+15)
+#define HDM_CREATEDRAGIMAGE	(HDM_FIRST+16)
+#define HDM_GETORDERARRAY	(HDM_FIRST+17)
+#define HDM_SETORDERARRAY	(HDM_FIRST+18)
+#define HDM_SETHOTDIVIDER	(HDM_FIRST+19)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define HDM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#define HDM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#endif
+#define HHT_NOWHERE	1
+#define HHT_ONHEADER	2
+#define HHT_ONDIVIDER	4
+#define HHT_ONDIVOPEN	8
+#define HHT_ABOVE	256
+#define HHT_BELOW	512
+#define HHT_TORIGHT	1024
+#define HHT_TOLEFT	2048
+#define HDM_HITTEST	(HDM_FIRST+6)
+#define HDN_ITEMCHANGINGA	(HDN_FIRST-0)
+#define HDN_ITEMCHANGINGW	(HDN_FIRST-20)
+#define HDN_ITEMCHANGEDA	(HDN_FIRST-1)
+#define HDN_ITEMCHANGEDW	(HDN_FIRST-21)
+#define HDN_ITEMCLICKA	(HDN_FIRST-2)
+#define HDN_ITEMCLICKW	(HDN_FIRST-22)
+#define HDN_ITEMDBLCLICKA	(HDN_FIRST-3)
+#define HDN_ITEMDBLCLICKW	(HDN_FIRST-23)
+#define HDN_DIVIDERDBLCLICKA	(HDN_FIRST-5)
+#define HDN_DIVIDERDBLCLICKW	(HDN_FIRST-25)
+#define HDN_BEGINTRACKA	(HDN_FIRST-6)
+#define HDN_BEGINTRACKW	(HDN_FIRST-26)
+#define HDN_ENDTRACKA	(HDN_FIRST-7)
+#define HDN_ENDTRACKW	(HDN_FIRST-27)
+#define HDN_TRACKA	(HDN_FIRST-8)
+#define HDN_TRACKW	(HDN_FIRST-28)
+#if _WIN32_IE >= 0x0300
+#define HDN_ENDDRAG	(HDN_FIRST-11)
+#define HDN_BEGINDRAG	(HDN_FIRST-10)
+#define HDN_GETDISPINFOA (HDN_FIRST-9)
+#define HDN_GETDISPINFOW (HDN_FIRST-29)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define HICF_OTHER 0x00
+#define HICF_MOUSE 0x01
+#define HICF_ARROWKEYS 0x02
+#define HICF_ACCELERATOR 0x04
+#define HICF_DUPACCEL 0x08
+#define HICF_ENTERING 0x10
+#define HICF_LEAVING 0x20
+#define HICF_RESELECT 0x40
+#define HICF_LMOUSE 0x80
+#define HICF_TOGGLEDROPDOWN 0x100
+#endif /* _WIN32_IE >= 0x0400 */
+#define IPM_CLEARADDRESS	(WM_USER+100)
+#define IPM_SETADDRESS	(WM_USER+101)
+#define IPM_GETADDRESS	(WM_USER+102)
+#define IPM_SETRANGE	(WM_USER+103)
+#define IPM_SETFOCUS	(WM_USER+104)
+#define IPM_ISBLANK	(WM_USER+105)
+#if (_WIN32_IE >= 0x0500)
+#define I_INDENTCALLBACK (-1)
+#define I_IMAGENONE (-2)
+#endif
+#define CMB_MASKED 2
+#define TBSTATE_CHECKED	1
+#define TBSTATE_PRESSED	2
+#define TBSTATE_ENABLED	4
+#define TBSTATE_HIDDEN	8
+#define TBSTATE_INDETERMINATE	16
+#define TBSTATE_WRAP	32
+#if (_WIN32_IE >= 0x0300)
+#define TBSTATE_ELLIPSES 0x40
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTATE_MARKED	0x0080
+#endif
+#define TBSTYLE_BUTTON	0
+#define TBSTYLE_SEP	1
+#define TBSTYLE_CHECK	2
+#define TBSTYLE_GROUP	4
+#define TBSTYLE_CHECKGROUP	(TBSTYLE_GROUP|TBSTYLE_CHECK)
+#if (_WIN32_IE >= 0x0300)
+#define TBSTYLE_DROPDOWN	8
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTYLE_AUTOSIZE	16
+#define TBSTYLE_NOPREFIX	32
+#endif
+#define TBSTYLE_TOOLTIPS	256
+#define TBSTYLE_WRAPABLE	512
+#define TBSTYLE_ALTDRAG	1024
+#if (_WIN32_IE >= 0x0300)
+#define TBSTYLE_FLAT 2048
+#define TBSTYLE_LIST 4096
+#define TBSTYLE_CUSTOMERASE 8192
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBSTYLE_REGISTERDROP	0x4000
+#define TBSTYLE_TRANSPARENT	0x8000
+#define TBSTYLE_EX_DRAWDDARROWS	0x00000001
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0501)
+#define TBSTYLE_EX_MIXEDBUTTONS 8
+#define TBSTYLE_EX_HIDECLIPPEDBUTTONS 16
+#endif /* _WIN32_IE >= 0x0501 */
+#if (_WIN32_WINNT >= 0x0501)
+#define TBSTYLE_EX_DOUBLEBUFFER	0x80
+#endif /* _WIN32_WINNT >= 0x0501 */
+#if (_WIN32_IE >= 0x0500)
+#define BTNS_BUTTON	TBSTYLE_BUTTON
+#define BTNS_SEP	TBSTYLE_SEP
+#define BTNS_CHECK	TBSTYLE_CHECK
+#define BTNS_GROUP	TBSTYLE_GROUP
+#define BTNS_CHECKGROUP	TBSTYLE_CHECKGROUP
+#define BTNS_DROPDOWN	TBSTYLE_DROPDOWN
+#define BTNS_AUTOSIZE	TBSTYLE_AUTOSIZE
+#define BTNS_NOPREFIX	TBSTYLE_NOPREFIX
+#define BTNS_WHOLEDROPDOWN	0x0080
+#endif  /* _WIN32_IE >= 0x0500 */
+#if _WIN32_IE >= 0x0501
+#define BTNS_SHOWTEXT	0x0040
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBCDRF_NOEDGES	0x10000
+#define TBCDRF_HILITEHOTTRACK	0x20000
+#define TBCDRF_NOOFFSET	0x40000
+#define TBCDRF_NOMARK	0x80000
+#define TBCDRF_NOETCHEDEFFECT	0x100000
+#endif /* _WIN32_IE >= 0x0400 */
+#define HINST_COMMCTRL	((HINSTANCE)-1)
+#define IDB_STD_SMALL_COLOR	0
+#define IDB_STD_LARGE_COLOR	1
+#define IDB_VIEW_SMALL_COLOR	4
+#define IDB_VIEW_LARGE_COLOR	5
+#if (_WIN32_IE >= 0x0300)
+#define IDB_HIST_SMALL_COLOR	8
+#define IDB_HIST_LARGE_COLOR	9
+#endif
+#define STD_CUT	0
+#define STD_COPY	1
+#define STD_PASTE	2
+#define STD_UNDO	3
+#define STD_REDOW	4
+#define STD_DELETE	5
+#define STD_FILENEW	6
+#define STD_FILEOPEN	7
+#define STD_FILESAVE	8
+#define STD_PRINTPRE	9
+#define STD_PROPERTIES	10
+#define STD_HELP	11
+#define STD_FIND	12
+#define STD_REPLACE	13
+#define STD_PRINT	14
+#define VIEW_LARGEICONS	0
+#define VIEW_SMALLICONS	1
+#define VIEW_LIST	2
+#define VIEW_DETAILS	3
+#define VIEW_SORTNAME	4
+#define VIEW_SORTSIZE	5
+#define VIEW_SORTDATE	6
+#define VIEW_SORTTYPE	7
+#define VIEW_PARENTFOLDER	8
+#define VIEW_NETCONNECT	9
+#define VIEW_NETDISCONNECT	10
+#define VIEW_NEWFOLDER	11
+#define TB_ENABLEBUTTON	(WM_USER+1)
+#define TB_CHECKBUTTON	(WM_USER+2)
+#define TB_PRESSBUTTON	(WM_USER+3)
+#define TB_HIDEBUTTON	(WM_USER+4)
+#define TB_INDETERMINATE	(WM_USER+5)
+#if (_WIN32_IE >= 0x0400)
+#define TB_MARKBUTTON           (WM_USER+6)
+#endif
+#define TB_ISBUTTONENABLED	(WM_USER+9)
+#define TB_ISBUTTONCHECKED	(WM_USER+10)
+#define TB_ISBUTTONPRESSED	(WM_USER+11)
+#define TB_ISBUTTONHIDDEN	(WM_USER+12)
+#define TB_ISBUTTONINDETERMINATE	(WM_USER+13)
+#if (_WIN32_IE >= 0x0400)
+#define TB_ISBUTTONHIGHLIGHTED	(WM_USER+14)
+#endif
+#define TB_SETSTATE	(WM_USER+17)
+#define TB_GETSTATE	(WM_USER+18)
+#define TB_ADDBITMAP	(WM_USER+19)
+#if (_WIN32_IE >= 0x0400)
+#define TB_ADDBUTTONSA	(WM_USER+20)
+#define TB_INSERTBUTTONA	(WM_USER+21)
+#else
+#define TB_ADDBUTTONS	(WM_USER+20)
+#define TB_INSERTBUTTON	(WM_USER+21)
+#endif
+#define TB_DELETEBUTTON	(WM_USER+22)
+#define TB_GETBUTTON	(WM_USER+23)
+#define TB_BUTTONCOUNT	(WM_USER+24)
+#define TB_COMMANDTOINDEX	(WM_USER+25)
+#define TB_SAVERESTOREA	(WM_USER+26)
+#define TB_SAVERESTOREW	(WM_USER+76)
+#define TB_CUSTOMIZE	(WM_USER+27)
+#define TB_ADDSTRINGA	(WM_USER+28)
+#define TB_ADDSTRINGW	(WM_USER+77)
+#define TB_GETITEMRECT	(WM_USER+29)
+#define TB_BUTTONSTRUCTSIZE	(WM_USER+30)
+#define TB_SETBUTTONSIZE	(WM_USER+31)
+#define TB_SETBITMAPSIZE	(WM_USER+32)
+#define TB_AUTOSIZE	(WM_USER+33)
+#define TB_GETTOOLTIPS	(WM_USER+35)
+#define TB_SETTOOLTIPS	(WM_USER+36)
+#define TB_SETPARENT	(WM_USER+37)
+#define TB_SETROWS	(WM_USER+39)
+#define TB_GETROWS	(WM_USER+40)
+#define TB_GETBITMAPFLAGS	(WM_USER+41)
+#define TB_SETCMDID	(WM_USER+42)
+#define TB_CHANGEBITMAP	(WM_USER+43)
+#define TB_GETBITMAP	(WM_USER+44)
+#define TB_GETBUTTONTEXTA	(WM_USER+45)
+#define TB_GETBUTTONTEXTW	(WM_USER+75)
+#define TB_REPLACEBITMAP	(WM_USER+46)
+#define TB_GETBUTTONSIZE	(WM_USER+58)
+#define TB_SETBUTTONWIDTH	(WM_USER+59)
+#if (_WIN32_IE >= 0x0300)
+#define TB_SETINDENT	(WM_USER+47)
+#define TB_SETIMAGELIST	(WM_USER+48)
+#define TB_GETIMAGELIST	(WM_USER+49)
+#define TB_LOADIMAGES	(WM_USER+50)
+#define TB_GETRECT	(WM_USER+51)
+#define TB_SETHOTIMAGELIST	(WM_USER+52)
+#define TB_GETHOTIMAGELIST	(WM_USER+53)
+#define TB_SETDISABLEDIMAGELIST (WM_USER+54)
+#define TB_GETDISABLEDIMAGELIST	(WM_USER+55)
+#define TB_SETSTYLE	(WM_USER+56)
+#define TB_GETSTYLE	(WM_USER+57)
+#define TB_GETBUTTONSIZE	(WM_USER+58)
+#define TB_SETBUTTONWIDTH	(WM_USER+59)
+#define TB_SETMAXTEXTROWS	(WM_USER+60)
+#define TB_GETTEXTROWS	(WM_USER+61)
+#endif
+#if _WIN32_IE >= 0x400
+#define TB_GETOBJECT	(WM_USER+62)
+#define TB_GETBUTTONINFOW	(WM_USER+63)
+#define TB_SETBUTTONINFOW	(WM_USER+64)
+#define TB_GETBUTTONINFOA	(WM_USER+65)
+#define TB_SETBUTTONINFOA	(WM_USER+66)
+#define TB_INSERTBUTTONW	(WM_USER+67)
+#define TB_ADDBUTTONSW	(WM_USER+68)
+#define TB_HITTEST	(WM_USER+69)
+#define TB_SETEXTENDEDSTYLE	(WM_USER+84)
+#define TB_GETEXTENDEDSTYLE	(WM_USER+85)
+#define TB_SETDRAWTEXTFLAGS	(WM_USER+70)
+#define TB_GETHOTITEM	(WM_USER+71)
+#define TB_SETHOTITEM	(WM_USER+72)
+#define TB_SETANCHORHIGHLIGHT	(WM_USER+73)
+#define TB_GETANCHORHIGHLIGHT	(WM_USER+74)
+#define TB_MAPACCELERATORA	(WM_USER+78)
+#define TB_GETINSERTMARK	(WM_USER+79)
+#define TB_SETINSERTMARK	(WM_USER+80)
+#define TB_INSERTMARKHITTEST	(WM_USER+81)
+#define TB_MOVEBUTTON		(WM_USER+82)
+#define TB_GETMAXSIZE		(WM_USER+83)
+#define TB_SETEXTENDEDSTYLE	(WM_USER+84)
+#define TB_GETEXTENDEDSTYLE	(WM_USER+85)
+#define TB_GETPADDING		(WM_USER+86)
+#define TB_SETPADDING		(WM_USER+87)
+#define TB_SETINSERTMARKCOLOR	(WM_USER+88)
+#define TB_GETINSERTMARKCOLOR	(WM_USER+89)
+#define TB_MAPACCELERATORW	(WM_USER+90)
+#define TB_GETSTRINGW		(WM_USER+91)
+#define TB_GETSTRINGA		(WM_USER+92)
+#define TB_SETCOLORSCHEME	CCM_SETCOLORSCHEME
+#define TB_GETCOLORSCHEME	CCM_GETCOLORSCHEME
+#define TB_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TB_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif
+#define TBBF_LARGE 1
+#define TBN_GETBUTTONINFOA	(TBN_FIRST-0)
+#define TBN_BEGINDRAG	(TBN_FIRST-1)
+#define TBN_ENDDRAG	(TBN_FIRST-2)
+#define TBN_BEGINADJUST	(TBN_FIRST-3)
+#define TBN_ENDADJUST	(TBN_FIRST-4)
+#define TBN_RESET	(TBN_FIRST-5)
+#define TBN_QUERYINSERT	(TBN_FIRST-6)
+#define TBN_QUERYDELETE	(TBN_FIRST-7)
+#define TBN_TOOLBARCHANGE	(TBN_FIRST-8)
+#define TBN_CUSTHELP	(TBN_FIRST-9)
+#if (_WIN32_IE >= 0x0300)
+#define TBN_DROPDOWN	(TBN_FIRST-10)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TBN_HOTITEMCHANGE	(TBN_FIRST-13)
+#define TBN_DRAGOUT	(TBN_FIRST-14)
+#define TBN_DELETINGBUTTON	(TBN_FIRST-15)
+#define TBN_GETDISPINFOA	(TBN_FIRST-16)
+#define TBN_GETDISPINFOW	(TBN_FIRST-17)
+#define TBN_GETINFOTIPA	(TBN_FIRST-18)
+#define TBN_GETINFOTIPW	(TBN_FIRST-19)
+#define TBN_GETBUTTONINFOW	(TBN_FIRST-20)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TBN_RESTORE	(TBN_FIRST-21)
+#define TBN_SAVE	(TBN_FIRST-22)
+#define TBN_INITCUSTOMIZE	(TBN_FIRST-23)
+#define TBNRF_HIDEHELP	1
+#define TBNRF_ENDCUSTOMIZE	2
+#define TBNF_IMAGE	1
+#define TBNF_TEXT	2
+#define TBNF_DI_SETITEM	0x10000000
+#endif /* _WIN32_IE >= 0x0500 */
+#define TTS_ALWAYSTIP	1
+#define TTS_NOPREFIX	2
+#if( _WIN32_IE >= 0x0500 )
+#define TTS_NOANIMATE	0x10
+#define TTS_NOFADE	0x20
+#define TTS_BALLOON	0x40
+#define TTS_CLOSE	0x80
+#endif /* _WIN32_IE >= 0x0500 */
+#define TTF_IDISHWND	1
+#define TTF_CENTERTIP	2
+#define TTF_RTLREADING	4
+#define TTF_SUBCLASS	16
+#if (_WIN32_IE >= 0x0300)
+#define TTF_TRACK 0x0020
+#define TTF_ABSOLUTE 0x0080
+#define TTF_TRANSPARENT 0x0100
+#if (_WIN32_IE >= 0x0501)
+#define TTF_PARSELINKS 0x1000
+#endif
+#define TTF_DI_SETITEM 0x8000
+#define TBCD_TICS 1
+#define TBCD_THUMB 2
+#define TBCD_CHANNEL 3
+#endif /* _WIN32_IE >= 0x0300 */
+#if (_WIN32_IE >= 0x0400)
+#define TBDDRET_DEFAULT 0
+#define TBDDRET_NODEFAULT 1
+#define TBDDRET_TREATPRESSED 2
+#define TBIMHT_AFTER 1
+#define TBIMHT_BACKGROUND 2
+#endif
+#define TTDT_AUTOMATIC	0
+#define TTDT_RESHOW	1
+#define TTDT_AUTOPOP	2
+#define TTDT_INITIAL	3
+#define TTM_ACTIVATE	(WM_USER+1)
+#define TTM_SETDELAYTIME	(WM_USER+3)
+#define TTM_ADDTOOLA	(WM_USER+4)
+#define TTM_ADDTOOLW	(WM_USER+50)
+#define TTM_DELTOOLA	(WM_USER+5)
+#define TTM_DELTOOLW	(WM_USER+51)
+#define TTM_NEWTOOLRECTA	(WM_USER+6)
+#define TTM_NEWTOOLRECTW	(WM_USER+52)
+#define TTM_RELAYEVENT	(WM_USER+7)
+#define TTM_GETTOOLINFOA	(WM_USER+8)
+#define TTM_GETTOOLINFOW	(WM_USER+53)
+#define TTM_SETTOOLINFOA	(WM_USER+9)
+#define TTM_SETTOOLINFOW	(WM_USER+54)
+#define TTM_HITTESTA	(WM_USER+10)
+#define TTM_HITTESTW	(WM_USER+55)
+#define TTM_GETTEXTA	(WM_USER+11)
+#define TTM_GETTEXTW	(WM_USER+56)
+#define TTM_UPDATETIPTEXTA	(WM_USER+12)
+#define TTM_UPDATETIPTEXTW	(WM_USER+57)
+#define TTM_GETTOOLCOUNT	(WM_USER+13)
+#define TTM_ENUMTOOLSA	(WM_USER+14)
+#define TTM_ENUMTOOLSW	(WM_USER+58)
+#define TTM_GETCURRENTTOOLA	(WM_USER+15)
+#define TTM_GETCURRENTTOOLW	(WM_USER+59)
+#define TTM_WINDOWFROMPOINT	(WM_USER+16)
+#if (_WIN32_IE >= 0x0300)
+#define TTM_TRACKACTIVATE	  (WM_USER+17)  
+#define TTM_TRACKPOSITION	  (WM_USER+18)  
+#define TTM_SETTIPBKCOLOR	  (WM_USER+19)
+#define TTM_SETTIPTEXTCOLOR	(WM_USER+20)
+#define TTM_GETDELAYTIME	   (WM_USER+21)
+#define TTM_GETTIPBKCOLOR	  (WM_USER+22)
+#define TTM_GETTIPTEXTCOLOR	(WM_USER+23)
+#define TTM_SETMAXTIPWIDTH	 (WM_USER+24)
+#define TTM_GETMAXTIPWIDTH	 (WM_USER+25)
+#define TTM_SETMARGIN		 (WM_USER+26)  
+#define TTM_GETMARGIN		 (WM_USER+27)  
+#define TTM_POP			  (WM_USER+28)
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)			/* IE4.0 ??? */
+#define TTM_UPDATE		    (WM_USER+29)
+#define TTM_GETBUBBLESIZE	(WM_USER+30)
+#define TTM_ADJUSTRECT	(WM_USER+31)
+#define TTM_SETTITLEA	(WM_USER+32)
+#define TTM_SETTITLEW	(WM_USER+33)
+#endif
+#define TTN_GETDISPINFOA    (TTN_FIRST - 0)
+#define TTN_GETDISPINFOW    (TTN_FIRST - 10)
+#define TTN_NEEDTEXTA	TTN_GETDISPINFOA
+#define TTN_NEEDTEXTW	TTN_GETDISPINFOW
+#define TTN_SHOW	(TTN_FIRST-1)
+#define TTN_POP	(TTN_FIRST-2)
+#define UD_MAXVAL	0x7fff
+#define UD_MINVAL	(-UD_MAXVAL)
+#define UDN_DELTAPOS (UDN_FIRST-1)
+#define UDS_WRAP	1
+#define UDS_SETBUDDYINT	2
+#define UDS_ALIGNRIGHT	4
+#define UDS_ALIGNLEFT	8
+#define UDS_AUTOBUDDY	16
+#define UDS_ARROWKEYS	32
+#define UDS_HORZ	64
+#define UDS_NOTHOUSANDS	128
+#if ( _WIN32_IE >= 0x0300 )
+#define UDS_HOTTRACK	0x0100
+#endif /* _WIN32_IE >= 0x0300 */
+#define UDM_SETRANGE	(WM_USER+101)
+#define UDM_GETRANGE	(WM_USER+102)
+#define UDM_SETPOS	(WM_USER+103)
+#define UDM_GETPOS	(WM_USER+104)
+#define UDM_SETBUDDY	(WM_USER+105)
+#define UDM_GETBUDDY	(WM_USER+106)
+#define UDM_SETACCEL	(WM_USER+107)
+#define UDM_GETACCEL	(WM_USER+108)
+#define UDM_SETBASE	(WM_USER+109)
+#define UDM_GETBASE	(WM_USER+110)
+#if (_WIN32_IE >= 0x0400)
+#define UDM_SETRANGE32	(WM_USER+111)
+#define UDM_GETRANGE32	(WM_USER+112)
+#define UDM_SETPOS32	(WM_USER+113)
+#define UDM_GETPOS32	(WM_USER+114)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define UDM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define UDM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif
+#define SB_SETTEXTA	(WM_USER+1)
+#define SB_SETTEXTW	(WM_USER+11)
+#define SB_GETTEXTA	(WM_USER+2)
+#define SB_GETTEXTW	(WM_USER+13)
+#define SB_GETTEXTLENGTHA	(WM_USER+3)
+#define SB_GETTEXTLENGTHW	(WM_USER+12)
+#define SB_SETPARTS	(WM_USER+4)
+#define SB_GETPARTS	(WM_USER+6)
+#define SB_GETBORDERS	(WM_USER+7)
+#define SB_SETMINHEIGHT	(WM_USER+8)
+#define SB_SIMPLE	(WM_USER+9)
+#define SB_GETRECT	(WM_USER+10)
+#define SBT_OWNERDRAW	0x1000
+#define SBT_NOBORDERS	256
+#define SBT_POPOUT	512
+#define SBT_RTLREADING	1024
+#if( _WIN32_IE >= 0x0400 )
+#define SBT_TOOLTIPS	0x0800
+#define SBN_SIMPLEMODECHANGE	(SBN_FIRST)
+#endif /* _WIN32_IE >= 0x0400 */
+#define TBS_AUTOTICKS	1
+#define TBS_VERT	2
+#define TBS_HORZ	0
+#define TBS_TOP	4
+#define TBS_BOTTOM	0
+#define TBS_LEFT	4
+#define TBS_RIGHT	0
+#define TBS_BOTH	8
+#define TBS_NOTICKS	16
+#define TBS_ENABLESELRANGE	32
+#define TBS_FIXEDLENGTH	64
+#define TBS_NOTHUMB	128
+#if (_WIN32_IE >= 0x0300)
+#define TBS_TOOLTIPS 0x0100
+#define TBTS_TOP 0
+#define TBTS_LEFT 1
+#define TBTS_BOTTOM 2
+#define TBTS_RIGHT 3
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TBS_REVERSED 0x0200
+#endif
+#if (_WIN32_IE >= 0x0501)
+#define TBS_DOWNISLEFT 0x0400
+#endif
+#if _WIN32_IE >= 0x400
+#define TBIF_BYINDEX 0x80000000
+#define TBIF_COMMAND 32
+#define TBIF_IMAGE 1
+#define TBIF_LPARAM 16
+#define TBIF_SIZE 64
+#define TBIF_STATE 4
+#define TBIF_STYLE 8
+#define TBIF_TEXT 2
+#endif
+#define TBM_GETPOS	(WM_USER)
+#define TBM_GETRANGEMIN	(WM_USER+1)
+#define TBM_GETRANGEMAX	(WM_USER+2)
+#define TBM_GETTIC	(WM_USER+3)
+#define TBM_SETTIC	(WM_USER+4)
+#define TBM_SETPOS	(WM_USER+5)
+#define TBM_SETRANGE	(WM_USER+6)
+#define TBM_SETRANGEMIN	(WM_USER+7)
+#define TBM_SETRANGEMAX	(WM_USER+8)
+#define TBM_CLEARTICS	(WM_USER+9)
+#define TBM_SETSEL	(WM_USER+10)
+#define TBM_SETSELSTART	(WM_USER+11)
+#define TBM_SETSELEND	(WM_USER+12)
+#define TBM_GETPTICS	(WM_USER+14)
+#define TBM_GETTICPOS	(WM_USER+15)
+#define TBM_GETNUMTICS	(WM_USER+16)
+#define TBM_GETSELSTART	(WM_USER+17)
+#define TBM_GETSELEND	(WM_USER+18)
+#define TBM_CLEARSEL	(WM_USER+19)
+#define TBM_SETTICFREQ	(WM_USER+20)
+#define TBM_SETPAGESIZE	(WM_USER+21)
+#define TBM_GETPAGESIZE	(WM_USER+22)
+#define TBM_SETLINESIZE	(WM_USER+23)
+#define TBM_GETLINESIZE	(WM_USER+24)
+#define TBM_GETTHUMBRECT	(WM_USER+25)
+#define TBM_GETCHANNELRECT	(WM_USER+26)
+#define TBM_SETTHUMBLENGTH	(WM_USER+27)
+#define TBM_GETTHUMBLENGTH	(WM_USER+28)
+#define TBM_SETTOOLTIPS	(WM_USER+29)
+#define TBM_GETTOOLTIPS	(WM_USER+30)
+#define TBM_SETTIPSIDE	(WM_USER+31)
+#define TBM_SETBUDDY	(WM_USER+32)
+#define TBM_GETBUDDY	(WM_USER+33)
+#define TBM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT 
+#define TBM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TB_LINEUP	0
+#define TB_LINEDOWN	1
+#define TB_PAGEUP	2
+#define TB_PAGEDOWN	3
+#define TB_THUMBPOSITION	4
+#define TB_THUMBTRACK	5
+#define TB_TOP	6
+#define TB_BOTTOM	7
+#define TB_ENDTRACK	8
+#define HOTKEYF_SHIFT	1
+#define HOTKEYF_CONTROL	2
+#define HOTKEYF_ALT	4
+#define HOTKEYF_EXT	8
+#define HKCOMB_NONE	1
+#define HKCOMB_S	2
+#define HKCOMB_C	4
+#define HKCOMB_A	8
+#define HKCOMB_SC	16
+#define HKCOMB_SA	32
+#define HKCOMB_CA	64
+#define HKCOMB_SCA	128
+#define HKM_SETHOTKEY	(WM_USER+1)
+#define HKM_GETHOTKEY	(WM_USER+2)
+#define HKM_SETRULES	(WM_USER+3)
+#define PBM_SETRANGE	(WM_USER+1)
+#define PBM_SETPOS	(WM_USER+2)
+#define PBM_DELTAPOS	(WM_USER+3)
+#define PBM_SETSTEP	(WM_USER+4)
+#define PBM_STEPIT	(WM_USER+5)
+#define PBM_SETRANGE32	1030
+#define PBM_GETRANGE	1031
+#define PBM_GETPOS	1032
+#define PBM_SETBARCOLOR	1033
+#define PBM_SETBKCOLOR	CCM_SETBKCOLOR
+#define PBS_SMOOTH	1
+#define PBS_VERTICAL	4
+#define LVS_ICON	0
+#define LVS_REPORT	1
+#define LVS_SMALLICON	2
+#define LVS_LIST	3
+#define LVS_TYPEMASK	3
+#define LVS_SINGLESEL	4
+#define LVS_SHOWSELALWAYS	8
+#define LVS_SORTASCENDING	16
+#define LVS_SORTDESCENDING	32
+#define LVS_SHAREIMAGELISTS	64
+#define LVS_NOLABELWRAP	128
+#define LVS_AUTOARRANGE	256
+#define LVS_EDITLABELS	512
+#define LVS_NOSCROLL	0x2000
+#define LVS_TYPESTYLEMASK	0xfc00
+#define LVS_ALIGNTOP	0
+#define LVS_ALIGNLEFT	0x800
+#define LVS_ALIGNMASK	0xc00
+#define LVS_OWNERDRAWFIXED	0x400
+#define LVS_NOCOLUMNHEADER	0x4000
+#define LVS_NOSORTHEADER	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define CDIS_CHECKED 8
+#define CDIS_DEFAULT 32
+#define CDIS_DISABLED 4
+#define CDIS_FOCUS 16
+#define CDIS_GRAYED 2
+#define CDIS_HOT 64
+#define CDIS_SELECTED 1
+#define CDIS_MARKED 128
+#define CDIS_INDETERMINATE 256
+#if (_WIN32_WINNT >= 0x0501)
+#define CDIS_SHOWKEYBOARDCUES 512
+#endif
+#define CDDS_POSTERASE 4
+#define CDDS_POSTPAINT 2
+#define CDDS_PREERASE 3
+#define CDDS_PREPAINT 1
+#define CDDS_ITEM 65536
+#define CDDS_ITEMPOSTERASE 65540
+#define CDDS_ITEMPOSTPAINT 65538
+#define CDDS_ITEMPREERASE 65539
+#define CDDS_ITEMPREPAINT 65537
+#if (_WIN32_IE >= 0x0400)
+#define CDDS_SUBITEM 0x20000
+#endif
+#define CDRF_DODEFAULT 0x00
+#define CDRF_NOTIFYITEMDRAW 0x20
+#define CDRF_NOTIFYSUBITEMDRAW 0x20
+#define CDRF_NOTIFYITEMERASE 0x80
+#define CDRF_NOTIFYPOSTERASE 0x40
+#define CDRF_NOTIFYPOSTPAINT 0x10
+#define CDRF_NEWFONT 0x02
+#define CDRF_SKIPDEFAULT 0x04
+#if (_WIN32_IE >= 0x0400)
+#define LVBKIF_SOURCE_NONE      0x00000000
+#define LVBKIF_SOURCE_HBITMAP   0x00000001
+#define LVBKIF_SOURCE_URL       0x00000002
+#define LVBKIF_SOURCE_MASK      0x00000003
+#define LVBKIF_STYLE_NORMAL     0x00000000
+#define LVBKIF_STYLE_TILE       0x00000010
+#define LVBKIF_STYLE_MASK       0x00000010
+#endif /* _WIN32_IE >=0x0400 */
+#if (_WIN32_WINNT >= 0x501)
+#define LVBKIF_FLAG_TILEOFFSET  0x00000100
+#define LVBKIF_TYPE_WATERMARK   0x10000000
+#endif /* _WIN32_WINNT >= 0x501 */
+#define LVS_OWNERDATA 4096
+#define LVS_EX_CHECKBOXES 4
+#define LVS_EX_FULLROWSELECT 32
+#define LVS_EX_GRIDLINES 1
+#define LVS_EX_HEADERDRAGDROP 16
+#define LVS_EX_ONECLICKACTIVATE 64
+#define LVS_EX_SUBITEMIMAGES 2
+#define LVS_EX_TRACKSELECT 8
+#define LVS_EX_TWOCLICKACTIVATE 128
+#define LVSICF_NOINVALIDATEALL	0x00000001
+#define LVSICF_NOSCROLL	0x00000002
+#if( _WIN32_IE >= 0x0400 )
+#define LVS_EX_FLATSB	0x00000100
+#define LVS_EX_REGIONAL	0x00000200
+#define LVS_EX_INFOTIP	0x00000400
+#define LVS_EX_UNDERLINEHOT	0x00000800
+#define LVS_EX_UNDERLINECOLD	0x00001000
+#define LVS_EX_MULTIWORKAREAS	0x00002000
+#endif /* _WIN32_IE >=0x0400 */
+#if( _WIN32_IE >= 0x0500 )
+#define LVS_EX_LABELTIP	0x00004000
+#define LVS_EX_BORDERSELECT	0x00008000
+#endif  /* _WIN32_IE >= 0x0500 */
+#endif  /* _WIN32_IE >= 0x0300 */
+#define LVSIL_NORMAL	0
+#define LVSIL_SMALL	1
+#define LVSIL_STATE	2
+#define LVM_GETBKCOLOR	LVM_FIRST
+#define LVM_SETBKCOLOR	(LVM_FIRST+1)
+#define LVM_GETIMAGELIST	(LVM_FIRST+2)
+#define LVM_SETIMAGELIST	(LVM_FIRST+3)
+#define LVM_GETITEMCOUNT	(LVM_FIRST+4)
+#define LVM_SORTITEMSEX		(LVM_FIRST+81)
+#if (_WIN32_WINNT >= 0x501)
+#define LVM_SETSELECTEDCOLUMN	(LVM_FIRST+140)
+#endif
+#define LVM_SETVIEW		(LVM_FIRST+142)
+#define LVM_GETVIEW		(LVM_FIRST+143)
+#define LVM_INSERTGROUP		(LVM_FIRST+145)
+#define LVM_SETGROUPINFO	(LVM_FIRST+147)
+#define LVM_GETGROUPINFO	(LVM_FIRST+149)
+#define LVM_REMOVEGROUP		(LVM_FIRST+150)
+#define LVM_MOVEGROUP		(LVM_FIRST+151)
+#define LVM_SETGROUPMETRICS	(LVM_FIRST+155)
+#define LVM_GETGROUPMETRICS	(LVM_FIRST+156)
+#define LVM_ENABLEGROUPVIEW	(LVM_FIRST+157)
+#define LVM_SORTGROUPS		(LVM_FIRST+158)
+#define LVM_INSERTGROUPSORTED	(LVM_FIRST+159)
+#define LVM_REMOVEALLGROUPS	(LVM_FIRST+160)
+#define LVM_HASGROUP		(LVM_FIRST+161)
+#define LVM_SETTILEVIEWINFO	(LVM_FIRST+162)
+#define LVM_GETTILEVIEWINFO	(LVM_FIRST+163)
+#define LVM_SETTILEINFO		(LVM_FIRST+164)
+#define LVM_GETTILEINFO		(LVM_FIRST+165)
+#define LVM_SETINSERTMARK	(LVM_FIRST+166)
+#define LVM_GETINSERTMARK	(LVM_FIRST+167)
+#define LVM_INSERTMARKHITTEST	(LVM_FIRST+168)
+#define LVM_GETINSERTMARKRECT	(LVM_FIRST+169)
+#define LVM_SETINSERTMARKCOLOR	(LVM_FIRST+170)
+#define LVM_GETINSERTMARKCOLOR	(LVM_FIRST+171)
+#define LVM_SETINFOTIP		(LVM_FIRST+173)
+#define LVM_GETSELECTEDCOLUMN	(LVM_FIRST+174)
+#define LVM_ISGROUPVIEWENABLED	(LVM_FIRST+175)
+#define LVM_GETOUTLINECOLOR	(LVM_FIRST+176)
+#define LVM_SETOUTLINECOLOR	(LVM_FIRST+177)
+#define LVM_CANCELEDITLABEL	(LVM_FIRST+179)
+#define LVM_MAPIDTOINDEX	(LVM_FIRST+181)
+#define LVIF_TEXT	1
+#define LVIF_IMAGE	2
+#define LVIF_PARAM	4
+#define LVIF_STATE	8
+#if (_WIN32_IE >= 0x0300)
+#define LVIF_INDENT 16
+#define LVIF_NORECOMPUTE 2048
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+#define LVIF_GROUPID 256
+#define LVIF_COLUMNS 512
+#endif
+#define LVIS_FOCUSED	1
+#define LVIS_SELECTED	2
+#define LVIS_CUT	4
+#define LVIS_DROPHILITED	8
+#define LVIS_OVERLAYMASK	0xF00
+#define LVIS_STATEIMAGEMASK	0xF000
+#define LPSTR_TEXTCALLBACKW	((LPWSTR)-1)
+#define LPSTR_TEXTCALLBACKA	((LPSTR)-1)
+#define I_IMAGECALLBACK	(-1)
+#define LVM_GETITEMA	(LVM_FIRST+5)
+#define LVM_GETITEMW	(LVM_FIRST+75)
+#define LVM_SETITEMA	(LVM_FIRST+6)
+#define LVM_SETITEMW	(LVM_FIRST+76)
+#define LVM_INSERTITEMA	(LVM_FIRST+7)
+#define LVM_INSERTITEMW	(LVM_FIRST+77)
+#define LVM_DELETEITEM	(LVM_FIRST+8)
+#define LVM_DELETEALLITEMS	(LVM_FIRST+9)
+#define LVM_GETCALLBACKMASK	(LVM_FIRST+10)
+#define LVM_SETCALLBACKMASK	(LVM_FIRST+11)
+#if( _WIN32_IE >= 0x0400 )
+#define LVM_SETBKIMAGEA	(LVM_FIRST + 68)
+#define LVM_SETBKIMAGEW	(LVM_FIRST + 138)
+#define LVM_GETBKIMAGEA	(LVM_FIRST + 69)
+#define LVM_GETBKIMAGEW	(LVM_FIRST + 139)
+#define LV_MAX_WORKAREAS	16
+#define LVM_SETWORKAREAS	(LVM_FIRST+65)
+#define LVM_GETWORKAREAS	(LVM_FIRST+70)
+#define LVM_GETNUMBEROFWORKAREAS	(LVM_FIRST+73)
+#define LVM_GETSELECTIONMARK	(LVM_FIRST+66)
+#define LVM_SETSELECTIONMARK	(LVM_FIRST+67)
+#define LVM_SETHOVERTIME	(LVM_FIRST+71)
+#define LVM_GETHOVERTIME	(LVM_FIRST+72)
+#define LVM_SETTOOLTIPS	(LVM_FIRST+74)
+#define LVM_GETTOOLTIPS	(LVM_FIRST+78)
+#define LVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define LVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >= 0x0400 */
+#define LVNI_ALL	0
+#define LVNI_FOCUSED	1
+#define LVNI_SELECTED	2
+#define LVNI_CUT	4
+#define LVNI_DROPHILITED	8
+#define LVNI_ABOVE	256
+#define LVNI_BELOW	512
+#define LVNI_TOLEFT	1024
+#define LVNI_TORIGHT	2048
+#define LVM_GETNEXTITEM	(LVM_FIRST+12)
+#define LVFI_PARAM	1
+#define LVFI_STRING	2
+#define LVFI_PARTIAL	8
+#define LVFI_WRAP	32
+#define LVFI_NEARESTXY	64
+#define LVIF_DI_SETITEM	0x1000
+#define LVM_FINDITEMA	(LVM_FIRST+13)
+#define LVM_FINDITEMW	(LVM_FIRST+83)
+#define LVIR_BOUNDS	0
+#define LVIR_ICON	1
+#define LVIR_LABEL	2
+#define LVIR_SELECTBOUNDS	3
+#define LVM_GETITEMRECT	(LVM_FIRST+14)
+#define LVM_SETITEMPOSITION	(LVM_FIRST+15)
+#define LVM_GETITEMPOSITION	(LVM_FIRST+16)
+#define LVM_GETSTRINGWIDTHA	(LVM_FIRST+17)
+#define LVM_GETSTRINGWIDTHW	(LVM_FIRST+87)
+#define LVHT_NOWHERE	1
+#define LVHT_ONITEMICON	2
+#define LVHT_ONITEMLABEL	4
+#define LVHT_ONITEMSTATEICON	8
+#define LVHT_ONITEM	(LVHT_ONITEMICON|LVHT_ONITEMLABEL|LVHT_ONITEMSTATEICON)
+#define LVHT_ABOVE	8
+#define LVHT_BELOW	16
+#define LVHT_TORIGHT	32
+#define LVHT_TOLEFT	64
+#define LVM_HITTEST	(LVM_FIRST+18)
+#define LVM_ENSUREVISIBLE	(LVM_FIRST+19)
+#define LVM_SCROLL	(LVM_FIRST+20)
+#define LVM_REDRAWITEMS	(LVM_FIRST+21)
+#define LVA_DEFAULT	0
+#define LVA_ALIGNLEFT	1
+#define LVA_ALIGNTOP	2
+#define LVA_SNAPTOGRID	5
+#define LVM_ARRANGE	(LVM_FIRST+22)
+#define LVM_EDITLABELA	(LVM_FIRST+23)
+#define LVM_EDITLABELW	(LVM_FIRST+118)
+#define LVM_GETEDITCONTROL	(LVM_FIRST+24)
+#define LVCF_FMT	1
+#define LVCF_WIDTH	2
+#define LVCF_TEXT	4
+#define LVCF_SUBITEM	8
+#if (_WIN32_IE >= 0x0300)
+#define LVCF_IMAGE 16
+#define LVCF_ORDER 32
+#endif
+#define LVCFMT_LEFT	0
+#define LVCFMT_RIGHT	1
+#define LVCFMT_CENTER	2
+#define LVCFMT_JUSTIFYMASK	3
+#if (_WIN32_IE >= 0x0300)
+#define LVCFMT_BITMAP_ON_RIGHT 4096
+#define LVCFMT_COL_HAS_IMAGES  32768
+#define LVCFMT_IMAGE 2048 
+#endif
+#define LVM_GETCOLUMNA	(LVM_FIRST+25)
+#define LVM_GETCOLUMNW	(LVM_FIRST+95)
+#define LVM_SETCOLUMNA	(LVM_FIRST+26)
+#define LVM_SETCOLUMNW	(LVM_FIRST+96)
+#define LVM_INSERTCOLUMNA	(LVM_FIRST+27)
+#define LVM_INSERTCOLUMNW	(LVM_FIRST+97)
+#define LVM_DELETECOLUMN	(LVM_FIRST+28)
+#define LVM_GETCOLUMNWIDTH	(LVM_FIRST+29)
+#define LVSCW_AUTOSIZE	(-1)
+#define LVSCW_AUTOSIZE_USEHEADER	(-2)
+#define LVM_SETCOLUMNWIDTH	(LVM_FIRST+30)
+#define LVM_CREATEDRAGIMAGE	(LVM_FIRST+33)
+#define LVM_GETVIEWRECT	(LVM_FIRST+34)
+#define LVM_GETTEXTCOLOR	(LVM_FIRST+35)
+#define LVM_SETTEXTCOLOR	(LVM_FIRST+36)
+#define LVM_GETTEXTBKCOLOR	(LVM_FIRST+37)
+#define LVM_SETTEXTBKCOLOR	(LVM_FIRST+38)
+#define LVM_GETTOPINDEX	(LVM_FIRST+39)
+#define LVM_GETCOUNTPERPAGE	(LVM_FIRST+40)
+#define LVM_GETORIGIN	(LVM_FIRST+41)
+#define LVM_GETORIGIN	(LVM_FIRST+41)
+#define LVM_UPDATE	(LVM_FIRST+42)
+#define LVM_SETITEMSTATE	(LVM_FIRST+43)
+#define LVM_GETITEMSTATE	(LVM_FIRST+44)
+#define LVM_GETITEMTEXTA	(LVM_FIRST+45)
+#define LVM_GETITEMTEXTW	(LVM_FIRST+115)
+#define LVM_SETITEMTEXTA	(LVM_FIRST+46)
+#define LVM_SETITEMTEXTW	(LVM_FIRST+116)
+#define LVM_SETITEMCOUNT	(LVM_FIRST+47)
+#define LVM_SORTITEMS	(LVM_FIRST+48)
+#define LVM_SETITEMPOSITION32	(LVM_FIRST+49)
+#define LVM_GETSELECTEDCOUNT	(LVM_FIRST+50)
+#define LVM_GETITEMSPACING	(LVM_FIRST+51)
+#define LVM_GETISEARCHSTRINGA	(LVM_FIRST+52)
+#define LVM_GETISEARCHSTRINGW	(LVM_FIRST+117)
+#if (_WIN32_IE >= 0x0300)
+#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
+#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
+#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
+#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
+#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
+#define LVM_GETHEADER (LVM_FIRST+31)
+#define LVM_GETHOTCURSOR (LVM_FIRST+63)
+#define LVM_GETHOTITEM (LVM_FIRST+61)
+#define LVM_GETSUBITEMRECT (LVM_FIRST+56)
+#define LVM_SETHOTCURSOR (LVM_FIRST+62)
+#define LVM_SETHOTITEM (LVM_FIRST+60)
+#define LVM_SETICONSPACING (LVM_FIRST+53)
+#define LVM_SUBITEMHITTEST (LVM_FIRST+57)
+#endif
+#define LVN_ITEMCHANGING	LVN_FIRST
+#define LVN_ITEMCHANGED	(LVN_FIRST-1)
+#define LVN_INSERTITEM	(LVN_FIRST-2)
+#define LVN_DELETEITEM	(LVN_FIRST-3)
+#define LVN_DELETEALLITEMS	(LVN_FIRST-4)
+#define LVN_BEGINLABELEDITA	(LVN_FIRST-5)
+#define LVN_BEGINLABELEDITW	(LVN_FIRST-75)
+#define LVN_ENDLABELEDITA	(LVN_FIRST-6)
+#define LVN_ENDLABELEDITW	(LVN_FIRST-76)
+#define LVN_COLUMNCLICK	(LVN_FIRST-8)
+#define LVN_BEGINDRAG	(LVN_FIRST-9)
+#define LVN_BEGINRDRAG	(LVN_FIRST-11)
+#define LVN_GETDISPINFOA	(LVN_FIRST-50)
+#define LVN_GETDISPINFOW	(LVN_FIRST-77)
+#define LVN_SETDISPINFOA	(LVN_FIRST-51)
+#define LVN_SETDISPINFOW	(LVN_FIRST-78)
+#define LVN_KEYDOWN	(LVN_FIRST-55)
+#if (_WIN32_IE >= 0x0400)
+#define LVN_MARQUEEBEGIN  (LVN_FIRST-56)
+#define LVN_GETINFOTIPA	(LVN_FIRST-57)
+#define LVN_GETINFOTIPW	(LVN_FIRST-58)
+#define LVKF_ALT	0x0001
+#define LVKF_CONTROL	0x0002
+#define LVKF_SHIFT	0x0004
+#define LVGIT_UNFOLDED  1
+#endif
+#define TVS_HASBUTTONS	1
+#define TVS_HASLINES	2
+#define TVS_LINESATROOT	4
+#define TVS_EDITLABELS	8
+#define TVS_DISABLEDRAGDROP	16
+#define TVS_SHOWSELALWAYS	32
+#if (_WIN32_IE >= 0x0300)
+#define TVS_CHECKBOXES 256
+#define TVS_NOTOOLTIPS 128
+#define TVS_RTLREADING 64
+#define TVS_TRACKSELECT 512
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TVS_FULLROWSELECT 4096
+#define TVS_INFOTIP 2048
+#define TVS_NONEVENHEIGHT 16384
+#define TVS_NOSCROLL 8192
+#define TVS_SINGLEEXPAND 1024
+#endif
+#if( _WIN32_IE >= 0x0500 )
+#define TVS_NOHSCROLL	0x8000
+#endif /* _WIN32_IE >= 0x0500 */
+#define TVIF_TEXT	1
+#define TVIF_IMAGE	2
+#define TVIF_PARAM	4
+#define TVIF_STATE	8
+#define TVIF_HANDLE	16
+#define TVIF_SELECTEDIMAGE	32
+#define TVIF_CHILDREN	64
+#if (_WIN32_IE >= 0x0400)
+#define TVIF_INTEGRAL	0x0080
+#endif /* _WIN32_IE >= 0x0400 */
+#define TVIS_FOCUSED	1
+#define TVIS_SELECTED	2
+#define TVIS_CUT	4
+#define TVIS_DROPHILITED	8
+#define TVIS_BOLD	16
+#define TVIS_EXPANDED	32
+#define TVIS_EXPANDEDONCE	64
+#define TVIS_OVERLAYMASK	0xF00
+#define TVIS_STATEIMAGEMASK	0xF000
+#define TVIS_USERMASK	0xF000
+#define I_CHILDRENCALLBACK	(-1)
+#define TVI_ROOT	((HTREEITEM)0xFFFF0000)
+#define TVI_FIRST	((HTREEITEM)0xFFFF0001)
+#define TVI_LAST	((HTREEITEM)0xFFFF0002)
+#define TVI_SORT	((HTREEITEM)0xFFFF0003)
+#define TVSIL_NORMAL	0
+#define TVSIL_STATE	2
+#define TVM_INSERTITEMA	TV_FIRST
+#define TVM_INSERTITEMW	(TV_FIRST+50)
+#define TVM_DELETEITEM	(TV_FIRST+1)
+#define TVM_EXPAND	(TV_FIRST+2)
+#define TVM_GETITEMRECT	(TV_FIRST+4)
+#define TVM_GETCOUNT	(TV_FIRST+5)
+#define TVM_GETINDENT	(TV_FIRST+6)
+#define TVM_SETINDENT	(TV_FIRST+7)
+#define TVM_GETIMAGELIST	(TV_FIRST+8)
+#define TVM_SETIMAGELIST	(TV_FIRST+9)
+#define TVM_GETNEXTITEM	(TV_FIRST+10)
+#define TVM_SELECTITEM	(TV_FIRST+11)
+#define TVM_GETITEMA	(TV_FIRST+12)
+#define TVM_GETITEMW	(TV_FIRST+62)
+#define TVM_SETITEMA	(TV_FIRST+13)
+#define TVM_SETITEMW	(TV_FIRST+63)
+#define TVM_EDITLABELA	(TV_FIRST+14)
+#define TVM_EDITLABELW	(TV_FIRST+65)
+#define TVM_GETEDITCONTROL	(TV_FIRST+15)
+#define TVM_GETVISIBLECOUNT	(TV_FIRST+16)
+#define TVM_HITTEST	(TV_FIRST+17)
+#define TVM_CREATEDRAGIMAGE	(TV_FIRST+18)
+#define TVM_SORTCHILDREN	(TV_FIRST+19)
+#define TVM_ENSUREVISIBLE	(TV_FIRST+20)
+#define TVM_SORTCHILDRENCB	(TV_FIRST+21)
+#define TVM_ENDEDITLABELNOW	(TV_FIRST+22)
+#define TVM_GETISEARCHSTRINGA	(TV_FIRST+23)
+#define TVM_GETISEARCHSTRINGW	(TV_FIRST+64)
+#if (_WIN32_IE >= 0x0300)
+#define TVM_GETTOOLTIPS (TV_FIRST+25)
+#define TVM_SETTOOLTIPS (TV_FIRST+24)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define TVM_GETBKCOLOR (TV_FIRST+31)
+#define TVM_GETINSERTMARKCOLOR (TV_FIRST+38)
+#define TVM_GETITEMHEIGHT (TV_FIRST+28)
+#define TVM_GETSCROLLTIME (TV_FIRST+34)
+#define TVM_GETTEXTCOLOR (TV_FIRST+32)
+#define TVM_SETBKCOLOR (TV_FIRST+29)
+#define TVM_SETINSERTMARK (TV_FIRST+26)
+#define TVM_SETINSERTMARKCOLOR (TV_FIRST+37)
+#define TVM_SETITEMHEIGHT (TV_FIRST+27)
+#define TVM_SETSCROLLTIME (TV_FIRST+33)
+#define TVM_SETTEXTCOLOR (TV_FIRST+30)
+#define TVM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define TVM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TVM_GETITEMSTATE (TV_FIRST+39)
+#define TVM_SETLINECOLOR (TV_FIRST+40)
+#define TVM_GETLINECOLOR (TV_FIRST+41)
+#endif
+#define TVE_COLLAPSE	1
+#define TVE_EXPAND	2
+#define TVE_TOGGLE	3
+#define TVE_COLLAPSERESET	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define TVE_EXPANDPARTIAL	0x4000
+#endif
+#define TVC_UNKNOWN	0
+#define TVC_BYMOUSE	1
+#define TVC_BYKEYBOARD	2
+#define TVGN_ROOT	0
+#define TVGN_NEXT	1
+#define TVGN_PREVIOUS	2
+#define TVGN_PARENT	3
+#define TVGN_CHILD	4
+#define TVGN_FIRSTVISIBLE	5
+#define TVGN_NEXTVISIBLE	6
+#define TVGN_PREVIOUSVISIBLE	7
+#define TVGN_DROPHILITE	8
+#define TVGN_CARET	9
+#if (_WIN32_IE >= 0x0400)
+#define TVGN_LASTVISIBLE	10
+#endif
+#define TVN_SELCHANGINGA	(TVN_FIRST-1)
+#define TVN_SELCHANGINGW	(TVN_FIRST-50)
+#define TVN_SELCHANGEDA	(TVN_FIRST-2)
+#define TVN_SELCHANGEDW	(TVN_FIRST-51)
+#define TVN_GETDISPINFOA	(TVN_FIRST-3)
+#define TVN_GETDISPINFOW	(TVN_FIRST-52)
+#define TVN_SETDISPINFOA	(TVN_FIRST-4)
+#define TVN_SETDISPINFOW	(TVN_FIRST-53)
+#define TVN_ITEMEXPANDINGA	(TVN_FIRST-5)
+#define TVN_ITEMEXPANDINGW	(TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDA	(TVN_FIRST-6)
+#define TVN_ITEMEXPANDEDW	(TVN_FIRST-55)
+#define TVN_BEGINDRAGA	(TVN_FIRST-7)
+#define TVN_BEGINDRAGW	(TVN_FIRST-56)
+#define TVN_BEGINRDRAGA	(TVN_FIRST-8)
+#define TVN_BEGINRDRAGW	(TVN_FIRST-57)
+#define TVN_DELETEITEMA	(TVN_FIRST-9)
+#define TVN_DELETEITEMW	(TVN_FIRST-58)
+#define TVN_BEGINLABELEDITA	(TVN_FIRST-10)
+#define TVN_BEGINLABELEDITW	(TVN_FIRST-59)
+#define TVN_ENDLABELEDITA	(TVN_FIRST-11)
+#define TVN_ENDLABELEDITW	(TVN_FIRST-60)
+#define TVN_KEYDOWN	(TVN_FIRST-12)
+#if (_WIN32_IE >= 0x0400)
+#define TVN_GETINFOTIPA	(TVN_FIRST-13)
+#define TVN_GETINFOTIPW	(TVN_FIRST-14)
+#define TVN_SINGLEEXPAND	(TVN_FIRST-15)
+#define TVNRET_DEFAULT 0
+#define TVNRET_SKIPOLD 1
+#define TVNRET_SKIPNEW 2
+#endif /* _WIN32_IE >= 0x0400 */
+#define TVIF_DI_SETITEM	0x1000
+#define TVHT_NOWHERE	1
+#define TVHT_ONITEMICON	2
+#define TVHT_ONITEMLABEL	4
+#define TVHT_ONITEM	(TVHT_ONITEMICON|TVHT_ONITEMLABEL|TVHT_ONITEMSTATEICON)
+#define TVHT_ONITEMINDENT	8
+#define TVHT_ONITEMBUTTON	16
+#define TVHT_ONITEMRIGHT	32
+#define TVHT_ONITEMSTATEICON	64
+#define TVHT_ABOVE	256
+#define TVHT_BELOW	512
+#define TVHT_TORIGHT	1024
+#define TVHT_TOLEFT	2048
+#define TCHT_NOWHERE	1
+#define TCHT_ONITEMICON	2
+#define TCHT_ONITEMLABEL	4
+#define TCHT_ONITEM	(TCHT_ONITEMICON|TCHT_ONITEMLABEL)
+#define TCS_FORCEICONLEFT	16
+#define TCS_FORCELABELLEFT	32
+#define TCS_TABS	0
+#define TCS_BUTTONS	256
+#define TCS_SINGLELINE	0
+#define TCS_MULTILINE	512
+#define TCS_RIGHTJUSTIFY	0
+#define TCS_FIXEDWIDTH	1024
+#define TCS_RAGGEDRIGHT	2048
+#define TCS_FOCUSONBUTTONDOWN	0x1000
+#define TCS_OWNERDRAWFIXED	0x2000
+#define TCS_TOOLTIPS	0x4000
+#define TCS_FOCUSNEVER	0x8000
+#if (_WIN32_IE >= 0x0300)
+#define TCS_BOTTOM	2
+#define TCS_RIGHT	2
+#define TCS_VERTICAL	128
+#define TCS_SCROLLOPPOSITE	0x0001
+#define TCS_HOTTRACK	0x0040
+#define TCS_MULTISELECT	0x0004
+#endif
+#if( _WIN32_IE >= 0x0400 )
+#define TCS_FLATBUTTONS	0x0008
+#define TCS_EX_FLATSEPARATORS	0x00000001
+#define TCS_EX_REGISTERDROP	0x00000002
+#endif /* _WIN32_IE >= 0x0400 */
+#define TCIF_TEXT	1
+#define TCIF_IMAGE	2
+#define TCIF_RTLREADING	4
+#define TCIF_PARAM	8
+#if (_WIN32_IE >= 0x0400)
+#define TCIF_STATE	16
+#endif
+#define TCIS_BUTTONPRESSED 1
+#if (_WIN32_IE >= 0x0400)
+#define TCIS_HIGHLIGHTED 2
+#endif
+#define TCM_FIRST	0x1300
+#define TCM_GETIMAGELIST	(TCM_FIRST+2)
+#define TCM_SETIMAGELIST	(TCM_FIRST+3)
+#define TCM_GETITEMCOUNT	(TCM_FIRST+4)
+#define TCM_GETITEMA	(TCM_FIRST+5)
+#define TCM_GETITEMW	(TCM_FIRST+60)
+#define TCM_SETITEMA	(TCM_FIRST+6)
+#define TCM_SETITEMW	(TCM_FIRST+61)
+#define TCM_INSERTITEMA	(TCM_FIRST+7)
+#define TCM_INSERTITEMW	(TCM_FIRST+62)
+#define TCM_DELETEITEM	(TCM_FIRST+8)
+#define TCM_DELETEALLITEMS	(TCM_FIRST+9)
+#define TCM_GETITEMRECT	(TCM_FIRST+10)
+#define TCM_GETCURSEL	(TCM_FIRST+11)
+#define TCM_SETCURSEL	(TCM_FIRST+12)
+#define TCM_HITTEST	(TCM_FIRST+13)
+#define TCM_SETITEMEXTRA	(TCM_FIRST+14)
+
+#define TCM_ADJUSTRECT	(TCM_FIRST+40)
+#define TCM_SETITEMSIZE	(TCM_FIRST+41)
+#define TCM_REMOVEIMAGE	(TCM_FIRST+42)
+#define TCM_SETPADDING	(TCM_FIRST+43)
+#define TCM_GETROWCOUNT	(TCM_FIRST+44)
+#define TCM_GETTOOLTIPS	(TCM_FIRST+45)
+#define TCM_SETTOOLTIPS	(TCM_FIRST+46)
+#define TCM_GETCURFOCUS	(TCM_FIRST+47)
+#define TCM_SETCURFOCUS	(TCM_FIRST+48)
+#define TCM_SETMINTABWIDTH	(TCM_FIRST + 49)
+#define TCM_DESELECTALL	(TCM_FIRST + 50)
+#if (_WIN32_IE >=0x0400)
+#define TCM_HIGHLIGHTITEM	(TCM_FIRST + 51)
+#define TCM_SETEXTENDEDSTYLE	(TCM_FIRST + 52)
+#define TCM_GETEXTENDEDSTYLE	(TCM_FIRST + 53)
+#define TCM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define TCM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >=0x0400 */
+#define TCN_KEYDOWN	TCN_FIRST
+#define TCN_SELCHANGE	(TCN_FIRST-1)
+#define TCN_SELCHANGING	(TCN_FIRST-2)
+#define NM_OUTOFMEMORY (NM_FIRST-1)
+#define NM_CLICK (NM_FIRST-2)
+#define NM_DBLCLK (NM_FIRST-3)
+#define NM_RETURN (NM_FIRST-4)
+#define NM_RCLICK (NM_FIRST-5)
+#define NM_RDBLCLK (NM_FIRST-6)
+#define NM_SETFOCUS (NM_FIRST-7)
+#define NM_KILLFOCUS (NM_FIRST-8)
+#define NM_CUSTOMDRAW (NM_FIRST-12)
+#define NM_HOVER (NM_FIRST-13)
+#define NM_NCHITTEST (NM_FIRST-14)
+#define NM_KEYDOWN (NM_FIRST-15)
+#define NM_RELEASEDCAPTURE (NM_FIRST-16)
+#define NM_SETCURSOR (NM_FIRST-17)
+#define NM_CHAR (NM_FIRST-18)
+#define NM_TOOLTIPSCREATED (NM_FIRST-19)
+#define SBARS_SIZEGRIP 256
+#define CCM_FIRST 0x2000
+#define CCM_LAST (CCM_FIRST+0x200)
+#define CCM_SETBKCOLOR 8193
+#define CCM_SETCOLORSCHEME 8194
+#define CCM_GETCOLORSCHEME 8195
+#define CCM_GETDROPTARGET 8196
+#define CCM_SETUNICODEFORMAT 8197
+#define CCM_GETUNICODEFORMAT 8198
+#define CCM_SETVERSION 0x2007
+#define CCM_GETVERSION 0x2008
+#define CCM_SETNOTIFYWINDOW 0x2009
+#if (_WIN32_WINNT >= 0x0501)
+#define CCM_SETWINDOWTHEME 0x200b
+#define CCM_DPISCALE 0x200c
+#endif 
+#define ICC_LISTVIEW_CLASSES 1
+#define ICC_TREEVIEW_CLASSES 2
+#define ICC_BAR_CLASSES	4
+#define ICC_TAB_CLASSES      8
+#define ICC_UPDOWN_CLASS 16
+#define ICC_PROGRESS_CLASS 32
+#define ICC_HOTKEY_CLASS 64
+#define ICC_ANIMATE_CLASS 128
+#define ICC_WIN95_CLASSES 255
+#define ICC_DATE_CLASSES 256
+#define ICC_USEREX_CLASSES 512
+#define ICC_COOL_CLASSES 1024
+#if (_WIN32_IE >= 0x0400)
+#define ICC_INTERNET_CLASSES 2048
+#define ICC_PAGESCROLLER_CLASS 4096
+#define ICC_NATIVEFNTCTL_CLASS 8192
+#define INFOTIPSIZE 1024
+#endif /* _WIN32_IE */
+#if (_WIN32_WINNT >= 0x501)
+#define ICC_STANDARD_CLASSES	0x00004000
+#define ICC_LINK_CLASS		0x00008000
+#endif
+#define GDTR_MIN 1
+#define GDTR_MAX 2
+#define GMR_VISIBLE 0
+#define GMR_DAYSTATE 1
+#define GDT_ERROR -1
+#define GDT_VALID 0
+#define GDT_NONE 1
+#define DTS_UPDOWN 1
+#define DTS_SHOWNONE 2
+#define DTS_SHORTDATEFORMAT 0
+#define DTS_LONGDATEFORMAT 4
+#define DTS_TIMEFORMAT 9
+#define DTS_APPCANPARSE 16
+#define DTS_RIGHTALIGN 32
+#if ( _WIN32_IE >= 0x500 )
+#define DTS_SHORTDATECENTURYFORMAT	0x000C
+#endif /* _WIN32_IE >= 0x500 */
+#define MCS_DAYSTATE 1
+#define MCS_MULTISELECT 2
+#define MCS_WEEKNUMBERS 4
+#if (_WIN32_IE >= 0x0400)
+#define MCS_NOTODAYCIRCLE	0x0008
+#define MCS_NOTODAY	0x0010
+#else /* _WIN32_IE >= 0x0400 */
+#define MCS_NOTODAY	0x0008
+#endif /* _WIN32_IE >= 0x0400 */
+#define DTM_GETSYSTEMTIME 0x1001
+#define DTM_SETSYSTEMTIME 0x1002
+#define DTM_GETRANGE 0x1003
+#define DTM_SETRANGE 0x1004
+#define DTM_SETFORMATA 0x1005
+#define DTM_SETFORMATW 0x1050
+#define DTM_SETMCCOLOR 0x1006
+#define DTM_GETMCCOLOR 0x1007
+#define DTM_GETMONTHCAL 0x1008
+#define DTM_SETMCFONT	0x1009
+#define DTM_GETMCFONT	0x100a
+#define DTN_USERSTRINGA  ((UINT)-758)
+#define DTN_USERSTRINGW  ((UINT)-745)
+#define DTN_WMKEYDOWNA  ((UINT)-757)
+#define DTN_WMKEYDOWNW  ((UINT)-744)
+#define DTN_FORMATA  ((UINT)-756) 
+#define DTN_FORMATW  ((UINT)-743)
+#define DTN_FORMATQUERYA  ((UINT)-755) 
+#define DTN_FORMATQUERYW ((UINT)-742)
+#define DTN_DROPDOWN    ((UINT)-754) 
+#define DTN_CLOSEUP	((UINT)-753) 
+#define DTN_DATETIMECHANGE ((UINT)-759) 
+#define MCM_GETCURSEL	0x1001
+#define MCM_SETCURSEL	0x1002
+#define MCM_GETMAXSELCOUNT 0x1003
+#define MCM_SETMAXSELCOUNT 0x1004
+#define MCM_GETSELRANGE	0x1005
+#define MCM_SETSELRANGE	0x1006
+#define MCM_GETMONTHRANGE 0x1007
+#define MCM_SETDAYSTATE	0x1008
+#define MCM_GETMINREQRECT 0x1009
+#define MCM_SETCOLOR 0x100a
+#define MCM_GETCOLOR 0x100b
+#define MCM_SETTODAY 0x100c
+#define MCM_GETTODAY 0x100d
+#define MCM_HITTEST 0x100e
+#define MCM_SETFIRSTDAYOFWEEK 0x100f
+#define MCM_GETFIRSTDAYOFWEEK 0x1010
+#define MCM_GETRANGE 0x1011
+#define MCM_SETRANGE 0x1012
+#define MCM_GETMONTHDELTA 0x1013
+#define MCM_SETMONTHDELTA 0x1014
+#define MCM_GETMAXTODAYWIDTH 0x1015
+#define MCM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#define MCM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
+#define MCN_SELCHANGE	  ((UINT)-749)
+#define MCN_GETDAYSTATE	((UINT)-747)
+#define MCN_SELECT		((UINT)-746)
+#define ODT_HEADER 100
+#define ODT_TAB 101
+#define ODT_LISTVIEW 102
+#define SB_SETBKCOLOR	0x2001
+#if (_WIN32_IE >= 0x0300)
+#define SB_ISSIMPLE 1038
+#define MCSC_BACKGROUND 0
+#define MCSC_TEXT 1
+#define MCSC_TITLEBK 2
+#define MCSC_TITLETEXT 3
+#define MCSC_MONTHBK 4
+#define MCSC_TRAILINGTEXT 5
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define MCHT_TITLE 0x10000
+#define MCHT_CALENDAR 0x20000
+#define MCHT_TODAYLINK 0x30000
+#define MCHT_NEXT 0x1000000
+#define MCHT_PREV 0x2000000
+#define MCHT_NOWHERE 0x00
+#define MCHT_TITLEBK (MCHT_TITLE)
+#define MCHT_TITLEMONTH (MCHT_TITLE | 0x0001)
+#define MCHT_TITLEYEAR (MCHT_TITLE | 0x0002)
+#define MCHT_TITLEBTNNEXT (MCHT_TITLE | MCHT_NEXT | 0x0003)
+#define MCHT_TITLEBTNPREV (MCHT_TITLE | MCHT_PREV | 0x0003)
+#define MCHT_CALENDARBK (MCHT_CALENDAR)
+#define MCHT_CALENDARDATE (MCHT_CALENDAR | 0x0001)
+#define MCHT_CALENDARDATENEXT (MCHT_CALENDARDATE | MCHT_NEXT)
+#define MCHT_CALENDARDATEPREV (MCHT_CALENDARDATE | MCHT_PREV)
+#define MCHT_CALENDARDAY (MCHT_CALENDAR | 0x0002)
+#define MCHT_CALENDARWEEKNUM (MCHT_CALENDAR | 0x0003)
+#endif /* _WIN32_IE >= 0x0400 */
+#define RBS_TOOLTIPS 256
+#define RBS_VARHEIGHT 512
+#define RBS_BANDBORDERS 1024
+#define RBS_FIXEDORDER 2048
+#define RBIM_IMAGELIST 1
+#define RB_SETCOLORSCHEME CCM_SETCOLORSCHEME
+#define RB_GETCOLORSCHEME CCM_GETCOLORSCHEME
+#define RBBS_BREAK	0x0001
+#define RBBS_FIXEDSIZE	0x0002
+#define RBBS_CHILDEDGE	0x0004
+#define RBBS_HIDDEN	0x0008
+#define RBBS_NOVERT	0x0010
+#define RBBS_FIXEDBMP	0x0020
+#define RBBS_VARIABLEHEIGHT	0x0040
+#define RBBS_GRIPPERALWAYS	0x0080
+#define RBBS_NOGRIPPER	0x0100
+#if (_WIN32_IE >= 0x0500)
+#define RBBS_USECHEVRON	0x0200
+#if (_WIN32_IE >= 0x0501)
+#define RBBS_HIDETITLE	0x0400
+#define RBBS_TOPALIGN	0x0800
+#endif /* _WIN32_IE >= 0x0501 */
+#endif /* _WIN32_IE >= 0x0500 */
+#define RBBIM_STYLE 1
+#define RBBIM_COLORS 2
+#define RBBIM_TEXT 4
+#define RBBIM_IMAGE 8
+#define RBBIM_CHILD 16
+#define RBBIM_CHILDSIZE 32
+#define RBBIM_SIZE 64
+#define RBBIM_BACKGROUND 128
+#define RBBIM_ID 256
+#define RB_INSERTBANDA (WM_USER+1)
+#define RB_INSERTBANDW (WM_USER+10)
+#define RB_DELETEBAND (WM_USER+2)
+#define RB_GETBARINFO (WM_USER+3)
+#define RB_SETBARINFO (WM_USER+4)
+#define RB_GETBANDCOUNT (WM_USER+12)
+#define RB_GETROWCOUNT (WM_USER+13)
+#define RB_GETROWHEIGHT (WM_USER+14)
+#define RB_SETBANDINFOA (WM_USER+6)
+#define RB_SETBANDINFOW (WM_USER+11)
+#define RB_SETPARENT (WM_USER+7)
+#define RBN_HEIGHTCHANGE RBN_FIRST
+#if (_WIN32_IE >= 0x0300)
+#define LVN_ODCACHEHINT (LVN_FIRST-13)
+#define LVN_ODFINDITEMA (LVN_FIRST-52)
+#define LVN_ODFINDITEMW (LVN_FIRST-79)
+#define LVN_ITEMACTIVATE (LVN_FIRST-14)
+#define LVN_ODSTATECHANGED (LVN_FIRST-15)
+#ifdef UNICODE
+#define LVN_ODFINDITEM LVN_ODFINDITEMW
+#else
+#define LVN_ODFINDITEM LVN_ODFINDITEMA
+#endif
+#endif /* _WIN32_IE */
+#if (_WIN32_IE >= 0x0400)
+#define SB_SETICON 1039
+#define SB_SETTIPTEXTA	1040
+#define SB_SETTIPTEXTW	1041
+#define SB_GETTIPTEXTA	1042
+#define SB_GETTIPTEXTW	1043
+#define SB_GETICON	1044
+#define SB_SETUNICODEFORMAT	0x2005
+#define SB_GETUNICODEFORMAT	0x2006
+#define PGF_INVISIBLE 0
+#define PGF_NORMAL 1
+#define PGF_GRAYED 2
+#define PGF_DEPRESSED 4
+#define PGF_HOT 8
+#define PGB_TOPORLEFT 0
+#define PGB_BOTTOMORRIGHT 1
+#define PGF_SCROLLUP 1
+#define PGF_SCROLLDOWN 2
+#define PGF_SCROLLLEFT 4
+#define PGF_SCROLLRIGHT 8
+#define PGK_SHIFT 1
+#define PGK_CONTROL 2
+#define PGK_MENU 4
+#define PGF_CALCWIDTH 1
+#define PGF_CALCHEIGHT 2
+#define PGM_FIRST 0x1400
+#define PGM_SETCHILD (PGM_FIRST+1)
+#define PGM_RECALCSIZE (PGM_FIRST+2)
+#define PGM_FORWARDMOUSE (PGM_FIRST+3)
+#define PGM_SETBKCOLOR (PGM_FIRST+4)
+#define PGM_GETBKCOLOR (PGM_FIRST+5)
+#define PGM_SETBORDER (PGM_FIRST+6)
+#define PGM_GETBORDER (PGM_FIRST+7)
+#define PGM_SETPOS (PGM_FIRST+8)
+#define PGM_GETPOS (PGM_FIRST+9)
+#define PGM_SETBUTTONSIZE (PGM_FIRST+10)
+#define PGM_GETBUTTONSIZE (PGM_FIRST+11)
+#define PGM_GETBUTTONSTATE (PGM_FIRST+12)
+#define PGM_GETDROPTARGET CCM_GETDROPTARGET
+#define RBS_REGISTERDROP 4096
+#define RBS_AUTOSIZE 8192
+#define RBS_VERTICALGRIPPER 16384
+#define RBS_DBLCLKTOGGLE  32768
+#define RBBIM_IDEALSIZE 512
+#define RBBIM_LPARAM 1024
+#define RBBIM_HEADERSIZE 2048
+#define RB_HITTEST (WM_USER+8)
+#define RB_GETRECT (WM_USER+9)
+#define RB_IDTOINDEX (WM_USER+16)
+#define RB_GETTOOLTIPS (WM_USER+17)
+#define RB_SETTOOLTIPS (WM_USER+18)
+#define RB_SETBKCOLOR (WM_USER+19)
+#define RB_GETBKCOLOR (WM_USER+20)
+#define RB_SETTEXTCOLOR (WM_USER+21)
+#define RB_GETTEXTCOLOR (WM_USER+22)
+#define RB_SIZETORECT (WM_USER+23)
+#define RB_BEGINDRAG (WM_USER+24)
+#define RB_ENDDRAG (WM_USER+25)
+#define RB_DRAGMOVE (WM_USER+26)
+#define RB_GETBARHEIGHT (WM_USER+27)
+#define RB_GETBANDINFOW (WM_USER+28)
+#define RB_GETBANDINFOA (WM_USER+29)
+#define RB_MINIMIZEBAND (WM_USER+30)
+#define RB_MAXIMIZEBAND (WM_USER+31)
+#define RB_GETDROPTARGET CCM_GETDROPTARGET
+#define RB_GETBANDBORDERS (WM_USER+34)
+#define RB_SHOWBAND (WM_USER+35)
+#define RB_SETPALETTE (WM_USER+37)
+#define RB_GETPALETTE (WM_USER+38)
+#define RB_MOVEBAND (WM_USER+39)
+#define RB_SETUNICODEFORMAT     CCM_SETUNICODEFORMAT
+#define RB_GETUNICODEFORMAT     CCM_GETUNICODEFORMAT
+#define RBN_GETOBJECT (RBN_FIRST-1)
+#define RBN_LAYOUTCHANGED (RBN_FIRST-2)
+#define RBN_AUTOSIZE (RBN_FIRST-3)
+#define RBN_BEGINDRAG (RBN_FIRST-4)
+#define RBN_ENDDRAG (RBN_FIRST-5)
+#define RBN_DELETINGBAND (RBN_FIRST-6)
+#define RBN_DELETEDBAND (RBN_FIRST-7)
+#define RBN_CHILDSIZE (RBN_FIRST-8)
+#define RBNM_ID 1
+#define RBNM_STYLE 2
+#define RBNM_LPARAM 4
+#define RBHT_NOWHERE 1
+#define RBHT_CAPTION 2
+#define RBHT_CLIENT 3
+#define RBHT_GRABBER 4
+#ifdef UNICODE
+#define SB_SETTIPTEXT	SB_SETTIPTEXTW
+#define SB_GETTIPTEXT	SB_GETTIPTEXTW
+#define RB_GETBANDINFO	RB_GETBANDINFOW
+#else
+#define SB_SETTIPTEXT	SB_SETTIPTEXTA
+#define SB_GETTIPTEXT	SB_GETTIPTEXTA
+#define RB_GETBANDINFO	RB_GETBANDINFOA
+#endif
+#else
+#define RB_GETBANDINFO (WM_USER+5)
+#endif /* _WIN32_IE >= 0x0400 */
+#define CBEM_INSERTITEMA	(WM_USER + 1)
+#define CBEM_SETIMAGELIST	(WM_USER + 2)
+#define CBEM_GETIMAGELIST	(WM_USER + 3)
+#define CBEM_GETITEMA	(WM_USER + 4)
+#define CBEM_SETITEMA	(WM_USER + 5)
+#define CBEM_DELETEITEM	CB_DELETESTRING
+#define CBEM_GETCOMBOCONTROL	(WM_USER + 6)
+#define CBEM_GETEDITCONTROL	(WM_USER + 7)
+#define CBEM_SETEXSTYLE	(WM_USER + 8)
+#define CBEM_GETEXSTYLE	(WM_USER + 9)
+#if (_WIN32_IE >= 0x0400)
+#define CBEM_SETEXTENDEDSTYLE	(WM_USER + 14)
+#define CBEM_GETEXTENDEDSTYLE	(WM_USER + 9)
+#define CBEM_SETUNICODEFORMAT	CCM_SETUNICODEFORMAT
+#define CBEM_GETUNICODEFORMAT	CCM_GETUNICODEFORMAT
+#endif /* _WIN32_IE >= 0x0400 */
+#define CBEM_HASEDITCHANGED	(WM_USER + 10)
+#define CBEM_INSERTITEMW	(WM_USER + 11)
+#define CBEM_SETITEMW	(WM_USER + 12)
+#define CBEM_GETITEMW	(WM_USER + 13)
+#define DA_LAST	0x7fffffff
+#define DPA_APPEND	0x7fffffff
+#define DPA_ERR	-1
+#define DSA_APPEND	0x7fffffff
+#define DSA_ERR	-1
+#define DPAS_SORTED	1
+#define DPAS_INSERTBEFORE	2
+#define DPAS_INSERTAFTER	4
+#if (_WIN32_IE >= 0x400)
+#define WSB_PROP_CYVSCROLL	1
+#define WSB_PROP_CXHSCROLL	2
+#define WSB_PROP_CYHSCROLL	4
+#define WSB_PROP_CXVSCROLL	8
+#define WSB_PROP_CXHTHUMB	16
+#define WSB_PROP_CYVTHUMB	32
+#define WSB_PROP_VBKGCOLOR	64
+#define WSB_PROP_HBKGCOLOR	128
+#define WSB_PROP_VSTYLE	256
+#define WSB_PROP_HSTYLE	512
+#define WSB_PROP_WINSTYLE	1024
+#define WSB_PROP_PALETTE	2048
+#define WSB_PROP_MASK	0xfff
+#define FSB_FLAT_MODE	2
+#define FSB_ENCARTA_MODE	1
+#define FSB_REGULAR_MODE	0
+#endif /* _WIN32_IE >= 0x400 */
+#if (_WIN32_WINNT >= 0x0501)
+#define LIF_ITEMINDEX	0x00000001
+#define LIF_STATE	0x00000002
+#define LIF_ITEMID	0x00000004
+#define LIF_URL	0x00000008
+#define LIS_FOCUSED	0x00000001
+#define LIS_ENABLED	0x00000002
+#define LIS_VISITED	0x00000004
+#define LM_HITTEST	(WM_USER + 768)
+#define LM_GETIDEALHEIGHT	(WM_USER + 769)
+#define LM_SETITEM	(WM_USER + 770)
+#define LM_GETITEM	(WM_USER + 771)
+#define MAX_LINKID_TEXT	48
+#define L_MAX_URL_LENGTH	2084
+#endif
+
+#ifndef RC_INVOKED
+typedef struct tagCOMBOBOXEXITEMA{
+	UINT mask;
+	int iItem;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int iOverlay;
+	int iIndent;
+	LPARAM lParam;
+} COMBOBOXEXITEMA, *PCOMBOBOXEXITEMA;
+typedef COMBOBOXEXITEMA CONST *PCCOMBOEXITEMA;
+typedef struct tagCOMBOBOXEXITEMW{
+	UINT mask;
+	int iItem;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int iOverlay;
+	int iIndent;
+	LPARAM lParam;
+} COMBOBOXEXITEMW, *PCOMBOBOXEXITEMW;
+typedef COMBOBOXEXITEMW CONST *PCCOMBOEXITEMW;
+#if (_WIN32_IE >= 0x0400)
+typedef struct {
+	NMHDR hdr;
+	COMBOBOXEXITEMA ceItem;
+} NMCOMBOBOXEXA, *PNMCOMBOBOXEXA;
+typedef struct {
+	NMHDR hdr;
+	COMBOBOXEXITEMW ceItem;
+} NMCOMBOBOXEXW, *PNMCOMBOBOXEXW;
+typedef struct {
+	NMHDR   hdr;
+	int iItemid;
+	WCHAR   szText[CBEMAXSTRLEN];
+}NMCBEDRAGBEGINW, *LPNMCBEDRAGBEGINW, *PNMCBEDRAGBEGINW;
+typedef struct {
+	NMHDR   hdr;
+	int iItemid;
+	char    szText[CBEMAXSTRLEN];
+}NMCBEDRAGBEGINA, *LPNMCBEDRAGBEGINA, *PNMCBEDRAGBEGINA;
+typedef struct tagNMIPADDRESS{
+	NMHDR hdr;
+	int iField;
+	int iValue;
+} NMIPADDRESS, *LPNMIPADDRESS;
+typedef struct tagLVKEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} NMLVKEYDOWN, *LPNMLVKEYDOWN;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwFlag;
+	int iWidth;
+	int iHeight;
+} NMPGCALCSIZE, *LPNMPGCALCSIZE;
+typedef struct {
+	NMHDR hdr;
+	BOOL fwKeys;
+	RECT rcParent;
+	int iDir;
+	int iXpos;
+	int iYpos;
+	int iScroll;
+} NMPGSCROLL, *LPNMPGSCROLL;
+typedef struct tagNMSELCHANGE {
+	NMHDR nmhdr;
+	SYSTEMTIME stSelStart;
+	SYSTEMTIME stSelEnd;
+} NMSELCHANGE, *LPNMSELCHANGE;
+typedef struct tagNMTBHOTITEM {
+	NMHDR hdr;
+	int idOld;
+	int idNew;
+	DWORD dwFlags;
+} NMTBHOTITEM, *LPNMTBHOTITEM;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwMask;
+	int idCommand;
+	DWORD_PTR lParam;
+	int iImage;
+	LPSTR pszText;
+	int cchText;
+} NMTBDISPINFOA, *LPNMTBDISPINFOA;
+typedef struct {
+	NMHDR hdr;
+	DWORD dwMask;
+	int idCommand;
+	DWORD_PTR lParam;
+	int iImage;
+	LPWSTR pszText;
+	int cchText;
+} NMTBDISPINFOW, *LPNMTBDISPINFOW;
+typedef struct tagNMTBGETINFOTIPA
+{
+	NMHDR hdr;
+	LPSTR pszText;
+	int cchTextMax;
+	int iItem;
+	LPARAM lParam;
+} NMTBGETINFOTIPA, *LPNMTBGETINFOTIPA;
+typedef struct tagNMTBGETINFOTIPW
+{
+	NMHDR hdr;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iItem;
+	LPARAM lParam;
+} NMTBGETINFOTIPW, *LPNMTBGETINFOTIPW;
+typedef struct tagNMMOUSE {
+	NMHDR hdr;
+	DWORD_PTR dwItemSpec;
+	DWORD_PTR dwItemData;
+	POINT pt;
+	LPARAM dwHitInfo;
+} NMMOUSE, *LPNMMOUSE;
+#endif /*_WIN32_IE >= 0x0400 */
+#if (_WIN32_IE >= 0x0401)
+typedef struct tagNMTOOLTIPSCREATED
+{
+	NMHDR hdr;
+	HWND hwndToolTips;
+} NMTOOLTIPSCREATED, *LPNMTOOLTIPSCREATED;
+#endif
+typedef struct tagNMDATETIMECHANGE
+{
+	NMHDR nmhdr;
+	DWORD dwFlags;
+	SYSTEMTIME st;
+} NMDATETIMECHANGE, *LPNMDATETIMECHANGE;
+typedef struct {
+	NMHDR hdr;
+	BOOL fChanged;
+	int iNewSelection;
+	WCHAR szText[CBEMAXSTRLEN];
+	int iWhy;
+} NMCBEENDEDITW, *LPNMCBEENDEDITW, *PNMCBEENDEDITW;
+typedef struct {
+	NMHDR hdr;
+	BOOL fChanged;
+	int iNewSelection;
+	char szText[CBEMAXSTRLEN];
+	int iWhy;
+} NMCBEENDEDITA, *LPNMCBEENDEDITA,*PNMCBEENDEDITA;
+typedef struct _COLORMAP {
+	COLORREF from;
+	COLORREF to;
+} COLORMAP,*LPCOLORMAP;
+typedef struct {
+	UINT uNotification;
+	HWND hWnd;
+	POINT ptCursor;
+} DRAGLISTINFO,*LPDRAGLISTINFO;
+typedef struct _TBBUTTON {
+	int iBitmap;
+	int idCommand;
+	BYTE fsState;
+	BYTE fsStyle;
+	BYTE bReserved[2];
+	DWORD dwData;
+	int iString;
+} TBBUTTON,*PTBBUTTON,*LPTBBUTTON;
+typedef const TBBUTTON *LPCTBBUTTON;
+#if _WIN32_IE >= 0x400
+typedef struct {
+	UINT cbSize;
+	DWORD dwMask;
+	int idCommand;
+	int iImage;
+	BYTE fsState;
+	BYTE fsStyle;
+	WORD cx;
+	DWORD lParam;
+	LPSTR pszText;
+	int cchText;
+} TBBUTTONINFOA, *LPTBBUTTONINFOA;
+typedef struct {
+	UINT cbSize;
+	DWORD dwMask;
+	int idCommand;
+	int iImage;
+	BYTE fsState;
+	BYTE fsStyle;
+	WORD cx;
+	DWORD lParam;
+	LPWSTR pszText;
+	int cchText;
+} TBBUTTONINFOW, *LPTBBUTTONINFOW;
+typedef struct {
+	int iButton;
+	DWORD dwFlags;
+} TBINSERTMARK, *LPTBINSERTMARK;
+typedef struct tagLVBKIMAGEA {
+	ULONG ulFlags;              
+	HBITMAP hbm;
+	LPSTR pszImage;
+	UINT cchImageMax;
+	int xOffsetPercent;
+	int yOffsetPercent;
+} LVBKIMAGEA, *LPLVBKIMAGEA;
+typedef struct tagLVBKIMAGEW {
+	ULONG ulFlags;             
+	HBITMAP hbm;
+	LPWSTR pszImage;
+	UINT cchImageMax;
+	int xOffsetPercent;
+	int yOffsetPercent;
+} LVBKIMAGEW, *LPLVBKIMAGEW;
+#endif /* _WIN32_IE >= 0x400 */
+typedef struct {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPTSTR pszText;
+} TBNOTIFY,*LPTBNOTIFY;
+typedef struct {
+	HKEY hkr;
+	LPCTSTR pszSubKey;
+	LPCTSTR pszValueName;
+} TBSAVEPARAMS;
+typedef struct _IMAGEINFO {
+	HBITMAP hbmImage;
+	HBITMAP hbmMask;
+	int Unused1;
+	int Unused2;
+	RECT rcImage;
+} IMAGEINFO, *LPIMAGEINFO;
+typedef struct _IMAGELIST *HIMAGELIST;
+typedef struct _HDITEMA {
+	UINT mask;
+	int cxy;
+	LPSTR pszText;
+	HBITMAP hbm;
+	int cchTextMax;
+	int fmt;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+#if (_WIN32_IE >= 0x0500)
+	UINT type;
+	LPVOID pvFilter;
+#endif
+} HDITEMA, * LPHDITEMA;
+typedef struct _HDITEMW {
+	UINT mask;
+	int cxy;
+	LPWSTR pszText;
+	HBITMAP hbm;
+	int cchTextMax;
+	int fmt;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+#if (_WIN32_IE >= 0x0500)
+	UINT type;
+	LPVOID pvFilter;
+#endif
+} HDITEMW, * LPHDITEMW;
+/* for backward compatibility */
+#define HD_ITEMA HDITEMA
+#define HD_ITEMW HDITEMW
+#define HD_ITEM HDITEM
+typedef struct _HD_LAYOUT {
+	RECT *prc;
+	WINDOWPOS *pwpos;
+} HDLAYOUT, *LPHDLAYOUT;
+#define HD_LAYOUT HDLAYOUT /*  backward compatibility */
+typedef struct _HD_HITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iItem;
+} HD_HITTESTINFO, *LPHDHITTESTINFO;
+typedef struct _HD_NOTIFYA {
+	NMHDR hdr;
+	int iItem;
+	int iButton;
+	HD_ITEMA *pitem;
+} HD_NOTIFYA;
+typedef struct _HD_NOTIFYW {
+	NMHDR hdr;
+	int iItem;
+	int iButton;
+	HD_ITEMW *pitem;
+} HD_NOTIFYW;
+/* FIXME: NMHEADER structure (base for all events of the comctl controls)
+   is the same as HD_NOTIFY depending on the value of _WIN32_IE macro.
+   I'm defining both for now. */
+typedef struct _NMHEADERA {
+    NMHDR   hdr;
+    int     iItem;
+    int     iButton;
+    HD_ITEMA* pitem;
+}  NMHEADERA, *LPNMHEADERA;
+
+typedef struct _NMHEADERW {
+    NMHDR   hdr;
+    int     iItem;
+    int     iButton;
+    HD_ITEMW* pitem;
+}  NMHEADERW, *LPNMHEADERW;
+#ifdef UNICODE
+#define NMHEADER NMHEADERW
+#define LPNMHEADER LPNMHEADERW
+#else
+#define NMHEADER NMHEADERA
+#define LPNMHEADER LPNMHEADERA
+#endif
+/* End FIXME. */
+typedef struct tagNMHDDISPINFOA {
+    NMHDR   hdr;
+    int     iItem;
+    UINT    mask;
+    LPSTR   pszText;
+    int     cchTextMax;
+    int     iImage;
+    LPARAM  lParam;
+} NMHDDISPINFOA, *LPNMHDDISPINFOA;
+typedef struct tagNMHDDISPINFOW {
+    NMHDR   hdr;
+    int     iItem;
+    UINT    mask;
+    LPWSTR  pszText;
+    int     cchTextMax;
+    int     iImage;
+    LPARAM  lParam;
+} NMHDDISPINFOW, *LPNMHDDISPINFOW;
+typedef struct tagNMCUSTOMDRAWINFO {
+    NMHDR    hdr;
+    DWORD    dwDrawStage;
+    HDC      hdc;
+    RECT     rc;
+    DWORD    dwItemSpec;
+    UINT     uItemState;
+    LPARAM   lItemlParam;
+} NMCUSTOMDRAW, *LPNMCUSTOMDRAW;
+typedef struct tagNMLVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF     clrText;
+    COLORREF     clrTextBk;
+#if _WIN32_IE >= 0x0400
+    int          iSubItem;
+#endif
+} NMLVCUSTOMDRAW, *LPNMLVCUSTOMDRAW;
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMLVGETINFOTIPA
+{
+	NMHDR hdr;
+	DWORD dwFlags;
+	LPSTR pszText;
+	int cchTextMax;
+	int iItem;
+	int iSubItem;
+	LPARAM lParam;
+} NMLVGETINFOTIPA, *LPNMLVGETINFOTIPA;
+typedef struct tagNMLVGETINFOTIPW
+{
+	NMHDR hdr;
+	DWORD dwFlags;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iItem;
+	int iSubItem;
+	LPARAM lParam;
+} NMLVGETINFOTIPW, *LPNMLVGETINFOTIPW;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagNMTVCUSTOMDRAW {
+    NMCUSTOMDRAW nmcd;
+    COLORREF     clrText;
+    COLORREF     clrTextBk;
+#if _WIN32_IE >= 0x0400
+    int          iLevel;
+#endif
+} NMTVCUSTOMDRAW, *LPNMTVCUSTOMDRAW;
+#if (_WIN32_IE >= 0x400)
+typedef struct _NMTBCUSTOMDRAW {
+	NMCUSTOMDRAW nmcd;
+	HBRUSH hbrMonoDither;
+	HBRUSH hbrLines;
+	HPEN hpenLines;
+	COLORREF clrText;
+	COLORREF clrMark;
+	COLORREF clrTextHighlight;
+	COLORREF clrBtnFace;
+	COLORREF clrBtnHighlight;
+	COLORREF clrHighlightHotTrack;
+	RECT rcText;
+	int nStringBkMode;
+	int nHLStringBkMode;
+#if (_WIN32_WINNT >= 0x0501)
+	int iListGap;
+#endif
+} NMTBCUSTOMDRAW, * LPNMTBCUSTOMDRAW;
+typedef struct tagNMITEMACTIVATE {
+	NMHDR hdr;
+	int iItem;
+	int iSubItem;
+	UINT uNewState;
+	UINT uOldState;
+	UINT uChanged;
+	POINT ptAction;
+	LPARAM lParam;
+	UINT uKeyFlags;
+} NMITEMACTIVATE, *LPNMITEMACTIVATE;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagTBADDBITMAP {
+	HINSTANCE hInst;
+	UINT nID;
+} TBADDBITMAP,*LPTBADDBITMAP;
+typedef struct tagTBSAVEPARAMSA {
+	HKEY hkr;
+	LPCSTR pszSubKey;
+	LPCSTR pszValueName;
+} TBSAVEPARAMSA;
+typedef struct tagTBSAVEPARAMSW {
+	HKEY hkr;
+	LPCWSTR pszSubKey;
+	LPCWSTR pszValueName;
+} TBSAVEPARAMSW;
+typedef struct {
+	HINSTANCE hInstOld;
+	UINT nIDOld;
+	HINSTANCE hInstNew;
+	UINT nIDNew;
+	int nButtons;
+} TBREPLACEBITMAP,*LPTBREPLACEBITMAP;
+typedef struct tagNMTOOLBARA {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPSTR pszText;
+#if (_WIN32_IE >= 0x500)
+	RECT    rcButton;
+#endif
+} NMTOOLBARA, *LPNMTOOLBARA;
+#define TBNOTIFYA NMTOOLBARA
+#define LPTBNOTIFYA LPNMTOOLBARA
+typedef struct tagNMTOOLBARW {
+	NMHDR hdr;
+	int iItem;
+	TBBUTTON tbButton;
+	int cchText;
+	LPWSTR pszText;
+#if (_WIN32_IE >= 0x500)
+	RECT    rcButton;
+#endif
+} NMTOOLBARW, *LPNMTOOLBARW;
+#define TBNOTIFYW NMTOOLBARW
+#define LPTBNOTIFYW LPNMTOOLBARW
+typedef struct tagTOOLINFOA {
+	UINT cbSize;
+	UINT uFlags;
+	HWND hwnd;
+	UINT uId;
+	RECT rect;
+	HINSTANCE hinst;
+	LPSTR lpszText;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} TTTOOLINFOA,*LPTTTOOLINFOA,*PTOOLINFOA;
+#define TOOLINFOA TTTOOLINFOA
+#define LPTOOLINFOA LPTTTOOLINFOA
+#define TTTOOLINFOA_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpszText)
+#define TTTOOLINFOA_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lParam)
+#define TTTOOLINFOA_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOA, lpReserved)
+typedef struct tagTOOLINFOW {
+	UINT cbSize;
+	UINT uFlags;
+	HWND hwnd;
+	UINT uId;
+	RECT rect;
+	HINSTANCE hinst;
+	LPWSTR lpszText;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} TTTOOLINFOW,*LPTTTOOLINFOW,*PTOOLINFOW;
+#define TOOLINFOW TTTOOLINFOW
+#define LPTOOLINFOW LPTTTOOLINFOW
+#define TTTOOLINFOW_V1_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpszText)
+#define TTTOOLINFOW_V2_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lParam)
+#define TTTOOLINFOW_V3_SIZE CCSIZEOF_STRUCT(TTTOOLINFOW, lpReserved)
+typedef struct _TT_HITTESTINFOA {
+	HWND hwnd;
+	POINT pt;
+	TOOLINFOA ti;
+} TTHITTESTINFOA,*LPTTHITTESTINFOA;
+#define LPHITTESTINFOA    LPTTHITTESTINFOA
+typedef struct _TT_HITTESTINFOW {
+	HWND hwnd;
+	POINT pt;
+	TOOLINFOW ti;
+} TTHITTESTINFOW,*LPTTHITTESTINFOW;
+#define LPHITTESTINFOW    LPTTHITTESTINFOW
+typedef struct tagNMTTDISPINFOA {
+	NMHDR hdr;
+	LPSTR lpszText;
+	char szText[80];
+	HINSTANCE hinst;
+	UINT uFlags;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} NMTTDISPINFOA, *LPNMTTDISPINFOA;
+#define TOOLTIPTEXTA	NMTTDISPINFOA
+#define LPTOOLTIPTEXTA	LPNMTTDISPINFOA
+typedef struct tagNMTTDISPINFOW {
+ 	NMHDR hdr;
+ 	LPWSTR lpszText;
+ 	WCHAR szText[80];
+ 	HINSTANCE hinst;
+ 	UINT uFlags;
+#if (_WIN32_IE >= 0x0300)
+	LPARAM lParam;
+#endif
+} NMTTDISPINFOW, *LPNMTTDISPINFOW;
+#define TOOLTIPTEXTW	NMTTDISPINFOW
+#define LPTOOLTIPTEXTW	LPNMTTDISPINFOW
+typedef struct _UDACCEL {
+	UINT nSec;
+	UINT nInc;
+} UDACCEL,*LPUDACCEL;
+typedef struct _NM_UPDOWN {
+	NMHDR hdr;
+	int iPos;
+	int iDelta;
+} NMUPDOWN,*LPNMUPDOWN;
+/* for backward compatibility */
+#define NM_UPDOWN NMUPDOWN 
+#define LPNM_UPDOWN LPNMUPDOWN 
+typedef struct _LVITEMA {
+	UINT mask;
+	int iItem;
+	int iSubItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iIndent;
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+	int iGroupId;
+	UINT cColumns;
+	PUINT puColumns;
+#endif
+} LVITEMA, FAR *LPLVITEMA;
+#define _LV_ITEMA _LVITEMA
+#define LV_ITEMA LVITEMA
+typedef struct _LVITEMW {
+	UINT mask;
+	int iItem;
+	int iSubItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+#if (_WIN32_IE >= 0x0300)
+	int iIndent;
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+	int iGroupId;
+	UINT cColumns;
+	PUINT puColumns;
+#endif
+} LVITEMW, FAR *LPLVITEMW;
+#define _LV_ITEMW _LVITEMW
+#define LV_ITEMW LVITEMW
+typedef struct tagLVFINDINFOA {
+	UINT flags;
+	LPCSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOA, FAR* LPFINDINFOA;
+#define _LV_FINDINFOA tagLVFINDINFOA
+#define LV_FINDINFOA LVFINDINFOA
+typedef struct tagLVFINDINFOW {
+	UINT flags;
+	LPCWSTR psz;
+	LPARAM lParam;
+	POINT pt;
+	UINT vkDirection;
+} LVFINDINFOW, FAR* LPFINDINFOW;
+#define _LV_FINDINFOW tagLVFINDINFOW
+#define LV_FINDINFOW LVFINDINFOW
+typedef struct tagNMLVFINDITEMA {
+	NMHDR hdr;
+	int iStart;
+	LVFINDINFOA lvfi;
+} NMLVFINDITEMA, *PNMLVFINDITEMA, FAR *LPNMLVFINDITEMA;
+#define _NMLVFINDITEMA tagNMLVFINDITEMA
+typedef struct tagNMLVFINDITEMW {
+	NMHDR hdr;
+	int iStart;
+	LVFINDINFOW lvfi;
+} NMLVFINDITEMW, *PNMLVFINDITEMW, FAR *LPNMLVFINDITEMW;
+#define _NMLVFINDITEMW tagNMLVFINDITEMW
+typedef struct _LVHITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iItem;
+#if (_WIN32_IE >= 0x0300)
+	int iSubItem;
+#endif
+} LVHITTESTINFO, FAR *LPLVHITTESTINFO;
+#define _LV_HITTESTINFO _LVHITTESTINFO
+#define LV_HITTESTINFO LVHITTESTINFO
+typedef struct _LVCOLUMNA {
+	UINT mask;
+	int fmt;
+	int cx;
+	LPSTR pszText;
+	int cchTextMax;
+	int iSubItem;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+} LVCOLUMNA, FAR *LPLVCOLUMNA;
+#define _LV_COLUMNA _LVCOLUMNA
+#define LV_COLUMNA LVCOLUMNA
+typedef struct _LVCOLUMNW {
+	UINT mask;
+	int fmt;
+	int cx;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iSubItem;
+#if (_WIN32_IE >= 0x0300)
+	int iImage;
+	int iOrder;
+#endif
+} LVCOLUMNW, FAR *LPLVCOLUMNW;
+#define _LV_COLUMNW _LVCOLUMNW
+#define LV_COLUMNW LVCOLUMNW
+typedef int(CALLBACK *PFNLVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct tagNMLISTVIEW {
+	NMHDR hdr;
+	int iItem;
+	int iSubItem;
+	UINT uNewState;
+	UINT uOldState;
+	UINT uChanged;
+	POINT ptAction;
+	LPARAM lParam;
+} NMLISTVIEW, *LPNMLISTVIEW;
+/* for backward compatibility */
+#define _NM_LISTVIEW  tagNMLISTVIEW
+#define NM_LISTVIEW NMLISTVIEW
+#define LPNM_LISTVIEW LPNMLISTVIEW
+typedef struct tagNMLVDISPINFOA {
+	NMHDR hdr;
+	LV_ITEMA item;
+} NMLVDISPINFOA, FAR *LPNMLVDISPINFOA;
+#define _LV_DISPINFOA tagNMLVDISPINFOA
+#define LV_DISPINFOA NMLVDISPINFOA
+typedef struct tagNMLVDISPINFOW {
+	NMHDR hdr;
+	LV_ITEMW item;
+} NMLVDISPINFOW, FAR *LPNMLVDISPINFOW;
+#define _LV_DISPINFOW tagNMLVDISPINFOW
+#define LV_DISPINFOW NMLVDISPINFOW
+typedef struct _LV_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} LV_KEYDOWN;
+typedef struct tagNMLVCACHEHINT {
+	NMHDR hdr;
+	int iFrom;
+	int iTo;
+} NMLVCACHEHINT, *LPNMLVCACHEHINT;
+#define NM_CACHEHINT NMLVCACHEHINT
+#define PNM_CACHEHINT LPNMLVCACHEHINT
+#define LPNM_CACHEHINT LPNMLVCACHEHINT
+
+typedef struct _TREEITEM *HTREEITEM;
+typedef struct tagTVITEMA {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+} TVITEMA,*LPTVITEMA;
+#define _TV_ITEMA tagTVITEMA
+#define TV_ITEMA TVITEMA
+#define LPTV_ITEMA LPTVITEMA
+typedef struct tagTVITEMW {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+} TVITEMW,*LPTVITEMW;
+#define _TV_ITEMW tagTVITEMW
+#define TV_ITEMW TVITEMW
+#define LPTV_ITEMW LPTVITEMW
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagTVITEMEXA {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+	int iIntegral;
+} TVITEMEXA, *LPTVITEMEXA;
+typedef struct tagTVITEMEXW {
+	UINT mask;
+	HTREEITEM hItem;
+	UINT state;
+	UINT stateMask;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	int iSelectedImage;
+	int cChildren;
+	LPARAM lParam;
+	int iIntegral;
+} TVITEMEXW, *LPTVITEMEXW;
+#endif /* _WIN32_IE >= 0x0400 */
+typedef struct tagTVINSERTSTRUCTA {
+	HTREEITEM hParent;
+	HTREEITEM hInsertAfter;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+	TVITEMEXA itemex;
+	TV_ITEMA item;
+	} DUMMYUNIONNAME;
+#else
+	TV_ITEMA item;
+#endif
+} TVINSERTSTRUCTA,*LPTVINSERTSTRUCTA;
+#define _TV_INSERTSTRUCTA tagTVINSERTSTRUCTA
+#define TV_INSERTSTRUCTA TVINSERTSTRUCTA
+#define LPTV_INSERTSTRUCTA LPTVINSERTSTRUCTA
+typedef struct tagTVINSERTSTRUCTW {
+	HTREEITEM hParent;
+	HTREEITEM hInsertAfter;
+#if (_WIN32_IE >= 0x0400)
+	_ANONYMOUS_UNION union {
+	  TVITEMEXW itemex;
+	  TV_ITEMW  item;
+	} DUMMYUNIONNAME;
+#else
+	TV_ITEMW item;
+#endif
+} TVINSERTSTRUCTW,*LPTVINSERTSTRUCTW;
+#define _TV_INSERTSTRUCTW tagTVINSERTSTRUCTW
+#define TV_INSERTSTRUCTW TVINSERTSTRUCTW
+#define LPTV_INSERTSTRUCTW LPTVINSERTSTRUCTW
+typedef struct tagTVHITTESTINFO {
+	POINT pt;
+ 	UINT flags;
+	HTREEITEM hItem;
+} TVHITTESTINFO, *LPTVHITTESTINFO;
+#define _TV_HITTESTINFO tagTVHITTESTINFO
+#define TV_HITTESTINFO TVHITTESTINFO
+#define LPTV_HITTESTINFO LPTVHITTESTINFO
+typedef int(CALLBACK *PFNTVCOMPARE)(LPARAM,LPARAM,LPARAM);
+typedef struct tagTVSORTCB {
+	HTREEITEM hParent;
+	PFNTVCOMPARE lpfnCompare;
+	LPARAM lParam;
+} TVSORTCB,*LPTVSORTCB;
+#define _TV_SORTCB tagTVSORTCB
+#define TV_SORTCB TVSORTCB
+#define LPTV_SORTCB LPTVSORTCB
+typedef struct tagNMTREEVIEWA {
+	NMHDR hdr;
+	UINT action;
+	TV_ITEMA itemOld;
+	TV_ITEMA itemNew;
+	POINT ptDrag;
+} NMTREEVIEWA,*LPNMTREEVIEWA;
+#define _NM_TREEVIEWA tagNMTREEVIEWA
+#define NM_TREEVIEWA NMTREEVIEWA
+#define LPNM_TREEVIEWA LPNMTREEVIEWA
+typedef struct tagNMTREEVIEWW {
+	NMHDR hdr;
+	UINT action;
+	TV_ITEMW itemOld;
+	TV_ITEMW itemNew;
+	POINT ptDrag;
+} NMTREEVIEWW,*LPNMTREEVIEWW;
+#define _NM_TREEVIEWW tagNMTREEVIEWW
+#define NM_TREEVIEWW NMTREEVIEWW
+#define LPNM_TREEVIEWW LPNMTREEVIEWW
+typedef struct tagNMTVDISPINFOA {
+	NMHDR hdr;
+	TVITEMA item;
+} NMTVDISPINFOA, *LPNMTVDISPINFOA;
+#define _TV_DISPINFOA tagNMTVDISPINFOA
+#define TV_DISPINFOA NMTVDISPINFOA
+typedef struct tagNMTVDISPINFOW {
+	NMHDR hdr;
+	TVITEMW item;
+} NMTVDISPINFOW, *LPNMTVDISPINFOW;
+#define _TV_DISPINFOW tagNMTVDISPINFOW
+#define TV_DISPINFOW NMTVDISPINFOW
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMTVGETINFOTIPA {
+	NMHDR hdr;
+	LPSTR pszText;
+	int cchTextMax;
+	HTREEITEM hItem;
+	LPARAM lParam;
+} NMTVGETINFOTIPA, *LPNMTVGETINFOTIPA;
+typedef struct tagNMTVGETINFOTIPW {
+	NMHDR hdr;
+	LPWSTR pszText;
+	int cchTextMax;
+	HTREEITEM hItem;
+	LPARAM lParam;
+} NMTVGETINFOTIPW, *LPNMTVGETINFOTIPW;
+#endif
+typedef struct _TV_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} TV_KEYDOWN;
+typedef struct _TC_ITEMHEADERA {
+	UINT mask;
+	UINT lpReserved1;
+	UINT lpReserved2;
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+} TC_ITEMHEADERA;
+typedef struct _TC_ITEMHEADERW {
+	UINT mask;
+	UINT lpReserved1;
+	UINT lpReserved2;
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+} TC_ITEMHEADERW;
+typedef struct tagTCITEMA {
+	UINT mask;
+#if (_WIN32_IE >= 0x0300)
+	DWORD dwState;
+	DWORD dwStateMask;
+#else
+ 	UINT lpReserved1;
+ 	UINT lpReserved2;
+#endif
+	LPSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+} TCITEMA, *LPTCITEMA;
+#define TC_ITEMA TCITEMA
+typedef struct tagTCITEMW {
+	UINT mask;
+#if (_WIN32_IE >= 0x0300)
+	DWORD dwState;
+	DWORD dwStateMask;
+#else
+ 	UINT lpReserved1;
+ 	UINT lpReserved2;
+#endif
+	LPWSTR pszText;
+	int cchTextMax;
+	int iImage;
+	LPARAM lParam;
+} TCITEMW, *LPTCITEMW;
+#define TC_ITEMW TCITEMW
+typedef struct tagTCHITTESTINFO {
+	POINT pt;
+	UINT flags;
+} TCHITTESTINFO, *LPTCHITTESTINFO;
+#define TC_HITTESTINFO TCHITTESTINFO
+#define LPTC_HITTESTINFO LPTCHITTESTINFO
+typedef struct _TC_KEYDOWN {
+	NMHDR hdr;
+	WORD wVKey;
+	UINT flags;
+} TC_KEYDOWN;
+#if (_WIN32_IE >= 0x0300)
+typedef struct tagINITCOMMONCONTROLSEX {
+	DWORD dwSize;
+	DWORD dwICC;
+} INITCOMMONCONTROLSEX,*LPINITCOMMONCONTROLSEX;
+#endif
+typedef struct tagPBRANGE {
+	int iLow;
+	int iHigh;
+} PBRANGE,*PPBRANGE;
+typedef struct tagCOLORSCHEME {
+	DWORD dwSize;
+	COLORREF clrBtnHighlight;
+	COLORREF clrBtnShadow;
+} COLORSCHEME,*LPCOLORSCHEME;
+typedef struct tagMCHITTESTINFO {
+	UINT cbSize;
+	POINT pt;
+	UINT uHit;
+	SYSTEMTIME st;
+}MCHITTESTINFO, *PMCHITTESTINFO;
+typedef DWORD MONTHDAYSTATE;
+typedef MONTHDAYSTATE *LPMONTHDAYSTATE;
+typedef struct tagNMDAYSTATE {
+	NMHDR nmhdr;
+	SYSTEMTIME stStart;
+	int cDayState;
+	LPMONTHDAYSTATE prgDayState;
+}NMDAYSTATE,*LPNMDAYSTATE;
+typedef struct tagREBARINFO {
+	UINT cbSize;
+	UINT fMask;
+	HIMAGELIST himl;
+} REBARINFO,*LPREBARINFO;
+typedef struct tagREBARBANDINFOA {
+	UINT cbSize;
+	UINT fMask;
+	UINT fStyle;
+	COLORREF clrFore;
+	COLORREF clrBack;
+	LPSTR lpText;
+	UINT cch;
+	int iImage;
+	HWND hwndChild;
+	UINT cxMinChild;
+	UINT cyMinChild;
+	UINT cx;
+	HBITMAP hbmBack;
+	UINT wID;
+#if (_WIN32_IE >= 0x0400)
+	UINT cyChild;
+	UINT cyMaxChild;
+	UINT cyIntegral;
+	UINT cxIdeal;
+	LPARAM lParam;
+	UINT cxHeader;
+#endif
+} REBARBANDINFOA,*LPREBARBANDINFOA;
+typedef struct tagREBARBANDINFOW {
+	UINT cbSize;
+	UINT fMask;
+	UINT fStyle;
+	COLORREF clrFore;
+	COLORREF clrBack;
+	LPWSTR lpText;
+	UINT cch;
+	int iImage;
+	HWND hwndChild;
+	UINT cxMinChild;
+	UINT cyMinChild;
+	UINT cx;
+	HBITMAP hbmBack;
+	UINT wID;
+#if (_WIN32_IE >= 0x0400)
+	UINT cyChild;
+	UINT cyMaxChild;
+	UINT cyIntegral;
+	UINT cxIdeal;
+	LPARAM lParam;
+	UINT cxHeader;
+#endif
+} REBARBANDINFOW,*LPREBARBANDINFOW;
+typedef REBARBANDINFOA const *LPCREBARBANDINFOA;
+typedef REBARBANDINFOW const *LPCREBARBANDINFOW;
+#define REBARBANDINFOA_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOA,wID)
+#define REBARBANDINFOW_V3_SIZE CCSIZEOF_STRUCT(REBARBANDINFOW, wID)
+#if (_WIN32_IE >= 0x0300)
+typedef struct tagNMLVODSTATECHANGE {
+  NMHDR hdr;
+  int iFrom;
+  int iTo;
+  UINT uNewState;
+  UINT uOldState;
+} NMLVODSTATECHANGE, *LPNMLVODSTATECHANGE;
+typedef struct tagIMAGELISTDRAWPARAMS {
+	DWORD cbSize;
+	HIMAGELIST himl;
+	int i;
+	HDC hdcDst;
+	int x;
+	int y;
+	int cx;
+	int cy;
+	int xBitmap;        
+	int yBitmap;        
+	COLORREF rgbBk;
+	COLORREF rgbFg;
+	UINT fStyle;
+	DWORD dwRop;
+#if (_WIN32_WINNT >= 0x0501)
+	DWORD fState;
+	DWORD Frame;
+	COLORREF crEffect;
+#endif
+} IMAGELISTDRAWPARAMS,*LPIMAGELISTDRAWPARAMS;
+#endif /* (_WIN32_IE >= 0x0300) */
+#if (_WIN32_IE >= 0x0400)
+typedef struct tagNMREBARCHILDSIZE {
+	NMHDR hdr;
+	UINT uBand;
+	UINT wID;
+	RECT rcChild;
+	RECT rcBand;
+} NMREBARCHILDSIZE,*LPNMREBARCHILDSIZE;
+typedef struct tagNMREBAR {
+	NMHDR hdr;
+	DWORD dwMask;
+	UINT uBand;
+	UINT fStyle;
+	UINT wID;
+	LPARAM lParam;
+} NMREBAR,*LPNMREBAR;
+typedef struct tagNMRBAUTOSIZE {
+	NMHDR hdr;
+	BOOL fChanged;
+	RECT rcTarget;
+	RECT rcActual;
+} NMRBAUTOSIZE,*LPNMRBAUTOSIZE;
+#if (_WIN32_IE >= 0x0500)
+typedef struct tagNMREBARCHEVRON {
+	NMHDR hdr;
+	UINT uBand;
+	UINT wID;
+	LPARAM lParam;
+	RECT rc;
+	LPARAM lParamNM;
+} NMREBARCHEVRON, *LPNMREBARCHEVRON;
+#endif
+typedef struct _RB_HITTESTINFO {
+	POINT pt;
+	UINT flags;
+	int iBand;
+} RBHITTESTINFO,*LPRBHITTESTINFO;
+#endif
+typedef struct _DSA *HDSA;
+typedef struct _DPA *HDPA;
+typedef INT (CALLBACK *PFNDPAENUMCALLBACK)(PVOID,PVOID);
+typedef INT (CALLBACK *PFNDSAENUMCALLBACK)(PVOID,PVOID);
+typedef INT (CALLBACK *PFNDPACOMPARE)(PVOID,PVOID,LPARAM);
+#if (_WIN32_WINNT >= 0x0501)
+typedef LRESULT (CALLBACK *SUBCLASSPROC)(HWND,UINT,WPARAM,LPARAM,UINT_PTR,DWORD_PTR);
+typedef struct tagLITEM {
+	UINT mask;
+	int iLink;
+	UINT state;
+	UINT stateMask;
+	WCHAR szID[MAX_LINKID_TEXT];
+	WCHAR szUrl[L_MAX_URL_LENGTH];
+} LITEM,*PLITEM;
+typedef struct tagLHITTESTINFO {
+	POINT pt;
+	LITEM item;
+} LHITTESTINFO,*PLHITTESTINFO;
+typedef struct tagNMLINK {
+	NMHDR hdr;
+	LITEM item;
+} NMLINK,*PNMLINK;
+#endif /* _WIN32_WINNT >= 0x0501 */
+
+#define INDEXTOOVERLAYMASK(i) ((i)<<8)
+#define INDEXTOSTATEIMAGEMASK(i) ((i)<<12)
+#define HANDLE_WM_NOTIFY(h,w,l,f) (f)((h),(int)(w),(NMHDR*)(l))
+#define FORWARD_WM_NOTIFY(h,i,p,f) (LRESULT)(f)((h),WM_NOTIFY,(WPARAM)(int)(i),(LPARAM)(NMHDR*)(p))
+#define CCSIZEOF_STRUCT(s,m) (((int)((PBYTE)(&((s*)0)->m)-((PBYTE)((s*)0))))+sizeof(((s*)0)->m))
+#define MAKEIPADDRESS(b1,b2,b3,b4) ((LPARAM)(((DWORD)(b1)<<24)+((DWORD)(b2)<<16)+((DWORD)(b3)<<8)+((DWORD)(b4))))
+#define MAKEIPRANGE(low,high) ((LPARAM)(WORD)(((BYTE)(high)<<8)+(BYTE)(low)))
+#define FIRST_IPADDRESS(a) ((a>>24) & 0xff)
+#define SECOND_IPADDRESS(a) ((a>>16) & 0xff)
+#define THIRD_IPADDRESS(a)  ((a>>8) & 0xff)
+#define FOURTH_IPADDRESS(a) (a & 0xff)
+#define Animate_Create(w,i,s,hI) CreateWindow(ANIMATE_CLASS,NULL,s,0,0,0,0,w,(HMENU)(i),hI,NULL)
+#define Animate_Open(w,f) (BOOL)SNDMSG(w,ACM_OPEN,0,(LPARAM)f)
+#define Animate_OpenEx(w,h,s) (BOOL)SNDMSG(w,ACM_OPEN,(WPARAM)h,(LPARAM)(LPTSTR)(s))
+#define Animate_Play(w,f,t,r) (BOOL)SNDMSG(w,ACM_PLAY,(r),(LPARAM)MAKELONG(f,t))
+#define Animate_Stop(w)	(BOOL)SNDMSG(w,ACM_STOP,0,0)
+#define Animate_Close(w)	Animate_Open(w,NULL)
+#define Animate_Seek(w,f)	Animate_Play(w,f,f,1)
+HBITMAP WINAPI CreateMappedBitmap(HINSTANCE,int,UINT,LPCOLORMAP,int);
+HWND WINAPI CreateStatusWindowA(LONG,LPCSTR,HWND,UINT);
+HWND WINAPI CreateStatusWindowW(LONG,LPCWSTR,HWND,UINT);
+HWND WINAPI CreateToolbarEx(HWND,DWORD,UINT,int,HINSTANCE,UINT,LPCTBBUTTON,int,int,int,int,int,UINT);
+HWND WINAPI CreateUpDownControl(DWORD,int,int,int,int,HWND,int,HINSTANCE,HWND,int,int,int);
+#define DateTime_GetMonthCal(hwnd) SNDMSG(hwnd, DTM_GETMONTHCAL, 0, 0)
+#define DateTime_GetMonthCalColor(hwnd, icolor) SNDMSG(hwnd, DTM_GETMONTHCAL, (WPARAM)icolor,0)
+#define DateTime_GetMonthCalFont(hwnd) SNDMSG(hwnd,DTM_GETMCFONT,0,0)
+#define DateTime_GetRange(hwnd,lpsystimearray) SNDMSG(hwnd,DTM_GETRANGE,0,(LPARAM)lpsystimearray)
+#define DateTime_GetSystemtime(hwnd,lpsystime) SNDMSG(hwnd,DTM_GETSYSTEMTIME,0,(LPARAM)lpsystime)
+#define DateTime_SetFormat(hwnd,lpszformat) SNDMSG(hwnd,DTM_SETFORMAT,0,(LPARAM)lpszformat)
+#define DateTime_SetMonthCalColor(hwnd,icolor,clr) SNDMSG(hwnd,DTM_SETMCCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define DateTime_SetMonthCalFont(hwnd,hfont,lparam) SNDMSG(hwnd,DTM_SETMCFONT,(WPARAM)hfont,(LPARAM)lparam)
+#define DateTime_SetRange(hwnd,flags,lpsystimearray) SNDMSG(hwnd,DTM_SETRANGE,(WPARAM)flags,(LPARAM)lpsystimearray)
+#define DateTime_SetSystemtime(hwnd,flag,lpsystime) SNDMSG(hwnd,DTM_SETSYSTEMTIME,(WPARAM)flag,(LPARAM)lpsystime)
+void WINAPI DrawInsert(HWND,HWND,int);
+void WINAPI DrawStatusTextA(HDC,LPRECT,LPCSTR,UINT);
+void WINAPI DrawStatusTextW(HDC,LPRECT,LPCWSTR,UINT);
+void WINAPI GetEffectiveClientRect(HWND,LPRECT,LPINT);
+#if (_WIN32_IE >= 0x0500)
+LANGID WINAPI GetMUILanguage(VOID);
+#endif
+#define Header_GetItemCount(w) (int)SNDMSG((w),HDM_GETITEMCOUNT,0,0)
+#define Header_InsertItem(w,i,phdi) (int)SNDMSG((w),HDM_INSERTITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_DeleteItem(w,i) (BOOL)SNDMSG((w),HDM_DELETEITEM,(WPARAM)(int)(i),0)
+#define Header_GetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_GETITEM,(WPARAM)(int)(i),(LPARAM)(HD_ITEM*)(phdi))
+#define Header_SetItem(w,i,phdi) (BOOL)SNDMSG((w),HDM_SETITEM,(WPARAM)(int)(i),(LPARAM)(const HD_ITEM*)(phdi))
+#define Header_Layout(w,l) (BOOL)SNDMSG((w),HDM_LAYOUT,0,(LPARAM)(HD_LAYOUT*)(l))
+#if (_WIN32_IE >= 0x0300)
+#define Header_OrderToIndex(w,o) (int)SNDMSG((w),HDM_ORDERTOINDEX,(WPARAM)(o),0)
+#define Header_GetItemRect(w,i,r) (BOOL)SNDMSG((w),HDM_GETITEMRECT,(WPARAM)(i),(LPARAM)(r))
+#define Header_GetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_GETORDERARRAY,(WPARAM)(l),(LPARAM)(a))
+#define Header_SetOrderArray(w,l,a) (BOOL)SNDMSG((w),HDM_SETORDERARRAY,(WPARAM)(l),(LPARAM)(a))
+#define Header_CreateDragImage(w, i) (HIMAGELIST)SNDMSG((w), HDM_CREATEDRAGIMAGE, (WPARAM)i, 0)
+#define Header_SetImageList(w,l) (HIMAGELIST)SNDMSG((w), HDM_SETIMAGELIST, 0, (LPARAM)l)
+#define Header_GetImageList(w) (HIMAGELIST)SNDMSG((w),HDM_GETIMAGELIST,0,0)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define Header_GetUnicodeFormat(w) (BOOL)SNDMSG((w),HDM_GETUNICODEFORMAT,0,0)
+#define Header_SetUnicodeFormat(w,f) (BOOL)SNDMSG((w),HDM_SETUNICODEFORMAT,(WPARAM)(f),0)
+#endif
+HDSA WINAPI DSA_Create(INT,INT);
+BOOL WINAPI DSA_Destroy(HDSA);
+VOID WINAPI DSA_DestroyCallback(HDSA,PFNDSAENUMCALLBACK,PVOID);
+PVOID WINAPI DSA_GetItemPtr(HDSA,INT);
+INT WINAPI DSA_InsertItem(HDSA,INT,PVOID);
+HDPA WINAPI DPA_Create(INT);
+BOOL WINAPI DPA_Destroy(HDPA);
+PVOID WINAPI DPA_DeletePtr(HDPA,INT);
+BOOL WINAPI DPA_DeleteAllPtrs(HDPA);
+VOID WINAPI DPA_EnumCallback(HDPA,PFNDPAENUMCALLBACK,PVOID);
+VOID WINAPI DPA_DestroyCallback(HDPA,PFNDPAENUMCALLBACK,PVOID);
+BOOL WINAPI DPA_SetPtr(HDPA,INT,PVOID);
+INT WINAPI DPA_InsertPtr(HDPA,INT,PVOID);
+PVOID WINAPI DPA_GetPtr(HDPA,INT_PTR);
+BOOL WINAPI DPA_Sort(HDPA,PFNDPACOMPARE,LPARAM);
+INT WINAPI DPA_Search(HDPA,PVOID,INT,PFNDPACOMPARE,LPARAM,UINT);
+BOOL WINAPI Str_SetPtrW(LPWSTR*,LPCWSTR);
+#if (_WIN32_IE >= 0x0400)
+BOOL WINAPI FlatSB_EnableScrollBar(HWND,INT,UINT);
+BOOL WINAPI FlatSB_ShowScrollBar(HWND,INT,BOOL);
+BOOL WINAPI FlatSB_GetScrollRange(HWND,INT,LPINT,LPINT);
+BOOL WINAPI FlatSB_GetScrollInfo(HWND,INT,LPSCROLLINFO);
+INT WINAPI FlatSB_GetScrollPos(HWND,INT);
+BOOL WINAPI FlatSB_GetScrollProp(HWND,INT,LPINT);
+#ifdef _WIN64
+BOOL WINAPI FlatSB_GetScrollPropPtr(HWND,INT,PINT_PTR);
+#else
+#define FlatSB_GetScrollPropPtr FlatSB_GetScrollProp
+#endif
+INT WINAPI FlatSB_SetScrollPos(HWND,INT,INT,BOOL);
+INT WINAPI FlatSB_SetScrollInfo(HWND,INT,LPSCROLLINFO,BOOL);
+INT WINAPI FlatSB_SetScrollRange(HWND,INT,INT,INT,BOOL);
+BOOL WINAPI FlatSB_SetScrollProp(HWND,UINT,INT_PTR,BOOL);
+#define FlatSB_SetScrollPropPtr FlatSB_SetScrollProp
+BOOL WINAPI InitializeFlatSB(HWND);
+HRESULT WINAPI UninitializeFlatSB(HWND);
+#endif /* _WIN32_IE >= 0x0400 */
+#if (_WIN32_WINNT >= 0x0501)
+BOOL WINAPI SetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR);
+BOOL WINAPI GetWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR,DWORD_PTR*);
+BOOL WINAPI RemoveWindowSubclass(HWND,SUBCLASSPROC,UINT_PTR);
+LRESULT WINAPI DefSubclassProc(HWND,UINT,WPARAM,LPARAM);
+INT WINAPI DrawShadowText(HDC,LPCWSTR,UINT,RECT*,DWORD,COLORREF,COLORREF,INT,INT);
+#endif /* _WIN32_WINNT >= 0x0501 */
+int WINAPI ImageList_Add(HIMAGELIST,HBITMAP,HBITMAP);
+#define ImageList_AddIcon(l,i) ImageList_ReplaceIcon(l,-1,i)
+int WINAPI ImageList_AddMasked(HIMAGELIST,HBITMAP,COLORREF);
+BOOL WINAPI ImageList_BeginDrag(HIMAGELIST,int,int,int);
+HIMAGELIST WINAPI ImageList_Create(int,int,UINT,int,int);
+BOOL WINAPI ImageList_Destroy(HIMAGELIST);
+BOOL WINAPI ImageList_DragEnter(HWND,int,int);
+BOOL WINAPI ImageList_DragLeave(HWND);
+BOOL WINAPI ImageList_DragMove(int,int);
+BOOL WINAPI ImageList_DragShowNolock(BOOL);
+BOOL WINAPI ImageList_Draw(HIMAGELIST,int,HDC,int,int,UINT);
+BOOL WINAPI ImageList_DrawEx(HIMAGELIST,int,HDC,int,int,int,int,COLORREF,COLORREF,UINT);
+void WINAPI ImageList_EndDrag(VOID);
+#define ImageList_ExtractIcon(h,l,i) ImageList_GetIcon(l,i,0)
+COLORREF WINAPI ImageList_GetBkColor(HIMAGELIST);
+HIMAGELIST WINAPI ImageList_GetDragImage(LPPOINT,LPPOINT);
+HICON WINAPI ImageList_GetIcon(HIMAGELIST,int,UINT);
+BOOL WINAPI ImageList_GetIconSize(HIMAGELIST,int*,int*);
+int WINAPI ImageList_GetImageCount(HIMAGELIST);
+BOOL WINAPI ImageList_GetImageInfo(HIMAGELIST,int,IMAGEINFO*);
+#define ImageList_LoadBitmap(h,l,x,G,M) ImageList_LoadImage(h,l,x,G,M,IMAGE_BITMAP,0)
+HIMAGELIST WINAPI ImageList_LoadImageA(HINSTANCE,LPCSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_LoadImageW(HINSTANCE,LPCWSTR,int,int,COLORREF,UINT,UINT);
+HIMAGELIST WINAPI ImageList_Merge(HIMAGELIST,int,HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_Remove(HIMAGELIST,int);
+#define ImageList_RemoveAll(l) ImageList_Remove(l,-1)
+BOOL WINAPI ImageList_Replace(HIMAGELIST,int,HBITMAP,HBITMAP);
+int WINAPI ImageList_ReplaceIcon(HIMAGELIST,int,HICON);
+COLORREF WINAPI ImageList_SetBkColor(HIMAGELIST,COLORREF);
+BOOL WINAPI ImageList_SetDragCursorImage(HIMAGELIST,int,int,int);
+BOOL WINAPI ImageList_SetIconSize(HIMAGELIST,int,int);
+BOOL WINAPI ImageList_SetOverlayImage(HIMAGELIST,int,int);
+#ifdef _OBJIDL_H
+HIMAGELIST WINAPI ImageList_Read(LPSTREAM);
+BOOL WINAPI ImageList_Write(HIMAGELIST,LPSTREAM);
+#endif
+#if (_WIN32_IE >= 0x0400)
+HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himl);
+#endif
+void WINAPI InitCommonControls(void);
+#if (_WIN32_IE >= 0x0300)
+BOOL WINAPI InitCommonControlsEx(LPINITCOMMONCONTROLSEX);
+#endif
+#if (_WIN32_IE >= 0x0500)
+VOID WINAPI InitMUILanguage(LANGID);
+#endif
+int WINAPI LBItemFromPt(HWND,POINT,BOOL);
+#define ListView_GetBkColor(w) (COLORREF)SNDMSG((w),LVM_GETBKCOLOR,0,0)
+#define ListView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),LVM_GETIMAGELIST,(i),0)
+#define ListView_GetItemCount(w) (int)SNDMSG((w),LVM_GETITEMCOUNT,0,0)
+#define ListView_GetItem(w,i) (BOOL)SNDMSG((w),LVM_GETITEM,0,(LPARAM)(i))
+#define ListView_SetBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETBKCOLOR,0,(LPARAM)c)
+#define ListView_SetImageList(w,h,i) (HIMAGELIST)(UINT)SNDMSG((w),LVM_SETIMAGELIST,(i),(LPARAM)(h))
+#define ListView_SetItem(w,i) (BOOL)SNDMSG((w),LVM_SETITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_InsertItem(w,i) (int)SNDMSG((w),LVM_INSERTITEM,0,(LPARAM)(const LV_ITEM*)(i))
+#define ListView_DeleteItem(w,i) (BOOL)SNDMSG((w),LVM_DELETEITEM,i,0)
+#define ListView_DeleteAllItems(w) (BOOL)SNDMSG((w),LVM_DELETEALLITEMS,0,0)
+#define ListView_GetCallbackMask(w) (UINT)SNDMSG((w),LVM_GETCALLBACKMASK,0,0)
+#define ListView_SetCallbackMask(w,m) (BOOL)SNDMSG((w),LVM_SETCALLBACKMASK,m,0)
+#define ListView_GetNextItem(w,i,f) (int)SNDMSG((w),LVM_GETNEXTITEM,i,MAKELPARAM((f),0))
+#define ListView_FindItem(w,i,p) (int)SNDMSG((w), LVM_FINDITEM,(WPARAM)i,(LPARAM)(const LV_FINDINFO*)(p))
+#define ListView_GetItemRect(w,i,p,c) (BOOL)SNDMSG((w),LVM_GETITEMRECT,i,((p)?(((LPRECT)(p))->left=(c),(LPARAM)(LPRECT)(p)):0))
+#define ListView_SetItemPosition(w,i,x,y) (BOOL)SNDMSG((w),LVM_SETITEMPOSITION,i,MAKELPARAM(x,y))
+#define ListView_GetItemPosition(w,i,p) (BOOL)SNDMSG((w),LVM_GETITEMPOSITION,i,(LPARAM)p)
+#define ListView_GetItemSpacing(w,f) (DWORD)SNDMSG((w),LVM_GETITEMSPACING,f,0)
+#define ListView_GetStringWidth(w,s) (int)SNDMSG((w),LVM_GETSTRINGWIDTH,0,(LPARAM)s)
+#define ListView_HitTest(w,p) (int)SNDMSG((w),LVM_HITTEST,0,(LPARAM)(LV_HITTESTINFO*)(p))
+#define ListView_EnsureVisible(w,i,f) (BOOL)SNDMSG((w),LVM_ENSUREVISIBLE,i,MAKELPARAM((f),0))
+#define ListView_Scroll(w,x,y) (BOOL)SNDMSG((w),LVM_SCROLL,x,y)
+#define ListView_RedrawItems(w,f,l) (BOOL)SNDMSG((w),LVM_REDRAWITEMS,f,l)
+#define ListView_Arrange(w,c) (BOOL)SNDMSG((w),LVM_ARRANGE,c,0)
+#define ListView_EditLabel(w,i) (HWND)SNDMSG((w),LVM_EDITLABEL,i,0)
+#define ListView_GetEditControl(w) (HWND)SNDMSG((w),LVM_GETEDITCONTROL,0,0)
+#define ListView_GetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_GETCOLUMN,i,(LPARAM)(LV_COLUMN*)(p))
+#define ListView_SetColumn(w,i,p) (BOOL)SNDMSG((w),LVM_SETCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_InsertColumn(w,i,p) (int)SNDMSG((w),LVM_INSERTCOLUMN,i,(LPARAM)(const LV_COLUMN*)(p))
+#define ListView_DeleteColumn(w,i) (BOOL)SNDMSG((w),LVM_DELETECOLUMN,i,0)
+#define ListView_GetColumnWidth(w,i) (int)SNDMSG((w),LVM_GETCOLUMNWIDTH,i,0)
+#define ListView_SetColumnWidth(w,i,x) (BOOL)SNDMSG((w),LVM_SETCOLUMNWIDTH,i,MAKELPARAM((x),0))
+#define ListView_CreateDragImage(w,i,p) (HIMAGELIST)SNDMSG((w),LVM_CREATEDRAGIMAGE,i,(LPARAM)(LPPOINT)(p))
+#define ListView_GetViewRect(w,p) (BOOL)SNDMSG((w),LVM_GETVIEWRECT,0,(LPARAM)(LPRECT)(p))
+#define ListView_GetTextColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTCOLOR,0,0)
+#define ListView_SetTextColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTextBkColor(w) (COLORREF)SNDMSG((w),LVM_GETTEXTBKCOLOR,0,0)
+#define ListView_SetTextBkColor(w,c) (BOOL)SNDMSG((w),LVM_SETTEXTBKCOLOR,0,(LPARAM)(COLORREF)(c))
+#define ListView_GetTopIndex(w) (int)SNDMSG((w),LVM_GETTOPINDEX,0,0)
+#define ListView_GetCountPerPage(w) (int)SNDMSG((w),LVM_GETCOUNTPERPAGE,0,0)
+#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_GetOrigin(w,p) (BOOL)SNDMSG((w),LVM_GETORIGIN,0,(LPARAM)(POINT*)(p))
+#define ListView_Update(w,i) (BOOL)SNDMSG((w),LVM_UPDATE,(WPARAM)(i),0)
+#define ListView_SetItemState(w,i,d,m) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.stateMask=m;\
+	_lvi.state=d;\
+	SNDMSG((w),LVM_SETITEMSTATE,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_GetItemState(w,i,m) (UINT)SNDMSG((w),LVM_GETITEMSTATE,i,m)
+#define ListView_GetItemText(w,i,iS,s,n) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.iSubItem=iS;\
+	_lvi.cchTextMax=n;\
+	_lvi.pszText=s;\
+	SNDMSG((w),LVM_GETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemText(w,i,iS,s) \
+{ \
+	LV_ITEM _lvi;\
+	_lvi.iSubItem=iS;\
+	_lvi.pszText=s;\
+	SNDMSG((w),LVM_SETITEMTEXT,i,(LPARAM)(LV_ITEM*)&_lvi);\
+}
+#define ListView_SetItemCount(w,n) (void)SNDMSG((w),LVM_SETITEMCOUNT,n,0)
+#define ListView_SortItems(w,f,l) (BOOL)SNDMSG((w),LVM_SORTITEMS,l,(LPARAM)f)
+#define ListView_SetItemPosition32(w,i,x,y) \
+{ \
+	POINT p={x,y}; \
+	SNDMSG((w),LVM_SETITEMPOSITION32,i,(LPARAM)&p);\
+}
+#define ListView_GetSelectedCount(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOUNT,0,0)
+#define ListView_GetCheckState(w,i) ((((UINT)(SNDMSG((w),LVM_GETITEMSTATE,(WPARAM)(i),LVIS_STATEIMAGEMASK)))>>12)-1)
+#define ListView_SetCheckState(w,i,f) ListView_SetItemState(w,i,INDEXTOSTATEIMAGEMASK((f)+1),LVIS_STATEIMAGEMASK)
+#define ListView_GetISearchString(w,lpsz) (BOOL)SNDMSG((w),LVM_GETISEARCHSTRING,0,(LPARAM)(LPTSTR)(lpsz)) 
+#define ListView_CancelEditLabel(w) (VOID)SNDMSG((w),LVM_CANCELEDITLABEL,0,0)
+#define ListView_EnableGroupView(w,i) (int)SNDMSG((w),LVM_ENABLEGROUPVIEW,(WPARAM)(i),0)
+#define ListView_GetGroupInfo(w,i,p) (int)SNDMSG((w),LVM_GETGROUPINFO,(WPARAM)(i),(LPARAM)(p))
+#define ListView_GetGroupMetrics(w,p) SNDMSG((w),LVM_GETGROUPMETRICS,0,(LPARAM)(p))
+#define ListView_GetInsertMark(w,p) (BOOL)SNDMSG((w),LVM_GETINSERTMARK,0,(LPARAM)(p))
+#define ListView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),LVM_GETINSERTMARKCOLOR,0,0)
+#define ListView_GetInsertMarkRect(w,p) (int)SNDMSG((w),LVM_GETINSERTMARKRECT,0,(LPARAM)(p))
+#define ListView_GetOutlineColor(w) (COLORREF)SNDMSG((w),LVM_GETOUTLINECOLOR,0,0)
+#define ListView_GetSelectedColumn(w) (UINT)SNDMSG((w),LVM_GETSELECTEDCOLUMN,0,0)
+#define ListView_GetTileInfo(w,p) SNDMSG((w),LVM_GETTILEINFO,0,(LPARAM)(p))
+#define ListView_GetTileViewInfo(w,p) SNDMSG((w),LVM_GETTILEVIEWINFO,0,(LPARAM)(p))
+#define ListView_GetView(w) (DWORD)SNDMSG((w),LVM_GETVIEW,0,0)
+#define ListView_HasGroup(w,i) (BOOL)SNDMSG((w),LVM_HASGROUP,(WPARAM)(i),0)
+#define ListView_InsertGroup(w,i,p) (int)SNDMSG((w),LVM_INSERTGROUP,(WPARAM)(i),(LPARAM)(p))
+#define ListView_InsertGroupSorted(w,p) SNDMSG((w),LVM_INSERTGROUPSORTED,(WPARAM)(p),0)
+#define ListView_InsertMarkHitTest(w,p,t) (BOOL)SNDMSG((w),LVM_INSERTMARKHITTEST,(WPARAM)(p),(LPARAM)(t))
+#define ListView_IsGroupViewEnabled(w) (BOOL)SNDMSG((w),LVM_ISGROUPVIEWENABLED,0,0)
+#define ListView_MapIDToIndex(w,i) (UINT)SNDMSG((w),LVM_MAPIDTOINDEX,(WPARAM)(i),0)
+#define ListView_MoveGroup(w,i,t) SNDMSG((w),LVM_MOVEGROUP,(WPARAM)(i),(LPARAM)(t))
+#define ListView_RemoveAllGroups(w) SNDMSG((w),LVM_REMOVEALLGROUPS,0,0)
+#define ListView_RemoveGroup(w,i) (int)SNDMSG((w),LVM_REMOVEGROUP,(WPARAM)(i),0)
+#define ListView_SetGroupInfo(w,i,p) (int)SNDMSG((w),LVM_SETGROUPINFO,(WPARAM)(i),(LPARAM)(p))
+#define ListView_SetGroupMetrics(w,p) SNDMSG((w),LVM_SETGROUPMETRICS,0,(LPARAM)(p))
+#define ListView_SetInfoTip(w,p) (BOOL)SNDMSG((w),LVM_SETINFOTIP,0,(LPARAM)(p))
+#define ListView_SetInsertMark(w,p) (BOOL)SNDMSG((w),LVM_SETINSERTMARK,0,(LPARAM)(p))
+#define ListView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),LVM_SETINSERTMARKCOLOR,0,(LPARAM)(c))
+#define ListView_SetOutlineColor(w,c) (COLORREF)SNDMSG((w),LVM_SETOUTLINECOLOR,0,(LPARAM)(c))
+#if (_WIN32_WINNT >= 0x0501)
+#define ListView_SetSelectedColumn(w,i) SNDMSG((w),LVM_SETSELECTEDCOLUMN,(WPARAM)i,0)
+#endif
+#define ListView_SetTileInfo(w,p) (BOOL)SNDMSG((w),LVM_SETTILEINFO,0,(LPARAM)(p))
+#define ListView_SetTileViewInfo(w,p) (BOOL)SNDMSG((w),LVM_SETTILEVIEWINFO,0,(LPARAM)(p))
+#define ListView_SetView(w,i) (int)SNDMSG((w),LVM_SETVIEW,(WPARAM)(i),0)
+#define ListView_SortGroups(w,c,p) (int)SNDMSG((w),LVM_SORTGROUPS,(WPARAM)(c),(LPARAM)(p))
+#define ListView_SortItemsEx(w,c,p) (BOOL)SNDMSG((w),LVM_SORTITEMSEX,(WPARAM)(p),(LPARAM)(c))
+
+#if (_WIN32_WINNT >= 0x0501)
+#define ComboBox_SetMinVisible(w,i) (BOOL)SNDMSG((w), CB_SETMINVISIBLE,(WPARAM)(i),0);
+#define ComboBox_GetMinVisible(w) (INT)SNDMSG((w),CB_GETMINVISIBLE,0,0);
+#endif
+
+BOOL WINAPI MakeDragList(HWND);
+void WINAPI MenuHelp(UINT,WPARAM,LPARAM,HMENU,HINSTANCE,HWND,PUINT);
+#define MonthCal_GetColor(hwnd,icolor) SNDMSG(hwnd,MCM_GETCOLOR,(WPARAM)icolor,(LPARAM)0)
+#define MonthCal_GetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_GETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_GetFirstDayOfWeek(hwnd) SNDMSG(hwnd,MCM_GETFIRSTDAYOFWEEK,0,0)
+#define MonthCal_GetMaxSelCount(hwnd) SNDMSG(hwnd,MCM_GETMAXSELCOUNT,0,0)
+#define MonthCal_GetMaxTodayWidth(hwnd) SNDMSG(hwnd,MCM_GETMAXTODAYWIDTH,0,0)
+#define MonthCal_GetMinReqRect(hwnd,lpRectInfo) SNDMSG(hwnd,MCM_GETMINREQRECT,0,(LPARAM)lpRectInfo)
+#define MonthCal_GetMonthDelta(hwnd) SNDMSG(hwnd,MCM_GETMONTHDELTA,0,0)
+#define MonthCal_GetMonthRange(hwnd,flag,systimearray) SNDMSG(hwnd,MCM_GETMONTHRANGE,(WPARAM)flag,(LPARAM)systimearray)
+#define MonthCal_GetRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_GETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_GetToday(hwnd,systime) SNDMSG(hwnd,MCM_GETTODAY,0,(LPARAM)systime)
+#define MonthCal_GetUnicodeFormat(hwnd) SNDMSG(hwnd,MCM_GETUNICODEFORMAT,0,0)
+#define MonthCal_HitTest(hwnd,pmchittest) SNDMSG(hwnd,MCM_HITTEST,0,(LPARAM)pmchittest)
+#define MonthCal_SetColor(hwnd,icolor,clr) SNDMSG(hwnd,MCM_SETCOLOR,(WPARAM)icolor,(LPARAM)clr)
+#define MonthCal_SetCurSel(hwnd,lpsystime) SNDMSG(hwnd,MCM_SETCURSEL,0,(LPARAM)lpsystime)
+#define MonthCal_SetDayState(hwnd,imonths,lpdatestatearray) SNDMSG(hwnd,MCM_SETDAYSTATE,(WPARAM)imonths,(LPARAM)lpdatestatearray)
+#define MonthCal_SetFirstDayOfWeek(hwnd,iday) SNDMSG(hwnd,MCM_SETFIRSTDAYOFWEEK,0,(LPARAM)iday)
+#define MonthCal_SetMaxSelCount(hwnd,imax) SNDMSG(hwnd,MCM_SETMAXSELCOUNT,(WPARAM)imax,0)
+#define MonthCal_SetMonthDelta(hwnd,idelta) SNDMSG(hwnd,MCM_SETMONTHDELTA,(WPARAM)idelta,0)
+#define MonthCal_SetSelRange(hwnd,systimearray) SNDMSG(hwnd,MCM_SETSELRANGE,0,(LPARAM)systimearray)
+#define MonthCal_SetToday(hwnd,systime) SNDMSG(hwnd,MCM_SETTODAY,0,(LPARAM)systime)
+#define MonthCal_SetUnicodeFormat(hwnd,unicode) SNDMSG(hwnd,MCM_SETUNICODEFORMAT,(WPARAM)unicode,0)
+#define MonthCal_SetRange(w,f,st) (BOOL)SNDMSG((w),MCM_SETRANGE,(WPARAM)(f),(LPARAM)(st))
+BOOL WINAPI ShowHideMenuCtl(HWND,UINT,PINT);
+#define TabCtrl_GetItem(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_SetItem(w,i,p) (BOOL)SNDMSG((w),TCM_SETITEM,i,(LPARAM)(TC_ITEM*)(p))
+#define TabCtrl_InsertItem(w,i,p) (int)SNDMSG((w),TCM_INSERTITEM,i,(LPARAM)(const TC_ITEM*)(p))
+#define TabCtrl_DeleteItem(w,i) (BOOL)SNDMSG((w),TCM_DELETEITEM,i,0)
+#define TabCtrl_DeleteAllItems(w) (BOOL)SNDMSG((w),TCM_DELETEALLITEMS,0,0)
+#define TabCtrl_GetItemRect(w,i,p) (BOOL)SNDMSG((w),TCM_GETITEMRECT,i,(LPARAM)(LPRECT)(p))
+#define TabCtrl_GetCurSel(w) (int)SNDMSG((w),TCM_GETCURSEL,0,0)
+#define TabCtrl_SetCurSel(w,i) (int)SNDMSG((w),TCM_SETCURSEL,i,0)
+#define TabCtrl_HitTest(w,p) (int)SNDMSG((w),TCM_HITTEST,0,(LPARAM)(TC_HITTESTINFO*)(p))
+#define TabCtrl_SetItemExtra(w,c) (BOOL)SNDMSG((w),TCM_SETITEMEXTRA,c,0)
+#define TabCtrl_AdjustRect(w,b,p) (int)SNDMSG((w),TCM_ADJUSTRECT,b,(LPARAM)(LPRECT)p)
+#define TabCtrl_SetItemSize(w,x,y) (DWORD)SNDMSG((w),TCM_SETITEMSIZE,0,MAKELPARAM(x,y))
+#define TabCtrl_RemoveImage(w,i) (void)SNDMSG((w),TCM_REMOVEIMAGE,i,0)
+#define TabCtrl_SetPadding(w,x,y) (void)SNDMSG((w),TCM_SETPADDING,0,MAKELPARAM(x,y))
+#define TabCtrl_GetRowCount(w) (int)SNDMSG((w),TCM_GETROWCOUNT,0,0)
+#define TabCtrl_GetToolTips(w) (HWND)SNDMSG((w),TCM_GETTOOLTIPS,0,0)
+#define TabCtrl_SetToolTips(w,t) (void)SNDMSG((w),TCM_SETTOOLTIPS,(WPARAM)t,0)
+#define TabCtrl_GetCurFocus(w) (int)SNDMSG((w),TCM_GETCURFOCUS,0,0)
+#define TabCtrl_SetCurFocus(w,i) (void)SNDMSG((w),TCM_SETCURFOCUS,i,0)
+#define TabCtrl_GetImageList(w) (HIMAGELIST)SNDMSG((w),TCM_GETIMAGELIST,0,0)
+#define TabCtrl_SetImageList(w,h) (HIMAGELIST)SNDMSG((w),TCM_SETIMAGELIST,0,(LPARAM)(UINT)(h))
+#define TabCtrl_GetItemCount(w) (int)SNDMSG((w),TCM_GETITEMCOUNT,0,0)
+BOOL WINAPI _TrackMouseEvent(LPTRACKMOUSEEVENT);
+#define TreeView_InsertItem(w,i) (HTREEITEM)SNDMSG((w),TVM_INSERTITEM,0,(LPARAM)(LPTV_INSERTSTRUCT)(i))
+#define TreeView_DeleteItem(w,i) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_DeleteAllItems(w) (BOOL)SNDMSG((w),TVM_DELETEITEM,0,(LPARAM)TVI_ROOT)
+#define TreeView_Expand(w,i,c) (BOOL)SNDMSG((w),TVM_EXPAND,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetItemRect(w,i,p,c) (*(HTREEITEM*)p=(i),(BOOL)SNDMSG((w),TVM_GETITEMRECT,c,(LPARAM)(LPRECT)(p)))
+#define TreeView_GetCount(w) (UINT)SNDMSG((w),TVM_GETCOUNT,0,0)
+#define TreeView_GetIndent(w) (UINT)SNDMSG((w),TVM_GETINDENT,0,0)
+#define TreeView_SetIndent(w,i) (BOOL)SNDMSG((w),TVM_SETINDENT,i,0)
+#define TreeView_GetImageList(w,i) (HIMAGELIST)SNDMSG((w),TVM_GETIMAGELIST,i,0)
+#define TreeView_SetImageList(w,h,i) (HIMAGELIST)SNDMSG((w),TVM_SETIMAGELIST,i,(LPARAM)(HIMAGELIST)(h))
+#define TreeView_GetNextItem(w,i,c) (HTREEITEM)SNDMSG((w),TVM_GETNEXTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetChild(w,i)	TreeView_GetNextItem(w,i,TVGN_CHILD)
+#define TreeView_GetNextSibling(w,i)	TreeView_GetNextItem(w,i,TVGN_NEXT)
+#define TreeView_GetPrevSibling(w,i)	TreeView_GetNextItem(w,i,TVGN_PREVIOUS)
+#define TreeView_GetParent(w,i)	TreeView_GetNextItem(w,i,TVGN_PARENT)
+#define TreeView_GetFirstVisible(w)	TreeView_GetNextItem(w,NULL,TVGN_FIRSTVISIBLE)
+#define TreeView_GetNextVisible(w,i)	TreeView_GetNextItem(w,i,TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(w,i)	TreeView_GetNextItem(w,i,TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(w)	TreeView_GetNextItem(w,NULL,TVGN_CARET)
+#define TreeView_GetDropHilight(w)	TreeView_GetNextItem(w,NULL,TVGN_DROPHILITE)
+#define TreeView_GetRoot(w)	TreeView_GetNextItem(w,NULL,TVGN_ROOT)
+#define TreeView_Select(w,i,c) (BOOL)SNDMSG((w),TVM_SELECTITEM,c,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SelectItem(w,i)	TreeView_Select(w,i,TVGN_CARET)
+#define TreeView_SelectDropTarget(w,i)	TreeView_Select(w,i,TVGN_DROPHILITE)
+#define TreeView_SelectSetFirstVisible(w,i)	TreeView_Select(w,i,TVGN_FIRSTVISIBLE)
+#define TreeView_GetItem(w,i) (BOOL)SNDMSG((w),TVM_GETITEM,0,(LPARAM)(TV_ITEM*)(i))
+#define TreeView_SetItem(w,i) (BOOL)SNDMSG((w),TVM_SETITEM,0,(LPARAM)(const TV_ITEM*)(i))
+#define TreeView_EditLabel(w,i) (HWND)SNDMSG((w),TVM_EDITLABEL,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_GetEditControl(w) (HWND)SNDMSG((w),TVM_GETEDITCONTROL,0,0)
+#define TreeView_GetVisibleCount(w) (UINT)SNDMSG((w),TVM_GETVISIBLECOUNT,0,0)
+#define TreeView_HitTest(w,p) (HTREEITEM)SNDMSG((w),TVM_HITTEST,0,(LPARAM)(LPTV_HITTESTINFO)(p))
+#define TreeView_CreateDragImage(w,i) (HIMAGELIST)SNDMSG((w),TVM_CREATEDRAGIMAGE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildren(w,i,r) (BOOL)SNDMSG((w),TVM_SORTCHILDREN,r,(LPARAM)(HTREEITEM)(i))
+#define TreeView_EnsureVisible(w,i) (BOOL)SNDMSG((w),TVM_ENSUREVISIBLE,0,(LPARAM)(HTREEITEM)(i))
+#define TreeView_SortChildrenCB(w,s,r) (BOOL)SNDMSG((w),TVM_SORTCHILDRENCB,r,(LPARAM)(LPTVSORTCB)(s))
+#define TreeView_EndEditLabelNow(w,f) (BOOL)SNDMSG((w),TVM_ENDEDITLABELNOW,f,0)
+#define TreeView_GetISearchString(w,s) (BOOL)SNDMSG((w),TVM_GETISEARCHSTRING,0,(LPARAM)s)
+#if (_WIN32_IE >= 0x0300)
+#define ListView_ApproximateViewRect(w,iw,ih,i) (DWORD)SNDMSG((w),LVM_APPROXIMATEVIEWRECT,(i),MAKELPARAM((iw),(ih)))
+#define ListView_SetExtendedListViewStyle(w,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,0,(s))
+#define ListView_GetExtendedListViewStyle(w) (DWORD)SNDMSG((w),LVM_GETEXTENDEDLISTVIEWSTYLE,0,0)
+#define ListView_SetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_SETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a))
+#define ListView_GetColumnOrderArray(w,i,a) (BOOL)SNDMSG((w),LVM_GETCOLUMNORDERARRAY,(WPARAM)(i),(LPARAM)(LPINT)(a))
+#define ListView_GetHeader(w) (HWND)SNDMSG((w),LVM_GETHEADER,0,0)
+#define ListView_GetHotCursor(w) (HCURSOR)SNDMSG((w),LVM_GETHOTCURSOR,0,0)
+#define ListView_GetHotItem(w) (INT)SNDMSG((w),LVM_GETHOTITEM,0,0)
+#define ListView_GetSubItemRect(w,i,is,c,p) (BOOL)SNDMSG((w),LVM_GETSUBITEMRECT,(WPARAM)(int)(i),((p)?(((LPRECT)(p))->left=(c),(((LPRECT)(p))->top=(is)),(LPARAM)(LPRECT)(p)):0))
+#define ListView_SetHotCursor(w,c) (HCURSOR)SNDMSG((w),LVM_SETHOTCURSOR,0,(LPARAM)(c))
+#define ListView_SetHotItem(w,i) (int)SNDMSG((w),LVM_SETHOTITEM,(WPARAM)(i),0)
+#define ListView_SetIconSpacing(w,x,y) (DWORD)SNDMSG((w),LVM_SETICONSPACING,0,MAKELONG(x,y))
+#define ListView_SubItemHitTest(w,p) (INT)SNDMSG((w),LVM_SUBITEMHITTEST,0,(LPARAM)(LPLVHITTESTINFO)(p))
+#define ListView_SetItemCountEx(w,i,f) (void)SNDMSG((w),LVM_SETITEMCOUNT,(WPARAM)(i),(LPARAM)(f))
+WINBOOL WINAPI ImageList_SetImageCount(HIMAGELIST,UINT);
+WINBOOL WINAPI ImageList_Copy(HIMAGELIST,int,HIMAGELIST,int,UINT);
+WINBOOL WINAPI ImageList_DrawIndirect(IMAGELISTDRAWPARAMS*);
+#define TabCtrl_SetMinTabWidth(hwnd,x) SNDMSG((hwnd),TCM_SETMINTABWIDTH,0,x)
+#define TabCtrl_DeselectAll(hwnd,fExcludeFocus) SNDMSG((hwnd),TCM_DESELECTALL,fExcludeFocus,0)
+#define TreeView_GetToolTips(w) (HWND)SNDMSG((w),TVM_GETTOOLTIPS,0,0)
+#define TreeView_SetToolTips(w,wt) (HWND)SNDMSG((w),TVM_SETTOOLTIPS,(WPARAM)(wt),0)
+#endif
+#if (_WIN32_IE >= 0x0400)
+#define ListView_GetBkImage(h,plvbki) (BOOL)SNDMSG((h),LVM_GETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_SetBkImage(h,plvbki) (BOOL)SNDMSG((h),LVM_SETBKIMAGE,0,(LPARAM)(plvbki))
+#define ListView_SetExtendedListViewStyleEx(w,m,s) (DWORD)SNDMSG((w),LVM_SETEXTENDEDLISTVIEWSTYLE,(m),(s))
+#define ListView_SetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_SETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r))
+#define ListView_GetWorkAreas(w,n,r) (BOOL)SNDMSG((w),LVM_GETWORKAREAS,(WPARAM)(n),(LPARAM)(RECT *)(r))
+#define ListView_GetNumberOfWorkAreas(w,n) (BOOL)SNDMSG((w),LVM_GETNUMBEROFWORKAREAS,0,(LPARAM)(UINT *)(n))
+#define ListView_SetHoverTime(w,t) (DWORD)SNDMSG((w),LVM_SETHOVERTIME,0,(LPARAM)(t))
+#define ListView_GetHoverTime(w) (DWORD)SNDMSG((w),LVM_GETHOVERTIME,0,0)
+#define ListView_GetSelectionMark(w) (INT)SNDMSG((w),LVM_GETSELECTIONMARK,0,0)
+#define ListView_SetSelectionMark(w,i) (INT)SNDMSG((w),LVM_SETSELECTIONMARK,0,(LPARAM)(i))
+#define ListView_SetToolTips(w,n) (HWND)SNDMSG((w),LVM_SETTOOLTIPS,(WPARAM)(n),0)
+#define ListView_GetToolTips(w) (HWND)SNDMSG((w),LVM_GETTOOLTIPS,0,0)
+#define ListView_SetUnicodeFormat(w,f) (BOOL)SNDMSG((w),LVM_SETUNICODEFORMAT,(WPARAM)(f),0)
+#define ListView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),LVM_GETUNICODEFORMAT,0,0)
+#define TabCtrl_HighlightItem(w,i,fHighlight) SNDMSG((w),TCM_HIGHLIGHTITEM,(WPARAM)i,(LPARAM)MAKELONG(fHighlight,0))
+#define TabCtrl_SetExtendedStyle(w,dw) SNDMSG((w),TCM_SETEXTENDEDSTYLE,0,dw)
+#define TabCtrl_GetExtendedStyle(w) SNDMSG((w),TCM_GETEXTENDEDSTYLE,0,0)
+#define TabCtrl_SetUnicodeFormat(w,u) SNDMSG((w),TCM_SETUNICODEFORMAT,(WPARAM)(u),0)
+#define TabCtrl_GetUnicodeFormat(w) SNDMSG((w),TCM_GETUNICODEFORMAT,0,0)
+#define TreeView_GetBkColor(w) (COLORREF)SNDMSG((w),TVM_GETBKCOLOR,0,0)
+#define TreeView_GetInsertMarkColor(w) (COLORREF)SNDMSG((w),TVM_GETINSERTMARKCOLOR,0,0)
+#define TreeView_GetItemHeight(w) (int)SNDMSG((w),TVM_GETITEMHEIGHT,0,0)
+#define TreeView_GetScrollTime(w) (UINT)SNDMSG((w),TVM_GETSCROLLTIME,0,0)
+#define TreeView_GetTextColor(w) (COLORREF)SNDMSG((w),TVM_GETTEXTCOLOR,0,0)
+#define TreeView_SetBkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETBKCOLOR,0,(LPARAM)(c))
+#define TreeView_SetInsertMarkColor(w,c) (COLORREF)SNDMSG((w),TVM_SETINSERTMARKCOLOR,0,(LPARAM)(c))
+#define TreeView_SetItemHeight(w,h) (int)SNDMSG((w),TVM_SETITEMHEIGHT,(WPARAM)(h),0)
+#define TreeView_SetScrollTime(w,t) (UINT)SNDMSG((w),TVM_SETSCROLLTIME,(WPARAM)(UINT)(t),0)
+#define TreeView_SetTextColor(w,c) (COLORREF)SNDMSG((w),TVM_SETTEXTCOLOR,0,(LPARAM)(c))
+#define TreeView_SetInsertMark(w,i,a) (BOOL)SNDMSG((w),TVM_SETINSERTMARK,(WPARAM)(a),(LPARAM)(i))
+#define TreeView_SetUnicodeFormat(w,u) (BOOL)SNDMSG((w),TVM_SETUNICODEFORMAT,(WPARAM)(u),0)
+#define TreeView_GetUnicodeFormat(w) (BOOL)SNDMSG((w),TVM_GETUNICODEFORMAT,0,0)
+#define TreeView_GetLastVisible(w) TreeView_GetNextItem(w,NULL,TVGN_LASTVISIBLE)
+#endif
+#if (_WIN32_IE >= 0x0500)
+#define TreeView_GetItemState(w,i,m) (UINT)SNDMSG((w),TVM_GETITEMSTATE,(WPARAM)(i),(LPARAM)(m))
+#define TreeView_SetItemState(w,i,d,m) \
+{ \
+	TVITEM _tvi;\
+	_tvi.mask=TVIF_STATE;\
+	_tvi.hItem=i; \
+	_tvi.stateMask=m;\
+	_tvi.state=d;\
+	SNDMSG((w),TVM_SETITEM,0,(LPARAM)(TVITEM*)&_tvi);\
+}
+#endif
+
+#ifdef UNICODE
+typedef HDITEMW HDITEM;
+typedef TOOLINFOW TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOW TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO;
+typedef TOOLTIPTEXTW TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef NMTTDISPINFOW NMTTDISPINFO, *LPNMTTDISPINFO;
+typedef TV_ITEMW TV_ITEM,*LPTV_ITEM;
+typedef TVITEMW TVITEM,*LPTVITEM;
+#if (_WIN32_IE >= 0x0400)
+typedef TVITEMEXW TVITEMEX,*LPTVITEMEX;
+#endif
+typedef TV_INSERTSTRUCTW TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef TVINSERTSTRUCTW TVINSERTSTRUCT,*LPTVINSERTSTRUCT;
+typedef NM_TREEVIEWW NM_TREEVIEW,*LPNM_TREEVIEW;
+typedef NMTREEVIEWW NMTREEVIEW,*LPNMTREEVIEW;
+typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO;
+#define ACM_OPEN ACM_OPENW
+#define COMBOBOXEXITEM	COMBOBOXEXITEMW
+#define PCOMBOBOXEXITEM	PCOMBOBOXEXITEMW
+#define PCCOMBOBOXEXITEM	PCCOMBOBOXEXITEMW
+#define CBEM_INSERTITEM	CBEM_INSERTITEMW
+#define CBEM_SETITEM	CBEM_SETITEMW
+#define CBEM_GETITEM	CBEM_GETITEMW
+#define CBEN_ENDEDIT	CBEN_ENDEDITW
+#define NMCBEENDEDIT	NMCBEENDEDITW
+#define LPNMCBEENDEDIT	LPNMCBEENDEDITW
+#define PNMCBEENDEDIT	PNMCBEENDEDITW
+#if _WIN32_IE >= 0x0400
+#define NMCOMBOBOXEX	NMCOMBOBOXEXW
+#define PNMCOMBOBOXEX	PNMCOMBOBOXEXW
+#define CBEN_GETDISPINFO	CBEN_GETDISPINFOW
+#define CBEN_DRAGBEGIN	CBEN_DRAGBEGINW
+#define NMCBEDRAGBEGIN	NMCBEDRAGBEGINW
+#define LPNMCBEDRAGBEGIN	LPNMCBEDRAGBEGINW
+#define PNMCBEDRAGBEGIN PNMCBEDRAGBEGINW
+#endif /* _WIN32_IE >= 0x0400 */
+#define SB_GETTEXT	SB_GETTEXTW
+#define SB_SETTEXT	SB_SETTEXTW
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHW
+#define HDM_INSERTITEM HDM_INSERTITEMW
+#define HDM_GETITEM HDM_GETITEMW
+#define HDM_SETITEM HDM_SETITEMW
+#define HDN_ITEMCHANGING	HDN_ITEMCHANGINGW
+#define HDN_ITEMCHANGED	HDN_ITEMCHANGEDW
+#define HDN_ITEMCLICK	HDN_ITEMCLICKW
+#define HDN_ITEMDBLCLICK	HDN_ITEMDBLCLICKW
+#define HDN_DIVIDERDBLCLICK	HDN_DIVIDERDBLCLICKW
+#define HDN_BEGINTRACK	HDN_BEGINTRACKW
+#define HDN_ENDTRACK	HDN_ENDTRACKW
+#define HDN_TRACK	HDN_TRACKW
+#if (_WIN32_IE >= 0x0300)
+#define HDN_GETDISPINFO HDN_GETDISPINFOW
+#endif
+#define HD_NOTIFY HD_NOTIFYW
+#define TBSAVEPARAMS TBSAVEPARAMSW
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTW
+#define TB_SAVERESTORE TB_SAVERESTOREW
+#define TB_ADDSTRING TB_ADDSTRINGW
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOW
+#if _WIN32_IE >= 0x400
+#define TB_GETBUTTONINFO TB_GETBUTTONINFOW
+#define TB_SETBUTTONINFO TB_SETBUTTONINFOW
+#define TB_INSERTBUTTON TB_INSERTBUTTONW
+#define TB_ADDBUTTONS TB_ADDBUTTONSW
+#define TB_MAPACCELERATOR TB_MAPACCELERATORW
+#define TB_GETSTRING TB_GETSTRINGW
+#define TBBUTTONINFO TBBUTTONINFOW
+#define LPTBBUTTONINFO LPTBBUTTONINFOW
+#define TBN_GETDISPINFO TBN_GETDISPINFOW
+#define NMTBDISPINFO NMTBDISPINFOW
+#define LPNMTBDISPINFO LPNMTBDISPINFOW
+#define NMTBGETINFOTIP NMTBGETINFOTIPW
+#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPW
+#endif
+#define TBNOTIFY TBNOTIFYW
+#define LPTBNOTIFY LPTBNOTIFYW
+#define NMTOOLBAR NMTOOLBARW
+#define LPNMTOOLBAR LPNMTOOLBARW
+#define TTM_ADDTOOL	TTM_ADDTOOLW
+#define TTM_DELTOOL	TTM_DELTOOLW
+#define TTM_NEWTOOLRECT	TTM_NEWTOOLRECTW
+#define TTM_GETTOOLINFO	TTM_GETTOOLINFOW
+#define TTM_SETTOOLINFO	TTM_SETTOOLINFOW
+#define TTM_HITTEST	TTM_HITTESTW
+#define TTM_GETTEXT	TTM_GETTEXTW
+#define TTM_UPDATETIPTEXT	TTM_UPDATETIPTEXTW
+#define TTM_ENUMTOOLS	TTM_ENUMTOOLSW
+#define TTM_GETCURRENTTOOL	TTM_GETCURRENTTOOLW
+#define TTN_NEEDTEXT TTN_NEEDTEXTW
+#define TTN_GETDISPINFO TTN_GETDISPINFOW
+#define SB_GETTEXT	SB_GETTEXTW
+#define SB_SETTEXT	SB_SETTEXTW
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHW
+#define LV_ITEM LV_ITEMW
+#define LVITEM LVITEMW
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKW
+#if _WIN32_IE >= 0x0400
+#define LVBKIMAGE	LVBKIMAGEW
+#define LPLVBKIMAGE	LPLVBKIMAGEW
+#define LVM_SETBKIMAGE	LVM_SETBKIMAGEW
+#define LVM_GETBKIMAGE	LVM_GETBKIMAGEW
+#endif /* _WIN32_IE >= 0x400 */
+#define LVM_GETITEM	LVM_GETITEMW
+#define LVM_SETITEM LVM_SETITEMW
+#define LVM_INSERTITEM LVM_INSERTITEMW
+#define LV_FINDINFO LV_FINDINFOW
+#define LVFINDINFO LVFINDINFOW
+#define LPFINDINFO LPFINDINFOW
+#define NMLVFINDITEM NMLVFINDITEMW
+#define PNMLVFINDITEM PNMLVFINDITEMW
+#define LPNMLVFINDITEM LPNMLVFINDITEMW
+#define LVM_FINDITEM LVM_FINDITEMW
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHW
+#define LVM_EDITLABEL LVM_EDITLABELW
+#define LV_COLUMN LV_COLUMNW
+#define LVCOLUMN LVCOLUMNW
+#define LVM_GETCOLUMN LVM_GETCOLUMNW
+#define LVM_SETCOLUMN LVM_SETCOLUMNW
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNW
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTW
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTW
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGW
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITW
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITW
+#define LVN_GETDISPINFO LVN_GETDISPINFOW
+#define LVN_SETDISPINFO LVN_SETDISPINFOW
+#define LVN_GETINFOTIP LVN_GETINFOTIPW
+#define NMLVGETINFOTIP NMLVGETINFOTIPW
+#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPW
+#define LV_DISPINFO LV_DISPINFOW
+#define NMLVDISPINFO NMLVDISPINFOW
+#define LPNMLVDISPINFO LPNMLVDISPINFOW
+#define TVM_INSERTITEM TVM_INSERTITEMW
+#define TVM_GETITEM TVM_GETITEMW
+#define TVM_SETITEM TVM_SETITEMW
+#define TVM_EDITLABEL TVM_EDITLABELW
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGW
+#define TV_DISPINFO NMTVDISPINFOW
+#define NMTVDISPINFO NMTVDISPINFOW
+#define LPNMTVDISPINFO LPNMTVDISPINFOW
+#if (_WIN32_IE >= 0x0400)
+#define NMTVGETINFOTIP NMTVGETINFOTIPW
+#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPW
+#define TVN_GETINFOTIP TVN_GETINFOTIPW
+#endif
+#define TVN_SELCHANGING TVN_SELCHANGINGW
+#define TVN_SELCHANGED TVN_SELCHANGEDW
+#define TVN_GETDISPINFO TVN_GETDISPINFOW
+#define TVN_SETDISPINFO TVN_SETDISPINFOW
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGW
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDW
+#define TVN_BEGINDRAG TVN_BEGINDRAGW
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGW
+#define TVN_DELETEITEM TVN_DELETEITEMW
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITW
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITW
+#define TC_ITEMHEADER TC_ITEMHEADERW
+#define TC_ITEM TC_ITEMW
+#define TCITEM TCITEMW
+#define LPTCITEM LPTCITEMW
+#define TCM_GETITEM TCM_GETITEMW
+#define TCM_SETITEM TCM_SETITEMW
+#define TCM_INSERTITEM TCM_INSERTITEMW
+#define CreateStatusWindow CreateStatusWindowW
+#define DrawStatusText DrawStatusTextW
+#define ImageList_LoadImage ImageList_LoadImageW
+#define DTM_SETFORMAT DTM_SETFORMATW
+#define DTN_USERSTRING DTN_USERSTRINGW
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNW
+#define DTN_FORMAT DTN_FORMATW
+#define DTN_FORMATQUERY DTN_FORMATQUERYW
+typedef REBARBANDINFOW REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOW
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOW_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDW
+#define RB_SETBANDINFO RB_SETBANDINFOW
+#else /* UNICODE */
+typedef HDITEMA HDITEM;
+typedef TOOLINFOA TOOLINFO,*PTOOLINFO,*LPTOOLINFO;
+typedef TTHITTESTINFOA TTHITTESTINFO,*LPHITTESTINFO,*LPTTHITTESTINFO;
+typedef TOOLTIPTEXTA TOOLTIPTEXT,*LPTOOLTIPTEXT;
+typedef NMTTDISPINFOA NMTTDISPINFO, *LPNMTTDISPINFO;
+typedef TV_ITEMA TV_ITEM,*LPTV_ITEM;
+typedef TVITEMA TVITEM,*LPTVITEM;
+#if (_WIN32_IE >= 0x0400)
+typedef TVITEMEXA TVITEMEX,*LPTVITEMEX;
+#endif
+typedef TV_INSERTSTRUCTA TV_INSERTSTRUCT,*LPTV_INSERTSTRUCT;
+typedef TVINSERTSTRUCTA TVINSERTSTRUCT,*LPTVINSERTSTRUCT;
+typedef NM_TREEVIEWA NM_TREEVIEW,*LPNM_TREEVIEW;
+typedef NMTREEVIEWA NMTREEVIEW,*LPNMTREEVIEW;
+typedef NMHDDISPINFOW NMHDDISPINFO, *LPNMHDDISPINFO;
+#define ACM_OPEN ACM_OPENA
+#define COMBOBOXEXITEM	COMBOBOXEXITEMA
+#define PCOMBOBOXEXITEM	PCOMBOBOXEXITEMA
+#define PCCOMBOBOXEXITEM	PCCOMBOBOXEXITEMA
+#define CBEM_INSERTITEM	CBEM_INSERTITEMA
+#define CBEM_SETITEM	CBEM_SETITEMA
+#define CBEM_GETITEM	CBEM_GETITEMA
+#define CBEN_ENDEDIT	CBEN_ENDEDITA
+#define NMCBEENDEDIT	NMCBEENDEDITA
+#define LPNMCBEENDEDIT	LPNMCBEENDEDITA
+#define PNMCBEENDEDIT	PNMCBEENDEDITA
+#if _WIN32_IE >= 0x0400
+#define TB_GETBUTTONINFO TB_GETBUTTONINFOA
+#define TB_SETBUTTONINFO TB_SETBUTTONINFOA
+#define TB_INSERTBUTTON TB_INSERTBUTTONA
+#define TB_ADDBUTTONS TB_ADDBUTTONSA
+#define TB_MAPACCELERATOR TB_MAPACCELERATORA
+#define TB_GETSTRING TB_GETSTRINGA
+#define NMCOMBOBOXEX	NMCOMBOBOXEXA
+#define PNMCOMBOBOXEX	PNMCOMBOBOXEXA
+#define CBEN_DRAGBEGIN	CBEN_DRAGBEGINA
+#define CBEN_GETDISPINFO	CBEN_GETDISPINFOA
+#define NMCBEDRAGBEGIN	NMCBEDRAGBEGINA
+#define LPNMCBEDRAGBEGIN	LPNMCBEDRAGBEGINA
+#define PNMCBEDRAGBEGIN	PNMCBEDRAGBEGINA
+#define TBN_GETDISPINFO TBN_GETDISPINFOA
+#define NMTBDISPINFO NMTBDISPINFOA
+#define LPNMTBDISPINFO LPNMTBDISPINFOA
+#define NMTBGETINFOTIP NMTBGETINFOTIPA
+#define LPNMTBGETINFOTIP LPNMTBGETINFOTIPA
+#endif /* _WIN32_IE >= 0x0400 */
+#define SB_GETTEXT	SB_GETTEXTA
+#define SB_SETTEXT	SB_SETTEXTA
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHA
+#define HDM_INSERTITEM HDM_INSERTITEMA
+#define HDM_GETITEM HDM_GETITEMA
+#define HDM_SETITEM HDM_SETITEMA
+#define HDN_ITEMCHANGING	HDN_ITEMCHANGINGA
+#define HDN_ITEMCHANGED	HDN_ITEMCHANGEDA
+#define HDN_ITEMCLICK	HDN_ITEMCLICKA
+#define HDN_ITEMDBLCLICK	HDN_ITEMDBLCLICKA
+#define HDN_DIVIDERDBLCLICK	HDN_DIVIDERDBLCLICKA
+#define HDN_BEGINTRACK	HDN_BEGINTRACKA
+#define HDN_ENDTRACK	HDN_ENDTRACKA
+#define HDN_TRACK	HDN_TRACKA
+#if (_WIN32_IE >= 0x0300)
+#define HDN_GETDISPINFO HDN_GETDISPINFOA
+#endif
+#define HD_NOTIFY HD_NOTIFYA
+#define TBSAVEPARAMS TBSAVEPARAMSA
+#define TB_GETBUTTONTEXT TB_GETBUTTONTEXTA
+#define TB_SAVERESTORE TB_SAVERESTOREA
+#define TB_ADDSTRING TB_ADDSTRINGA
+#define TBN_GETBUTTONINFO TBN_GETBUTTONINFOA
+#if _WIN32_IE >= 0x400
+#define TBBUTTONINFO TBBUTTONINFOA
+#define LPTBBUTTONINFO LPTBBUTTONINFOA
+#endif
+#define TBNOTIFY TBNOTIFYA
+#define LPTBNOTIFY LPTBNOTIFYA
+#define NMTOOLBAR NMTOOLBARA
+#define LPNMTOOLBAR LPNMTOOLBARA
+#define TTM_ADDTOOL	TTM_ADDTOOLA
+#define TTM_DELTOOL	TTM_DELTOOLA
+#define TTM_NEWTOOLRECT	TTM_NEWTOOLRECTA
+#define TTM_GETTOOLINFO	TTM_GETTOOLINFOA
+#define TTM_SETTOOLINFO	TTM_SETTOOLINFOA
+#define TTM_HITTEST	TTM_HITTESTA
+#define TTM_GETTEXT	TTM_GETTEXTA
+#define TTM_UPDATETIPTEXT	TTM_UPDATETIPTEXTA
+#define TTM_ENUMTOOLS	TTM_ENUMTOOLSA
+#define TTM_GETCURRENTTOOL TTM_GETCURRENTTOOLA
+#define TTN_NEEDTEXT TTN_NEEDTEXTA
+#define TTN_GETDISPINFO TTN_GETDISPINFOA
+#define SB_GETTEXT	SB_GETTEXTA
+#define SB_SETTEXT	SB_SETTEXTA
+#define SB_GETTEXTLENGTH	SB_GETTEXTLENGTHA
+#define LV_ITEM LV_ITEMA
+#define LVITEM LVITEMA
+#define LPSTR_TEXTCALLBACK LPSTR_TEXTCALLBACKA
+#if _WIN32_IE >= 0x0400
+#define LVBKIMAGE	LVBKIMAGEA
+#define LPLVBKIMAGE	LPLVBKIMAGEA
+#define LVM_SETBKIMAGE	LVM_SETBKIMAGEA
+#define LVM_GETBKIMAGE	LVM_GETBKIMAGEA
+#endif /* _WIN32_IE >= 0x0400 */
+#define LVM_GETITEM	LVM_GETITEMA
+#define LVM_SETITEM LVM_SETITEMA
+#define LVM_INSERTITEM LVM_INSERTITEMA
+#define LV_FINDINFO LV_FINDINFOA
+#define LVFINDINFO LVFINDINFOA
+#define LPFINDINFO LPFINDINFOA
+#define NMLVFINDITEM NMLVFINDITEMA
+#define PNMLVFINDITEM PNMLVFINDITEMA
+#define LPNMLVFINDITEM LPNMLVFINDITEMA
+#define LVM_FINDITEM LVM_FINDITEMA
+#define LVM_GETSTRINGWIDTH LVM_GETSTRINGWIDTHA
+#define LVM_EDITLABEL LVM_EDITLABELA
+#define LV_COLUMN LV_COLUMNA
+#define LVCOLUMN LVCOLUMNA
+#define LVM_GETCOLUMN LVM_GETCOLUMNA
+#define LVM_SETCOLUMN LVM_SETCOLUMNA
+#define LVM_INSERTCOLUMN LVM_INSERTCOLUMNA
+#define LVM_GETITEMTEXT LVM_GETITEMTEXTA
+#define LVM_SETITEMTEXT LVM_SETITEMTEXTA
+#define LVM_GETISEARCHSTRING LVM_GETISEARCHSTRINGA
+#define LVN_BEGINLABELEDIT LVN_BEGINLABELEDITA
+#define LVN_ENDLABELEDIT LVN_ENDLABELEDITA
+#define LVN_GETDISPINFO LVN_GETDISPINFOA
+#define LVN_SETDISPINFO LVN_SETDISPINFOA
+#define LVN_GETINFOTIP LVN_GETINFOTIPA
+#define NMLVGETINFOTIP NMLVGETINFOTIPA
+#define LPNMLVGETINFOTIP LPNMLVGETINFOTIPA
+#define LV_DISPINFO LV_DISPINFOA
+#define NMLVDISPINFO NMLVDISPINFOA
+#define LPNMLVDISPINFO LPNMLVDISPINFOA
+#define TVM_INSERTITEM TVM_INSERTITEMA
+#define TVM_GETITEM TVM_GETITEMA
+#define TVM_SETITEM TVM_SETITEMA
+#define TVM_EDITLABEL TVM_EDITLABELA
+#define TVM_GETISEARCHSTRING TVM_GETISEARCHSTRINGA
+#define TV_DISPINFO NMTVDISPINFOA
+#define NMTVDISPINFO NMTVDISPINFOA
+#define LPNMTVDISPINFO LPNMTVDISPINFOA
+#if (_WIN32_IE >= 0x0400)
+#define NMTVGETINFOTIP NMTVGETINFOTIPA
+#define LPNMTVGETINFOTIP LPNMTVGETINFOTIPA
+#define TVN_GETINFOTIP TVN_GETINFOTIPA
+#endif
+#define TVN_SELCHANGING TVN_SELCHANGINGA
+#define TVN_SELCHANGED TVN_SELCHANGEDA
+#define TVN_GETDISPINFO TVN_GETDISPINFOA
+#define TVN_SETDISPINFO TVN_SETDISPINFOA
+#define TVN_ITEMEXPANDING TVN_ITEMEXPANDINGA
+#define TVN_ITEMEXPANDED TVN_ITEMEXPANDEDA
+#define TVN_BEGINDRAG TVN_BEGINDRAGA
+#define TVN_BEGINRDRAG TVN_BEGINRDRAGA
+#define TVN_DELETEITEM TVN_DELETEITEMA
+#define TVN_BEGINLABELEDIT TVN_BEGINLABELEDITA
+#define TVN_ENDLABELEDIT TVN_ENDLABELEDITA
+#define TC_ITEMHEADER TC_ITEMHEADERA
+#define TC_ITEM TC_ITEMA
+#define TCITEM TCITEMA
+#define LPTCITEM LPTCITEMA
+#define TCM_GETITEM TCM_GETITEMA
+#define TCM_SETITEM TCM_SETITEMA
+#define TCM_INSERTITEM TCM_INSERTITEMA
+#define CreateStatusWindow CreateStatusWindowA
+#define DrawStatusText DrawStatusTextA
+#define ImageList_LoadImage ImageList_LoadImageA
+#define DTM_SETFORMAT	  DTM_SETFORMATA
+#define DTN_USERSTRING DTN_USERSTRINGA
+#define DTN_WMKEYDOWN DTN_WMKEYDOWNA
+#define DTN_FORMAT DTN_FORMATA
+#define DTN_FORMATQUERY DTN_FORMATQUERYA
+typedef REBARBANDINFOA REBARBANDINFO,*LPREBARBANDINFO;
+#define LPCREBARBANDINFO LPCREBARBANDINFOA
+#define REBARBANDINFO_V3_SIZE REBARBANDINFOA_V3_SIZE
+#define RB_INSERTBAND RB_INSERTBANDA
+#define RB_SETBANDINFO RB_SETBANDINFOA
+#endif
+#endif /* RC_INVOKED */
+
+#ifdef _WIN32_WCE               /* these are PPC only */
+
+COMMCTRLAPI HWND WINAPI CommandBar_Create(HINSTANCE, HWND, int); 
+COMMCTRLAPI BOOL WINAPI CommandBar_Show(HWND, BOOL); 
+COMMCTRLAPI int WINAPI CommandBar_AddBitmap(HWND, HINSTANCE, int, int, int, int); 
+COMMCTRLAPI HWND WINAPI CommandBar_InsertComboBox(HWND, HINSTANCE, int, UINT, WORD, WORD); 
+COMMCTRLAPI BOOL WINAPI CommandBar_InsertMenubar(HWND, HINSTANCE, WORD, WORD );
+COMMCTRLAPI BOOL WINAPI CommandBar_InsertMenubarEx(HWND, HINSTANCE, LPTSTR, WORD);
+COMMCTRLAPI BOOL WINAPI CommandBar_DrawMenuBar(HWND, WORD); 
+COMMCTRLAPI HMENU WINAPI CommandBar_GetMenu(HWND, WORD); 
+COMMCTRLAPI BOOL WINAPI CommandBar_AddAdornments(HWND, DWORD, DWORD); 
+COMMCTRLAPI int WINAPI CommandBar_Height(HWND hwndCB); 
+
+/* These two are not in the DLL */
+#define CommandBar_InsertButton(hwnd,i,lptbbutton)              \
+    SendMessage((hwnd),TB_INSERTBUTTON,(i),(lptbbutton))
+#define CommandBar_Destroy(hwnd)                                \
+    DestroyWindow(hwnd)
+
+
+#endif /* _WIN32_WCE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commdlg.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,609 @@
+#ifndef _COMMDLG_H
+#define _COMMDLG_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#pragma pack(push,1)
+
+#define LBSELCHSTRINGA  "commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGA  "commdlg_ShareViolation"
+#define FILEOKSTRINGA   "commdlg_FileNameOK"
+#define COLOROKSTRINGA  "commdlg_ColorOK"
+#define SETRGBSTRINGA   "commdlg_SetRGBColor"
+#define HELPMSGSTRINGA  "commdlg_help"
+#define FINDMSGSTRINGA  "commdlg_FindReplace"
+#define LBSELCHSTRINGW  L"commdlg_LBSelChangedNotify"
+#define SHAREVISTRINGW  L"commdlg_ShareViolation"
+#define FILEOKSTRINGW   L"commdlg_FileNameOK"
+#define COLOROKSTRINGW  L"commdlg_ColorOK"
+#define SETRGBSTRINGW   L"commdlg_SetRGBColor"
+#define HELPMSGSTRINGW  L"commdlg_help"
+#define FINDMSGSTRINGW  L"commdlg_FindReplace"
+#ifndef CDN_FIRST
+#define CDN_FIRST	((UINT)-601) /* also in commctrl.h */
+#define CDN_LAST	((UINT)-699)
+#endif
+#define CDN_INITDONE	CDN_FIRST
+#define CDN_SELCHANGE	(CDN_FIRST-1U)
+#define CDN_FOLDERCHANGE	(CDN_FIRST-2U)
+#define CDN_SHAREVIOLATION	(CDN_FIRST-3U)
+#define CDN_HELP	(CDN_FIRST-4U)
+#define CDN_FILEOK	(CDN_FIRST-5U)
+#define CDN_TYPECHANGE	(CDN_FIRST-6U)
+#define CDM_FIRST	(WM_USER+100)
+#define CDM_LAST	(WM_USER+200)
+#define CDM_GETSPEC	CDM_FIRST
+#define CDM_GETFILEPATH	(CDM_FIRST+1)
+#define CDM_GETFOLDERPATH (CDM_FIRST+2)
+#define CDM_GETFOLDERIDLIST	(CDM_FIRST+3)
+#define CDM_SETCONTROLTEXT	(CDM_FIRST+4)
+#define CDM_HIDECONTROL	(CDM_FIRST+5)
+#define CDM_SETDEFEXT	(CDM_FIRST+6)
+#define CC_RGBINIT	1
+#define CC_FULLOPEN	2
+#define CC_PREVENTFULLOPEN	4
+#define CC_SHOWHELP	8
+#define CC_ENABLEHOOK	16
+#define CC_ENABLETEMPLATE	32
+#define CC_ENABLETEMPLATEHANDLE	64
+#define CC_SOLIDCOLOR	128
+#define CC_ANYCOLOR	256
+#define CF_SCREENFONTS	1
+#define CF_PRINTERFONTS	2
+#define CF_BOTH	3
+#define CF_SHOWHELP	4
+#define CF_ENABLEHOOK	8
+#define CF_ENABLETEMPLATE	16
+#define CF_ENABLETEMPLATEHANDLE	32
+#define CF_INITTOLOGFONTSTRUCT	64
+#define CF_USESTYLE	128
+#define CF_EFFECTS	256
+#define CF_APPLY	512
+#define CF_ANSIONLY	1024
+#define CF_SCRIPTSONLY	CF_ANSIONLY
+#define CF_NOVECTORFONTS	2048
+#define CF_NOOEMFONTS	2048
+#define CF_NOSIMULATIONS	4096
+#define CF_LIMITSIZE	8192
+#define CF_FIXEDPITCHONLY	16384
+#define CF_WYSIWYG	32768
+#define CF_FORCEFONTEXIST	65536
+#define CF_SCALABLEONLY	131072
+#define CF_TTONLY	262144
+#define CF_NOFACESEL	 524288
+#define CF_NOSTYLESEL	 1048576
+#define CF_NOSIZESEL	 2097152
+#define CF_SELECTSCRIPT	 4194304
+#define CF_NOSCRIPTSEL	 8388608
+#define CF_NOVERTFONTS	0x1000000
+#define SIMULATED_FONTTYPE	0x8000
+#define PRINTER_FONTTYPE	0x4000
+#define SCREEN_FONTTYPE	0x2000
+#define BOLD_FONTTYPE	0x100
+#define ITALIC_FONTTYPE	0x0200
+#define REGULAR_FONTTYPE	0x0400
+#define WM_CHOOSEFONT_GETLOGFONT	(WM_USER+1)
+#define WM_CHOOSEFONT_SETLOGFONT	(WM_USER+101)
+#define WM_CHOOSEFONT_SETFLAGS	(WM_USER+102)
+#define OFN_ALLOWMULTISELECT 512
+#define OFN_CREATEPROMPT 0x2000
+#define OFN_ENABLEHOOK 32
+#define OFN_ENABLESIZING 0x800000
+#define OFN_ENABLETEMPLATE 64
+#define OFN_ENABLETEMPLATEHANDLE 128
+#define OFN_EXPLORER 0x80000
+#define OFN_EXTENSIONDIFFERENT 0x400
+#define OFN_FILEMUSTEXIST 0x1000
+#define OFN_HIDEREADONLY 4
+#define OFN_LONGNAMES 0x200000
+#define OFN_NOCHANGEDIR 8
+#define OFN_NODEREFERENCELINKS 0x100000
+#define OFN_NOLONGNAMES 0x40000
+#define OFN_NONETWORKBUTTON 0x20000
+#define OFN_NOREADONLYRETURN 0x8000
+#define OFN_NOTESTFILECREATE 0x10000
+#define OFN_NOVALIDATE 256
+#define OFN_OVERWRITEPROMPT 2
+#define OFN_PATHMUSTEXIST 0x800
+#define OFN_READONLY 1
+#define OFN_SHAREAWARE 0x4000
+#define OFN_SHOWHELP 16
+#define OFN_SHAREFALLTHROUGH 2
+#define OFN_SHARENOWARN 1
+#define OFN_SHAREWARN 0
+#define OFN_NODEREFERENCELINKS 0x100000
+#if (_WIN32_WINNT >= 0x0500)
+#define OFN_DONTADDTORECENT 0x02000000
+#endif
+#define FR_DIALOGTERM 64
+#define FR_DOWN 1
+#define FR_ENABLEHOOK 256
+#define FR_ENABLETEMPLATE 512
+#define FR_ENABLETEMPLATEHANDLE 0x2000
+#define FR_FINDNEXT 8
+#define FR_HIDEUPDOWN 0x4000
+#define FR_HIDEMATCHCASE 0x8000
+#define FR_HIDEWHOLEWORD 0x10000
+#define FR_MATCHALEFHAMZA	0x80000000
+#define FR_MATCHCASE 4
+#define FR_MATCHDIAC	0x20000000
+#define FR_MATCHKASHIDA	0x40000000
+#define FR_NOMATCHCASE 0x800
+#define FR_NOUPDOWN 0x400
+#define FR_NOWHOLEWORD 4096
+#define FR_REPLACE 16
+#define FR_REPLACEALL 32
+#define FR_SHOWHELP 128
+#define FR_WHOLEWORD 2
+#define PD_ALLPAGES	0x00000000
+#define PD_SELECTION	0x00000001
+#define PD_PAGENUMS	0x00000002
+#define PD_NOSELECTION	0x00000004
+#define PD_NOPAGENUMS	0x00000008
+#define PD_COLLATE	0x00000010
+#define PD_PRINTTOFILE	0x00000020
+#define PD_PRINTSETUP	0x00000040
+#define PD_NOWARNING	0x00000080
+#define PD_RETURNDC	0x00000100
+#define PD_RETURNIC	0x00000200
+#define PD_RETURNDEFAULT	0x00000400
+#define PD_SHOWHELP	0x00000800
+#define PD_ENABLEPRINTHOOK	0x00001000
+#define PD_ENABLESETUPHOOK	0x00002000
+#define PD_ENABLEPRINTTEMPLATE	0x00004000
+#define PD_ENABLESETUPTEMPLATE 0x00008000
+#define PD_ENABLEPRINTTEMPLATEHANDLE 0x00010000
+#define PD_ENABLESETUPTEMPLATEHANDLE 0x00020000
+#define PD_USEDEVMODECOPIES	0x00040000
+#define PD_USEDEVMODECOPIESANDCOLLATE	0x00040000
+#define PD_DISABLEPRINTTOFILE	0x00080000
+#define PD_HIDEPRINTTOFILE	0x00100000
+#define PD_NONETWORKBUTTON	0x00200000
+#if (_WIN32_WINNT >= 0x0500)
+#define PD_CURRENTPAGE	0x00400000
+#define PD_NOCURRENTPAGE	0x00800000
+#define PD_EXCLUSIONFLAGS	0x01000000 
+#define PD_USELARGETEMPLATE	0x10000000
+#define PD_RESULT_CANCEL	0
+#define PD_RESULT_PRINT	1
+#define PD_RESULT_APPLY	2
+#define START_PAGE_GENERAL	0XFFFFFFFF
+#endif
+#define PSD_DEFAULTMINMARGINS	0
+#define PSD_INWININIINTLMEASURE	0
+#define PSD_MINMARGINS	1
+#define PSD_MARGINS	2
+#define PSD_INTHOUSANDTHSOFINCHES	4
+#define PSD_INHUNDREDTHSOFMILLIMETERS	8
+#define PSD_DISABLEMARGINS	16
+#define PSD_DISABLEPRINTER	32
+#define PSD_NOWARNING	128
+#define PSD_DISABLEORIENTATION	256
+#define PSD_DISABLEPAPER	512
+#define PSD_RETURNDEFAULT	1024
+#define PSD_SHOWHELP	2048
+#define PSD_ENABLEPAGESETUPHOOK 8192
+#define PSD_ENABLEPAGESETUPTEMPLATE	0x8000
+#define PSD_ENABLEPAGESETUPTEMPLATEHANDLE	0x20000
+#define PSD_ENABLEPAGEPAINTHOOK	0x40000
+#define PSD_DISABLEPAGEPAINTING	0x80000
+#define WM_PSD_PAGESETUPDLG	WM_USER
+#define WM_PSD_FULLPAGERECT	(WM_USER+1)
+#define WM_PSD_MINMARGINRECT	(WM_USER+2)
+#define WM_PSD_MARGINRECT	(WM_USER+3)
+#define WM_PSD_GREEKTEXTRECT	(WM_USER+4)
+#define WM_PSD_ENVSTAMPRECT	(WM_USER+5)
+#define WM_PSD_YAFULLPAGERECT	(WM_USER+6)
+#define CD_LBSELNOITEMS (-1)
+#define CD_LBSELCHANGE   0
+#define CD_LBSELSUB      1
+#define CD_LBSELADD      2
+#define DN_DEFAULTPRN	1
+#if (_WIN32_WINNT >= 0x0500)
+#define OPENFILENAME_SIZE_VERSION_400  76
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif /* ifndef SNDMSG */
+
+#define CommDlg_OpenSave_GetSpec(d,s,m) ((int)SNDMSG((d),CDM_GETSPEC,(m),(LPARAM)(s)))
+#define CommDlg_OpenSave_GetSpecA CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetSpecW CommDlg_OpenSave_GetSpec
+#define CommDlg_OpenSave_GetFilePath(d,s,m) ((int)SNDMSG((d),CDM_GETFILEPATH,(m),(LPARAM)(s)))
+#define CommDlg_OpenSave_GetFilePathA CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFilePathW CommDlg_OpenSave_GetFilePath
+#define CommDlg_OpenSave_GetFolderPath(d,s,m) ((int)SNDMSG((d),CDM_GETFOLDERPATH,(m),(LPARAM)(LPSTR)(s)))
+#define CommDlg_OpenSave_GetFolderPathA CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderPathW CommDlg_OpenSave_GetFolderPath
+#define CommDlg_OpenSave_GetFolderIDList(d,i,m) ((int)SNDMSG((d),CDM_GETFOLDERIDLIST,(m),(LPARAM)(i)))
+#define CommDlg_OpenSave_SetControlText(d,i,t) ((void)SNDMSG((d),CDM_SETCONTROLTEXT,(i),(LPARAM)(t)))
+#define CommDlg_OpenSave_HideControl(d,i) ((void)SNDMSG((d),CDM_HIDECONTROL,(i),0))
+#define CommDlg_OpenSave_SetDefExt(d,e) ((void)SNDMSG((d),CDM_SETDEFEXT,0,(LPARAM)(e)))
+
+typedef UINT (APIENTRY *__CDHOOKPROC)(HWND,UINT,WPARAM,LPARAM);
+typedef __CDHOOKPROC LPCCHOOKPROC;
+typedef __CDHOOKPROC LPCFHOOKPROC;
+typedef __CDHOOKPROC LPFRHOOKPROC;
+typedef __CDHOOKPROC LPOFNHOOKPROC;
+typedef __CDHOOKPROC LPPAGEPAINTHOOK;
+typedef __CDHOOKPROC LPPAGESETUPHOOK;
+typedef __CDHOOKPROC LPSETUPHOOKPROC;
+typedef __CDHOOKPROC LPPRINTHOOKPROC;
+typedef struct tagCHOOSECOLORA {
+	DWORD	lStructSize;
+	HWND	hwndOwner;
+	HWND	hInstance;
+	COLORREF	rgbResult;
+	COLORREF*	lpCustColors;
+	DWORD	Flags;
+	LPARAM	lCustData;
+	LPCCHOOKPROC	lpfnHook;
+	LPCSTR	lpTemplateName;
+} CHOOSECOLORA,*LPCHOOSECOLORA;
+typedef struct tagCHOOSECOLORW {
+	DWORD	lStructSize;
+	HWND	hwndOwner;
+	HWND	hInstance;
+	COLORREF	rgbResult;
+	COLORREF*	lpCustColors;
+	DWORD	Flags;
+	LPARAM	lCustData;
+	LPCCHOOKPROC	lpfnHook;
+	LPCWSTR	lpTemplateName;
+} CHOOSECOLORW,*LPCHOOSECOLORW;
+typedef struct tagCHOOSEFONTA {
+	DWORD	lStructSize;
+	HWND	hwndOwner;
+	HDC	hDC;
+	LPLOGFONTA	lpLogFont;
+	INT	iPointSize;
+	DWORD	Flags;
+	DWORD	rgbColors;
+	LPARAM	lCustData;
+	LPCFHOOKPROC	lpfnHook;
+	LPCSTR	lpTemplateName;
+	HINSTANCE	hInstance;
+	LPSTR	lpszStyle;
+	WORD	nFontType;
+	WORD	___MISSING_ALIGNMENT__;
+	INT	nSizeMin;
+	INT	nSizeMax;
+} CHOOSEFONTA,*LPCHOOSEFONTA;
+typedef struct tagCHOOSEFONTW {
+	DWORD	lStructSize;
+	HWND	hwndOwner;
+	HDC	hDC;
+	LPLOGFONTW	lpLogFont;
+	INT	iPointSize;
+	DWORD	Flags;
+	DWORD	rgbColors;
+	LPARAM	lCustData;
+	LPCFHOOKPROC	lpfnHook;
+	LPCWSTR	lpTemplateName;
+	HINSTANCE	hInstance;
+	LPWSTR	lpszStyle;
+	WORD	nFontType;
+	WORD	___MISSING_ALIGNMENT__;
+	INT	nSizeMin;
+	INT	nSizeMax;
+} CHOOSEFONTW,*LPCHOOSEFONTW;
+typedef struct tagDEVNAMES {
+	WORD wDriverOffset;
+	WORD wDeviceOffset;
+	WORD wOutputOffset;
+	WORD wDefault;
+} DEVNAMES,*LPDEVNAMES;
+typedef struct {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	DWORD Flags;
+	LPSTR lpstrFindWhat;
+	LPSTR lpstrReplaceWith;
+	WORD wFindWhatLen;
+	WORD wReplaceWithLen;
+	LPARAM lCustData;
+	LPFRHOOKPROC lpfnHook;
+	LPCSTR lpTemplateName;
+} FINDREPLACEA,*LPFINDREPLACEA;
+typedef struct {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	DWORD Flags;
+	LPWSTR lpstrFindWhat;
+	LPWSTR lpstrReplaceWith;
+	WORD wFindWhatLen;
+	WORD wReplaceWithLen;
+	LPARAM lCustData;
+	LPFRHOOKPROC lpfnHook;
+	LPCWSTR lpTemplateName;
+} FINDREPLACEW,*LPFINDREPLACEW;
+typedef struct tagOFNA {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCSTR lpstrFilter;
+	LPSTR lpstrCustomFilter;
+	DWORD nMaxCustFilter;
+	DWORD nFilterIndex;
+	LPSTR lpstrFile;
+	DWORD nMaxFile;
+	LPSTR lpstrFileTitle;
+	DWORD nMaxFileTitle;
+	LPCSTR lpstrInitialDir;
+	LPCSTR lpstrTitle;
+	DWORD Flags;
+	WORD nFileOffset;
+	WORD nFileExtension;
+	LPCSTR lpstrDefExt;
+	DWORD lCustData;
+	LPOFNHOOKPROC lpfnHook;
+	LPCSTR lpTemplateName;
+#if (_WIN32_WINNT >= 0x0500)
+	void * pvReserved;
+	DWORD dwReserved;
+	DWORD FlagsEx;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+} OPENFILENAMEA,*LPOPENFILENAMEA;
+typedef struct tagOFNW {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HINSTANCE hInstance;
+	LPCWSTR lpstrFilter;
+	LPWSTR lpstrCustomFilter;
+	DWORD nMaxCustFilter;
+	DWORD nFilterIndex;
+	LPWSTR lpstrFile;
+	DWORD nMaxFile;
+	LPWSTR lpstrFileTitle;
+	DWORD nMaxFileTitle;
+	LPCWSTR lpstrInitialDir;
+	LPCWSTR lpstrTitle;
+	DWORD Flags;
+	WORD nFileOffset;
+	WORD nFileExtension;
+	LPCWSTR lpstrDefExt;
+	DWORD lCustData;
+	LPOFNHOOKPROC lpfnHook;
+	LPCWSTR lpTemplateName;
+#if (_WIN32_WINNT >= 0x0500)
+	void * pvReserved;
+	DWORD dwReserved;
+	DWORD FlagsEx;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+} OPENFILENAMEW,*LPOPENFILENAMEW;
+typedef struct _OFNOTIFYA {
+	NMHDR hdr;
+	LPOPENFILENAMEA lpOFN;
+	LPSTR pszFile;
+} OFNOTIFYA,*LPOFNOTIFYA;
+typedef struct _OFNOTIFYW {
+	NMHDR hdr;
+	LPOPENFILENAMEW lpOFN;
+	LPWSTR pszFile;
+} OFNOTIFYW,*LPOFNOTIFYW;
+typedef struct tagPSDA {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HGLOBAL hDevMode;
+	HGLOBAL hDevNames;
+	DWORD Flags;
+	POINT ptPaperSize;
+	RECT rtMinMargin;
+	RECT rtMargin;
+	HINSTANCE hInstance;
+	LPARAM lCustData;
+	LPPAGESETUPHOOK lpfnPageSetupHook;
+	LPPAGEPAINTHOOK lpfnPagePaintHook;
+	LPCSTR lpPageSetupTemplateName;
+	HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGA,*LPPAGESETUPDLGA;
+typedef struct tagPSDW {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HGLOBAL hDevMode;
+	HGLOBAL hDevNames;
+	DWORD Flags;
+	POINT ptPaperSize;
+	RECT rtMinMargin;
+	RECT rtMargin;
+	HINSTANCE hInstance;
+	LPARAM lCustData;
+	LPPAGESETUPHOOK lpfnPageSetupHook;
+	LPPAGEPAINTHOOK lpfnPagePaintHook;
+	LPCWSTR lpPageSetupTemplateName;
+	HGLOBAL hPageSetupTemplate;
+} PAGESETUPDLGW,*LPPAGESETUPDLGW;
+typedef struct tagPDA {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HANDLE hDevMode;
+	HANDLE hDevNames;
+	HDC hDC;
+	DWORD Flags;
+	WORD nFromPage;
+	WORD nToPage;
+	WORD nMinPage;
+	WORD nMaxPage;
+	WORD nCopies;
+	HINSTANCE hInstance;
+	DWORD lCustData;
+	LPPRINTHOOKPROC lpfnPrintHook;
+	LPSETUPHOOKPROC lpfnSetupHook;
+	LPCSTR lpPrintTemplateName;
+	LPCSTR lpSetupTemplateName;
+	HANDLE hPrintTemplate;
+	HANDLE hSetupTemplate;
+} PRINTDLGA,*LPPRINTDLGA;
+typedef struct tagPDW {
+	DWORD lStructSize;
+	HWND hwndOwner;
+	HANDLE hDevMode;
+	HANDLE hDevNames;
+	HDC hDC;
+	DWORD Flags;
+	WORD nFromPage;
+	WORD nToPage;
+	WORD nMinPage;
+	WORD nMaxPage;
+	WORD nCopies;
+	HINSTANCE hInstance;
+	DWORD lCustData;
+	LPPRINTHOOKPROC lpfnPrintHook;
+	LPSETUPHOOKPROC lpfnSetupHook;
+	LPCWSTR lpPrintTemplateName;
+	LPCWSTR lpSetupTemplateName;
+	HANDLE hPrintTemplate;
+	HANDLE hSetupTemplate;
+} PRINTDLGW,*LPPRINTDLGW;
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+#include <unknwn.h>  /* for LPUNKNOWN  */ 
+#include <prsht.h>   /* for HPROPSHEETPAGE  */
+typedef struct tagPRINTPAGERANGE {
+   DWORD  nFromPage;
+   DWORD  nToPage;
+} PRINTPAGERANGE, *LPPRINTPAGERANGE;
+typedef struct tagPDEXA {
+   DWORD lStructSize;
+   HWND hwndOwner;
+   HGLOBAL hDevMode;
+   HGLOBAL hDevNames;
+   HDC hDC;
+   DWORD Flags;
+   DWORD Flags2;
+   DWORD ExclusionFlags;
+   DWORD nPageRanges;
+   DWORD nMaxPageRanges;
+   LPPRINTPAGERANGE lpPageRanges;
+   DWORD nMinPage;
+   DWORD nMaxPage;
+   DWORD nCopies;
+   HINSTANCE hInstance;
+   LPCSTR lpPrintTemplateName;
+   LPUNKNOWN lpCallback;
+   DWORD nPropertyPages;
+   HPROPSHEETPAGE *lphPropertyPages;
+   DWORD nStartPage;
+   DWORD dwResultAction;
+} PRINTDLGEXA, *LPPRINTDLGEXA;
+typedef struct tagPDEXW {
+   DWORD lStructSize;
+   HWND hwndOwner;
+   HGLOBAL hDevMode;
+   HGLOBAL hDevNames;
+   HDC hDC;
+   DWORD Flags;
+   DWORD Flags2;
+   DWORD ExclusionFlags;
+   DWORD nPageRanges;
+   DWORD nMaxPageRanges;
+   LPPRINTPAGERANGE lpPageRanges;
+   DWORD nMinPage;
+   DWORD nMaxPage;
+   DWORD nCopies;
+   HINSTANCE hInstance;
+   LPCWSTR lpPrintTemplateName;
+   LPUNKNOWN lpCallback;
+   DWORD nPropertyPages;
+   HPROPSHEETPAGE *lphPropertyPages;
+   DWORD nStartPage;
+   DWORD dwResultAction;
+} PRINTDLGEXW, *LPPRINTDLGEXW;
+#endif /* WINVER >= 0x0500 */
+
+BOOL WINAPI ChooseColorA(LPCHOOSECOLORA);
+BOOL WINAPI ChooseColorW(LPCHOOSECOLORW);
+BOOL WINAPI ChooseFontA(LPCHOOSEFONTA);
+BOOL WINAPI ChooseFontW(LPCHOOSEFONTW);
+DWORD WINAPI CommDlgExtendedError(void);
+HWND WINAPI FindTextA(LPFINDREPLACEA);
+HWND WINAPI FindTextW(LPFINDREPLACEW);
+short WINAPI GetFileTitleA(LPCSTR,LPSTR,WORD);
+short WINAPI GetFileTitleW(LPCWSTR,LPWSTR,WORD);
+BOOL WINAPI GetOpenFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetOpenFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI GetSaveFileNameA(LPOPENFILENAMEA);
+BOOL WINAPI GetSaveFileNameW(LPOPENFILENAMEW);
+BOOL WINAPI PageSetupDlgA(LPPAGESETUPDLGA);
+BOOL WINAPI PageSetupDlgW(LPPAGESETUPDLGW);
+BOOL WINAPI PrintDlgA(LPPRINTDLGA);
+BOOL WINAPI PrintDlgW(LPPRINTDLGW);
+HWND WINAPI ReplaceTextA(LPFINDREPLACEA);
+HWND WINAPI ReplaceTextW(LPFINDREPLACEW);
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+HRESULT WINAPI PrintDlgExA(LPPRINTDLGEXA);
+HRESULT WINAPI PrintDlgExW(LPPRINTDLGEXW);
+#endif /* WINVER >= 0x0500 */
+
+#ifdef UNICODE
+#define LBSELCHSTRING  LBSELCHSTRINGW
+#define SHAREVISTRING  SHAREVISTRINGW
+#define FILEOKSTRING   FILEOKSTRINGW
+#define COLOROKSTRING  COLOROKSTRINGW
+#define SETRGBSTRING   SETRGBSTRINGW
+#define HELPMSGSTRING  HELPMSGSTRINGW
+#define FINDMSGSTRING  FINDMSGSTRINGW
+typedef CHOOSECOLORW CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTW CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEW FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEW OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYW OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGW PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGW PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorW
+#define ChooseFont ChooseFontW
+#define FindText FindTextW
+#define GetFileTitle GetFileTitleW
+#define GetOpenFileName GetOpenFileNameW
+#define GetSaveFileName GetSaveFileNameW
+#define PageSetupDlg PageSetupDlgW
+#define PrintDlg PrintDlgW
+#define ReplaceText ReplaceTextW
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+typedef PRINTDLGEXW PRINTDLGEX, *LPPRINTDLGEX;
+#define PrintDlgEx PrintDlgExW
+#endif /* WINVER >= 0x0500 */
+#else /* UNICODE */
+#define LBSELCHSTRING  LBSELCHSTRINGA
+#define SHAREVISTRING  SHAREVISTRINGA
+#define FILEOKSTRING   FILEOKSTRINGA
+#define COLOROKSTRING  COLOROKSTRINGA
+#define SETRGBSTRING   SETRGBSTRINGA
+#define HELPMSGSTRING  HELPMSGSTRINGA
+#define FINDMSGSTRING  FINDMSGSTRINGA
+typedef CHOOSECOLORA CHOOSECOLOR,*LPCHOOSECOLOR;
+typedef CHOOSEFONTA CHOOSEFONT,*LPCHOOSEFONT;
+typedef FINDREPLACEA FINDREPLACE,*LPFINDREPLACE;
+typedef OPENFILENAMEA OPENFILENAME,*LPOPENFILENAME;
+typedef OFNOTIFYA OFNOTIFY,*LPOFNOTIFY;
+typedef PAGESETUPDLGA PAGESETUPDLG,*LPPAGESETUPDLG;
+typedef PRINTDLGA PRINTDLG,*LPPRINTDLG;
+#define ChooseColor ChooseColorA
+#define ChooseFont ChooseFontA
+#define FindText FindTextA
+#define GetFileTitle GetFileTitleA
+#define GetOpenFileName GetOpenFileNameA
+#define GetSaveFileName GetSaveFileNameA
+#define PageSetupDlg PageSetupDlgA
+#define PrintDlg PrintDlgA
+#define ReplaceText ReplaceTextA
+#if (WINVER >= 0x0500) && !defined (_OBJC_NO_COM)
+typedef PRINTDLGEXA PRINTDLGEX, *LPPRINTDLGEX;
+#define PrintDlgEx PrintDlgExA
+#endif /* WINVER >= 0x0500 */
+#endif /* UNICODE */
+#pragma pack(pop)
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/complex.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,200 @@
+/*
+ * complex.h
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Danny Smith <dannysmith@users.sourceforge.net>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#ifndef _COMPLEX_H_
+#define _COMPLEX_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/* These macros are specified by C99 standard */
+
+#ifndef __cplusplus
+#define complex _Complex
+#endif
+
+#define _Complex_I  (0.0F +  1.0iF)
+
+/* GCC doesn't support _Imaginary type yet, so we don't
+   define _Imaginary_I */
+
+#define I _Complex_I
+
+#ifdef __cplusplus
+extern "C" {
+#endif 
+
+#ifndef RC_INVOKED
+
+double __MINGW_ATTRIB_CONST creal (double _Complex);
+double __MINGW_ATTRIB_CONST cimag (double _Complex);
+double __MINGW_ATTRIB_CONST carg (double _Complex);
+double __MINGW_ATTRIB_CONST cabs (double _Complex);
+double _Complex __MINGW_ATTRIB_CONST conj (double _Complex);
+double _Complex  cacos (double _Complex);
+double _Complex  casin (double _Complex);
+double _Complex  catan (double _Complex);
+double _Complex  ccos (double _Complex);
+double _Complex  csin (double _Complex);
+double _Complex  ctan (double _Complex);
+double _Complex  cacosh (double _Complex);
+double _Complex  casinh (double _Complex);
+double _Complex  catanh (double _Complex);
+double _Complex  ccosh (double _Complex);
+double _Complex  csinh (double _Complex);
+double _Complex  ctanh (double _Complex);
+double _Complex  cexp (double _Complex);
+double _Complex  clog (double _Complex);
+double _Complex  cpow (double _Complex, double _Complex);
+double _Complex  csqrt (double _Complex);
+double _Complex __MINGW_ATTRIB_CONST cproj (double _Complex);
+
+float __MINGW_ATTRIB_CONST crealf (float _Complex);
+float __MINGW_ATTRIB_CONST cimagf (float _Complex);
+float __MINGW_ATTRIB_CONST cargf (float _Complex);
+float __MINGW_ATTRIB_CONST cabsf (float _Complex);
+float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex);
+float _Complex  cacosf (float _Complex);
+float _Complex  casinf (float _Complex);
+float _Complex  catanf (float _Complex);
+float _Complex  ccosf (float _Complex);
+float _Complex  csinf (float _Complex);
+float _Complex  ctanf (float _Complex);
+float _Complex  cacoshf (float _Complex);
+float _Complex  casinhf (float _Complex);
+float _Complex  catanhf (float _Complex);
+float _Complex  ccoshf (float _Complex);
+float _Complex  csinhf (float _Complex);
+float _Complex  ctanhf (float _Complex);
+float _Complex  cexpf (float _Complex);
+float _Complex  clogf (float _Complex);
+float _Complex  cpowf (float _Complex, float _Complex);
+float _Complex  csqrtf (float _Complex);
+float _Complex __MINGW_ATTRIB_CONST cprojf (float _Complex);
+
+long double __MINGW_ATTRIB_CONST creall (long double _Complex);
+long double __MINGW_ATTRIB_CONST cimagl (long double _Complex);
+long double __MINGW_ATTRIB_CONST cargl (long double _Complex);
+long double __MINGW_ATTRIB_CONST cabsl (long double _Complex);
+long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex);
+long double _Complex  cacosl (long double _Complex);
+long double _Complex  casinl (long double _Complex);
+long double _Complex  catanl (long double _Complex);
+long double _Complex  ccosl (long double _Complex);
+long double _Complex  csinl (long double _Complex);
+long double _Complex  ctanl (long double _Complex);
+long double _Complex  cacoshl (long double _Complex);
+long double _Complex  casinhl (long double _Complex);
+long double _Complex  catanhl (long double _Complex);
+long double _Complex  ccoshl (long double _Complex);
+long double _Complex  csinhl (long double _Complex);
+long double _Complex  ctanhl (long double _Complex);
+long double _Complex  cexpl (long double _Complex);
+long double _Complex  clogl (long double _Complex);
+long double _Complex  cpowl (long double _Complex, long double _Complex);
+long double _Complex  csqrtl (long double _Complex);
+long double _Complex __MINGW_ATTRIB_CONST cprojl (long double _Complex);
+
+#ifdef __GNUC__
+
+/* double */
+__CRT_INLINE double __MINGW_ATTRIB_CONST creal (double _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE double __MINGW_ATTRIB_CONST cimag (double _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE double _Complex __MINGW_ATTRIB_CONST conj (double _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE  double __MINGW_ATTRIB_CONST carg (double _Complex _Z)
+{
+  double res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+
+/* float */
+__CRT_INLINE float __MINGW_ATTRIB_CONST crealf (float _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE float __MINGW_ATTRIB_CONST cimagf (float _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE float _Complex __MINGW_ATTRIB_CONST conjf (float _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE  float __MINGW_ATTRIB_CONST cargf (float _Complex _Z)
+{
+  float res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+/* long double */
+__CRT_INLINE long double __MINGW_ATTRIB_CONST creall (long double _Complex _Z)
+{
+  return __real__ _Z;
+}
+
+__CRT_INLINE long double __MINGW_ATTRIB_CONST cimagl (long double _Complex _Z)
+{
+  return __imag__ _Z;
+}
+
+__CRT_INLINE long double _Complex __MINGW_ATTRIB_CONST conjl (long double _Complex _Z)
+{
+  return __extension__ ~_Z;
+}
+
+__CRT_INLINE  long double __MINGW_ATTRIB_CONST cargl (long double _Complex _Z)
+{
+  long double res;
+  __asm__  ("fpatan;"
+	   : "=t" (res) : "0" (__real__ _Z), "u" (__imag__ _Z) : "st(1)");
+  return res;
+}
+
+#endif /* __GNUC__ */
+
+
+#endif /* RC_INVOKED */
+
+#ifdef __cplusplus
+}
+#endif 
+
+
+#endif /* _COMPLEX_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/conio.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,53 @@
+/*
+ * conio.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Low level console I/O functions. Pretty please try to use the ANSI
+ * standard ones if you are writing new code.
+ *
+ */
+
+#ifndef	_CONIO_H_
+#define	_CONIO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+_CRTIMP char* __cdecl __MINGW_NOTHROW	_cgets (char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cprintf (const char*, ...);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cputs (const char*);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_cscanf (char*, ...);
+
+_CRTIMP int __cdecl __MINGW_NOTHROW	_getch (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_getche (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_kbhit (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_putch (int);
+_CRTIMP int __cdecl __MINGW_NOTHROW	_ungetch (int);
+
+
+#ifndef	_NO_OLDNAMES
+
+_CRTIMP int __cdecl __MINGW_NOTHROW	getch (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	getche (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	kbhit (void);
+_CRTIMP int __cdecl __MINGW_NOTHROW	putch (int);
+_CRTIMP int __cdecl __MINGW_NOTHROW	ungetch (int);
+
+#endif	/* Not _NO_OLDNAMES */
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _CONIO_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/control.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,18 @@
+#ifndef _CONTROL_H
+#define _CONTROL_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Data Types */
+typedef LONG_PTR OAEVENT;
+typedef LONG_PTR OAHWND;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cpl.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,61 @@
+#ifndef _CPL_H
+#define _CPL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_CPL_LAUNCH (WM_USER+1000)
+#define WM_CPL_LAUNCHED (WM_USER+1001)
+#define CPL_DYNAMIC_RES 0
+#define CPL_INIT 1
+#define CPL_GETCOUNT 2
+#define CPL_INQUIRE 3
+#define CPL_SELECT 4
+#define CPL_DBLCLK 5
+#define CPL_STOP 6
+#define CPL_EXIT 7
+#define CPL_NEWINQUIRE 8
+#define CPL_STARTWPARMSA 9
+#define CPL_STARTWPARMSW 10
+#define CPL_SETUP 200
+typedef LONG(APIENTRY *APPLET_PROC)(HWND,UINT,LONG,LONG);
+typedef struct tagCPLINFO {
+	int idIcon;
+	int idName;
+	int idInfo;
+	LONG lData;
+} CPLINFO,*LPCPLINFO;
+typedef struct tagNEWCPLINFOA {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwHelpContext;
+	LONG lData;
+	HICON hIcon;
+	CHAR szName[32];
+	CHAR szInfo[64];
+	CHAR szHelpFile[128];
+} NEWCPLINFOA,*LPNEWCPLINFOA;
+typedef struct tagNEWCPLINFOW {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD dwHelpContext;
+	LONG lData;
+	HICON hIcon;
+	WCHAR szName[32];
+	WCHAR szInfo[64];
+	WCHAR szHelpFile[128];
+} NEWCPLINFOW,*LPNEWCPLINFOW;
+#ifdef UNICODE
+#define CPL_STARTWPARMS CPL_STARTWPARMSW
+typedef NEWCPLINFOW NEWCPLINFO,*LPNEWCPLINFO;
+#else
+#define CPL_STARTWPARMS CPL_STARTWPARMSA
+typedef NEWCPLINFOA NEWCPLINFO,*LPNEWCPLINFO;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cplext.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,12 @@
+#ifndef _CPLEXT_H
+#define _CPLEXT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define CPLPAGE_MOUSE_BUTTONS 1
+#define CPLPAGE_MOUSE_PTRMOTION 2
+#define CPLPAGE_MOUSE_WHEEL 3
+#define CPLPAGE_KEYBOARD_SPEED 1
+#define CPLPAGE_DISPLAY_BACKGROUND 1
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ctype.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,275 @@
+/* 
+ * ctype.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Functions for testing character types and converting characters.
+ *
+ */
+
+#ifndef _CTYPE_H_
+#define _CTYPE_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define	__need_wchar_t
+#define	__need_wint_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+
+/*
+ * The following flags are used to tell iswctype and _isctype what character
+ * types you are looking for.
+ */
+#define	_UPPER		0x0001
+#define	_LOWER		0x0002
+#define	_DIGIT		0x0004
+#define	_SPACE		0x0008 /* HT  LF  VT  FF  CR  SP */
+#define	_PUNCT		0x0010
+#define	_CONTROL	0x0020
+/* _BLANK is set for SP and non-ASCII horizontal space chars (eg,
+   "no-break space", 0xA0, in CP1250) but not for HT.  */
+#define	_BLANK		0x0040
+#define	_HEX		0x0080
+#define	_LEADBYTE	0x8000
+
+#define	_ALPHA		0x0103
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+_CRTIMP int __cdecl __MINGW_NOTHROW isalnum(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isalpha(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW iscntrl(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isdigit(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isgraph(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW islower(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isprint(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW ispunct(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isspace(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isupper(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW isxdigit(int);
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
+     || !defined __STRICT_ANSI__
+int __cdecl __MINGW_NOTHROW isblank (int);
+#endif
+
+#ifndef __STRICT_ANSI__
+_CRTIMP int __cdecl __MINGW_NOTHROW _isctype (int, int);
+#endif
+
+/* These are the ANSI versions, with correct checking of argument */
+_CRTIMP int __cdecl __MINGW_NOTHROW tolower(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW toupper(int);
+
+/*
+ * NOTE: The above are not old name type wrappers, but functions exported
+ * explicitly by MSVCRT/CRTDLL. However, underscored versions are also
+ * exported.
+ */
+#ifndef	__STRICT_ANSI__
+/*
+ *  These are the cheap non-std versions: The return values are undefined
+ *  if the argument is not ASCII char or is not of appropriate case
+ */ 
+_CRTIMP int __cdecl __MINGW_NOTHROW _tolower(int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _toupper(int);
+#endif
+
+/* Also defined in stdlib.h */
+#ifndef MB_CUR_MAX
+#ifdef __DECLSPEC_SUPPORTED
+# ifdef __MSVCRT__
+#  define MB_CUR_MAX __mb_cur_max
+   __MINGW_IMPORT int __mb_cur_max;
+# else	/* not __MSVCRT */
+#  define MB_CUR_MAX __mb_cur_max_dll
+   __MINGW_IMPORT int __mb_cur_max_dll;
+# endif	/* not __MSVCRT */
+
+#else		/* ! __DECLSPEC_SUPPORTED */
+# ifdef __MSVCRT__
+   extern int* _imp____mb_cur_max;
+#  define MB_CUR_MAX (*_imp____mb_cur_max)
+# else		/* not __MSVCRT */
+   extern int*  _imp____mb_cur_max_dll;
+#  define MB_CUR_MAX (*_imp____mb_cur_max_dll)
+# endif 	/* not __MSVCRT */
+#endif  	/*  __DECLSPEC_SUPPORTED */
+#endif  /* MB_CUR_MAX */
+
+
+#ifdef __DECLSPEC_SUPPORTED
+# if __MSVCRT_VERSION__ <= 0x0700
+  __MINGW_IMPORT unsigned short _ctype[];
+# endif
+# ifdef __MSVCRT__
+  __MINGW_IMPORT unsigned short* _pctype;
+# else /* CRTDLL */
+  __MINGW_IMPORT unsigned short* _pctype_dll;
+# define  _pctype _pctype_dll
+# endif 
+
+#else		/*  __DECLSPEC_SUPPORTED */
+# if __MSVCRT_VERSION__ <= 0x0700
+  extern unsigned short** _imp___ctype;
+# define _ctype (*_imp___ctype)
+# endif
+# ifdef __MSVCRT__
+  extern unsigned short** _imp___pctype;
+# define _pctype (*_imp___pctype)
+# else /* CRTDLL */
+  extern unsigned short** _imp___pctype_dll;
+# define _pctype (*_imp___pctype_dll)
+# endif /* CRTDLL */
+#endif		/*  __DECLSPEC_SUPPORTED */
+
+/*
+ * Use inlines here rather than macros, because macros will upset 
+ * C++ usage (eg, ::isalnum), and so usually get undefined
+ *
+ * According to standard for SB chars, these function are defined only
+ * for input values representable by unsigned char or EOF.
+ * Thus, there is no range test.
+ * This reproduces behaviour of MSVCRT.dll lib implemention for SB chars.
+ *
+ * If no MB char support is needed, these can be simplified even
+ * more by command line define -DMB_CUR_MAX=1.  The compiler will then
+ * optimise away the constant condition.			
+ */
+
+#if !(defined (__NO_INLINE__)  || defined (__NO_CTYPE_INLINES) \
+	|| defined (__STRICT_ANSI__))
+
+/* use  simple lookup if SB locale, else  _isctype()  */
+#define __ISCTYPE(c, mask)  (MB_CUR_MAX == 1 ? (_pctype[c] & mask) : _isctype(c, mask))
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isalnum(int c) {return __ISCTYPE(c, (_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isalpha(int c) {return __ISCTYPE(c, _ALPHA);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iscntrl(int c) {return __ISCTYPE(c, _CONTROL);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isdigit(int c) {return __ISCTYPE(c, _DIGIT);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isgraph(int c) {return __ISCTYPE(c, (_PUNCT|_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW islower(int c) {return __ISCTYPE(c, _LOWER);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isprint(int c) {return __ISCTYPE(c, (_BLANK|_PUNCT|_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW ispunct(int c) {return __ISCTYPE(c, _PUNCT);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isspace(int c) {return __ISCTYPE(c, _SPACE);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isupper(int c) {return __ISCTYPE(c, _UPPER);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isxdigit(int c) {return __ISCTYPE(c, _HEX);}
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
+     || !defined __STRICT_ANSI__
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isblank (int c)
+  {return (__ISCTYPE(c, _BLANK) || c == '\t');}
+#endif
+
+/* these reproduce behaviour of lib underscored versions  */
+__CRT_INLINE int __cdecl __MINGW_NOTHROW _tolower(int c) {return ( c -'A'+'a');}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW _toupper(int c) {return ( c -'a'+'A');}
+
+/* TODO? Is it worth inlining ANSI tolower, toupper? Probably only
+   if we only want C-locale. */
+
+#endif /* _NO_CTYPE_INLINES */
+
+/* Wide character equivalents */
+
+#ifndef WEOF
+#define	WEOF	(wchar_t)(0xFFFF)
+#endif
+
+#ifndef _WCTYPE_T_DEFINED
+typedef wchar_t wctype_t;
+#define _WCTYPE_T_DEFINED
+#endif
+
+_CRTIMP int __cdecl __MINGW_NOTHROW iswalnum(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswalpha(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswascii(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswcntrl(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswctype(wint_t, wctype_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW is_wctype(wint_t, wctype_t);	/* Obsolete! */
+_CRTIMP int __cdecl __MINGW_NOTHROW iswdigit(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswgraph(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswlower(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswprint(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswpunct(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswspace(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswupper(wint_t);
+_CRTIMP int __cdecl __MINGW_NOTHROW iswxdigit(wint_t);
+
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
+     || !defined __STRICT_ANSI__ || defined __cplusplus
+int __cdecl __MINGW_NOTHROW iswblank (wint_t);
+#endif
+
+/* Older MS docs uses wchar_t for arg and return type, while newer
+   online MS docs say arg is wint_t and return is int.
+   ISO C uses wint_t for both.  */
+_CRTIMP wint_t __cdecl __MINGW_NOTHROW towlower (wint_t);
+_CRTIMP wint_t __cdecl __MINGW_NOTHROW towupper (wint_t);
+
+_CRTIMP int __cdecl __MINGW_NOTHROW isleadbyte (int);
+
+/* Also in wctype.h */
+#if ! (defined (__NO_INLINE__) || defined(__NO_CTYPE_INLINES) \
+       || defined(__WCTYPE_INLINES_DEFINED))
+#define __WCTYPE_INLINES_DEFINED
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalnum(wint_t wc) {return (iswctype(wc,_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswalpha(wint_t wc) {return (iswctype(wc,_ALPHA));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswascii(wint_t wc) {return ((wc & ~0x7F) ==0);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswcntrl(wint_t wc) {return (iswctype(wc,_CONTROL));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswdigit(wint_t wc) {return (iswctype(wc,_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswgraph(wint_t wc) {return (iswctype(wc,_PUNCT|_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswlower(wint_t wc) {return (iswctype(wc,_LOWER));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswprint(wint_t wc) {return (iswctype(wc,_BLANK|_PUNCT|_ALPHA|_DIGIT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswpunct(wint_t wc) {return (iswctype(wc,_PUNCT));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswspace(wint_t wc) {return (iswctype(wc,_SPACE));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswupper(wint_t wc) {return (iswctype(wc,_UPPER));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswxdigit(wint_t wc) {return (iswctype(wc,_HEX));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW isleadbyte(int c) {return (_pctype[(unsigned char)(c)] & _LEADBYTE);}
+#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) \
+     || !defined __STRICT_ANSI__ || defined __cplusplus
+__CRT_INLINE int __cdecl __MINGW_NOTHROW iswblank (wint_t wc)
+  {return (iswctype(wc,_BLANK) || wc == L'\t');}
+#endif
+
+#endif /* !(defined(__NO_CTYPE_INLINES) || defined(__WCTYPE_INLINES_DEFINED)) */
+
+#ifndef	__STRICT_ANSI__
+int __cdecl __MINGW_NOTHROW __isascii (int);
+int __cdecl __MINGW_NOTHROW __toascii (int);
+int __cdecl __MINGW_NOTHROW __iscsymf (int);		/* Valid first character in C symbol */
+int __cdecl __MINGW_NOTHROW __iscsym (int);		/* Valid character in C symbol (after first) */
+
+#if !(defined (__NO_INLINE__) || defined (__NO_CTYPE_INLINES))
+__CRT_INLINE int __cdecl __MINGW_NOTHROW __isascii(int c) {return ((c & ~0x7F) == 0);} 
+__CRT_INLINE int __cdecl __MINGW_NOTHROW __toascii(int c) {return (c & 0x7F);}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsymf(int c) {return (isalpha(c) || (c == '_'));}
+__CRT_INLINE int __cdecl __MINGW_NOTHROW __iscsym(int c)  {return  (isalnum(c) || (c == '_'));}
+#endif /* __NO_CTYPE_INLINES */
+
+#ifndef	_NO_OLDNAMES
+/* Not _CRTIMP */ 
+int __cdecl __MINGW_NOTHROW isascii (int);
+int __cdecl __MINGW_NOTHROW toascii (int);
+int __cdecl __MINGW_NOTHROW iscsymf (int);
+int __cdecl __MINGW_NOTHROW iscsym (int);
+#endif	/* Not _NO_OLDNAMES */
+
+#endif	/* Not __STRICT_ANSI__ */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _CTYPE_H_ */
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/custcntl.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,102 @@
+#ifndef _CUSTCNTL_H
+#define _CUSTCNTL_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define CCF_NOTEXT 1
+#define CCHCCCLASS 32
+#define CCHCCDESC 32
+#define CCHCCTEXT 256
+
+typedef struct tagCCSTYLEA {
+	DWORD flStyle;
+	DWORD flExtStyle;
+	CHAR szText[CCHCCTEXT];
+	LANGID lgid;
+	WORD wReserved1;
+} CCSTYLEA,*LPCCSTYLEA;
+typedef struct tagCCSTYLEW {
+	DWORD flStyle;
+	DWORD flExtStyle;
+	WCHAR szText[CCHCCTEXT];
+	LANGID lgid;
+	WORD wReserved1;
+} CCSTYLEW,*LPCCSTYLEW;
+typedef struct tagCCSTYLEFLAGA {
+	DWORD flStyle;
+	DWORD flStyleMask;
+	LPSTR pszStyle;
+} CCSTYLEFLAGA,*LPCCSTYLEFLAGA;
+typedef struct tagCCSTYLEFLAGW {
+	DWORD flStyle;
+	DWORD flStyleMask;
+	LPWSTR pszStyle;
+} CCSTYLEFLAGW,*LPCCSTYLEFLAGW;
+typedef BOOL(CALLBACK* LPFNCCSTYLEA)(HWND,LPCCSTYLEA);
+typedef INT(CALLBACK* LPFNCCSIZETOTEXTA)(DWORD,DWORD,HFONT,LPSTR);
+typedef struct tagCCINFOA {
+	CHAR szClass[CCHCCCLASS];
+	DWORD flOptions;
+	CHAR szDesc[CCHCCDESC];
+	UINT cxDefault;
+	UINT cyDefault;
+	DWORD flStyleDefault;
+	DWORD flExtStyleDefault;
+	DWORD flCtrlTypeMask;
+	CHAR szTextDefault[CCHCCTEXT];
+	INT cStyleFlags;
+	LPCCSTYLEFLAGA aStyleFlags;
+	LPFNCCSTYLEA lpfnStyle;
+	LPFNCCSIZETOTEXTA lpfnSizeToText;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} CCINFOA,*LPCCINFOA;
+typedef UINT(CALLBACK* LPFNCCINFOA)(LPCCINFOA);
+typedef BOOL(CALLBACK* LPFNCCSTYLEW)(HWND,LPCCSTYLEW);
+typedef INT (CALLBACK* LPFNCCSIZETOTEXTW)(DWORD,DWORD,HFONT,LPWSTR);
+typedef struct tagCCINFOW {
+	WCHAR szClass[CCHCCCLASS];
+	DWORD flOptions;
+	WCHAR szDesc[CCHCCDESC];
+	UINT cxDefault;
+	UINT cyDefault;
+	DWORD flStyleDefault;
+	DWORD flExtStyleDefault;
+	DWORD flCtrlTypeMask;
+	WCHAR szTextDefault[CCHCCTEXT];
+	INT cStyleFlags;
+	LPCCSTYLEFLAGW aStyleFlags;
+	LPFNCCSTYLEW lpfnStyle;
+	LPFNCCSIZETOTEXTW lpfnSizeToText;
+	DWORD dwReserved1;
+	DWORD dwReserved2;
+} CCINFOW,*LPCCINFOW;
+typedef UINT(CALLBACK* LPFNCCINFOW)(LPCCINFOW);
+
+UINT CALLBACK CustomControlInfoA(LPCCINFOA acci);
+UINT CALLBACK CustomControlInfoW(LPCCINFOW acci);
+
+#ifdef UNICODE
+typedef CCSTYLEW CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGW CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOW CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEW
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTW
+#define LPFNCCINFO LPFNCCINFOW
+#else
+typedef CCSTYLEA CCSTYLE,*LPCCSTYLE;
+typedef CCSTYLEFLAGA CCSTYLEFLAG,*LPCCSTYLEFLAG;
+typedef CCINFOA CCINFO,*LPCCINFO;
+#define LPFNCCSTYLE LPFNCCSTYLEA
+#define LPFNCCSIZETOTEXT LPFNCCSIZETOTEXTA
+#define LPFNCCINFO LPFNCCINFOA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/d3d9.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,1288 @@
+/*
+
+	d3d9.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_H
+#define _D3D9_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#include <objbase.h>
+#include "d3d9types.h"
+#include "d3d9caps.h"
+
+#define D3D_SDK_VERSION	31
+#define D3DCREATE_FPU_PRESERVE	0x02
+#define D3DCREATE_MULTITHREADED	0x04
+#define D3DCREATE_PUREDEVICE	0x10
+#define D3DCREATE_SOFTWARE_VERTEXPROCESSING	0x20
+#define D3DCREATE_HARDWARE_VERTEXPROCESSING	0x40
+#define D3DCREATE_MIXED_VERTEXPROCESSING	0x80
+#define D3DSPD_IUNKNOWN	1
+#define D3DSGR_NO_CALIBRATION	0
+#define D3DSGR_CALIBRATE	1
+#define MAKE_D3DHRESULT(code)	MAKE_HRESULT(1,0x876,code)
+#define MAKE_D3DSTATUS(code)	MAKE_HRESULT(0,0x876,code)
+#define D3D_OK	0
+#define D3DOK_NOAUTOGEN	MAKE_D3DSTATUS(2159)
+#define D3DERR_WRONGTEXTUREFORMAT	MAKE_D3DHRESULT(2072)
+#define D3DERR_UNSUPPORTEDCOLOROPERATION	MAKE_D3DHRESULT(2073)
+#define D3DERR_UNSUPPORTEDCOLORARG	MAKE_D3DHRESULT(2074)
+#define D3DERR_UNSUPPORTEDALPHAOPERATION	MAKE_D3DHRESULT(2075)
+#define D3DERR_UNSUPPORTEDALPHAARG	MAKE_D3DHRESULT(2076)
+#define D3DERR_TOOMANYOPERATIONS	MAKE_D3DHRESULT(2077)
+#define D3DERR_CONFLICTINGTEXTUREFILTER	MAKE_D3DHRESULT(2078)
+#define D3DERR_UNSUPPORTEDFACTORVALUE	MAKE_D3DHRESULT(2079)
+#define D3DERR_CONFLICTINGRENDERSTATE	MAKE_D3DHRESULT(2081)
+#define D3DERR_UNSUPPORTEDTEXTUREFILTER	MAKE_D3DHRESULT(2082)
+#define D3DERR_CONFLICTINGTEXTUREPALETTE	MAKE_D3DHRESULT(2086)
+#define D3DERR_DRIVERINTERNALERROR	MAKE_D3DHRESULT(2087)
+#define D3DERR_NOTFOUND	MAKE_D3DHRESULT(2150)
+#define D3DERR_MOREDATA	MAKE_D3DHRESULT(2151)
+#define D3DERR_DEVICELOST	MAKE_D3DHRESULT(2152)
+#define D3DERR_DEVICENOTRESET	MAKE_D3DHRESULT(2153)
+#define D3DERR_NOTAVAILABLE	MAKE_D3DHRESULT(2154)
+#define D3DERR_OUTOFVIDEOMEMORY	MAKE_D3DHRESULT(380)
+#define D3DERR_INVALIDDEVICE	MAKE_D3DHRESULT(2155)
+#define D3DERR_INVALIDCALL	MAKE_D3DHRESULT(2156)
+#define D3DERR_DRIVERINVALIDCALL	MAKE_D3DHRESULT(2157)
+#define D3DERR_WASSTILLDRAWING	MAKE_D3DHRESULT(540)
+#define D3DADAPTER_DEFAULT	0
+#define D3DCURSOR_IMMEDIATE_UPDATE	1
+#define D3DENUM_HOST_ADAPTER	1
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER	1
+#define D3DPV_DONOTCOPYDATA	1
+#define D3DENUM_NO_WHQL_LEVEL	2
+#define D3DPRESENT_BACK_BUFFERS_MAX	3
+#define VALID_D3DENUM_FLAGS	3
+#define D3DMAXNUMPRIMITIVES	0xFFFF
+#define D3DMAXNUMVERTICES	0xFFFF
+#define D3DCURRENT_DISPLAY_MODE	0xEFFFFF
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern const GUID IID_IDirect3D9;
+extern const GUID IID_IDirect3DDevice9;
+extern const GUID IID_IDirect3DVolume9;
+extern const GUID IID_IDirect3DSwapChain9;
+extern const GUID IID_IDirect3DResource9;
+extern const GUID IID_IDirect3DSurface9;
+extern const GUID IID_IDirect3DVertexBuffer9;
+extern const GUID IID_IDirect3DIndexBuffer9;
+extern const GUID IID_IDirect3DBaseTexture9;
+extern const GUID IID_IDirect3DCubeTexture9;
+extern const GUID IID_IDirect3DTexture9;
+extern const GUID IID_IDirect3DVolumeTexture9;
+extern const GUID IID_IDirect3DVertexDeclaration9;
+extern const GUID IID_IDirect3DVertexShader9;
+extern const GUID IID_IDirect3DPixelShader9;
+extern const GUID IID_IDirect3DStateBlock9;
+extern const GUID IID_IDirect3DQuery9;
+#ifdef __cplusplus
+};
+#endif
+
+typedef _COM_interface IDirect3D9 IDirect3D9;
+typedef _COM_interface IDirect3DDevice9 IDirect3DDevice9;
+typedef _COM_interface IDirect3DVolume9 IDirect3DVolume9;
+typedef _COM_interface IDirect3DSwapChain9 IDirect3DSwapChain9;
+typedef _COM_interface IDirect3DResource9 IDirect3DResource9;
+typedef _COM_interface IDirect3DSurface9 IDirect3DSurface9;
+typedef _COM_interface IDirect3DVertexBuffer9 IDirect3DVertexBuffer9;
+typedef _COM_interface IDirect3DIndexBuffer9 IDirect3DIndexBuffer9;
+typedef _COM_interface IDirect3DBaseTexture9 IDirect3DBaseTexture9;
+typedef _COM_interface IDirect3DCubeTexture9 IDirect3DCubeTexture9;
+typedef _COM_interface IDirect3DTexture9 IDirect3DTexture9;
+typedef _COM_interface IDirect3DVolumeTexture9 IDirect3DVolumeTexture9;
+typedef _COM_interface IDirect3DVertexDeclaration9 IDirect3DVertexDeclaration9;
+typedef _COM_interface IDirect3DVertexShader9 IDirect3DVertexShader9;
+typedef _COM_interface IDirect3DPixelShader9 IDirect3DPixelShader9;
+typedef _COM_interface IDirect3DStateBlock9 IDirect3DStateBlock9;
+typedef _COM_interface IDirect3DQuery9 IDirect3DQuery9;
+
+#undef INTERFACE
+#define INTERFACE IDirect3D9
+DECLARE_INTERFACE_(IDirect3D9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
+	STDMETHOD_(UINT,GetAdapterCount)(THIS) PURE;
+	STDMETHOD(GetAdapterIdentifier)(THIS_ UINT,DWORD,D3DADAPTER_IDENTIFIER9*) PURE;
+	STDMETHOD_(UINT,GetAdapterModeCount)(THIS_ UINT,D3DFORMAT) PURE;
+	STDMETHOD(EnumAdapterModes)(THIS_ UINT,D3DFORMAT,UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(CheckDeviceType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,BOOL) PURE;
+	STDMETHOD(CheckDeviceFormat)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,DWORD,D3DRESOURCETYPE,D3DFORMAT) PURE;
+	STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,BOOL,D3DMULTISAMPLE_TYPE,DWORD*) PURE;
+	STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT,D3DFORMAT) PURE;
+	STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT,D3DDEVTYPE,D3DFORMAT,D3DFORMAT) PURE;
+	STDMETHOD(GetDeviceCaps)(THIS_ UINT,D3DDEVTYPE,D3DCAPS9*) PURE;
+	STDMETHOD_(HMONITOR,GetAdapterMonitor)(THIS_ UINT) PURE;
+	STDMETHOD(CreateDevice)(THIS_ UINT,D3DDEVTYPE,HWND,DWORD,D3DPRESENT_PARAMETERS*,IDirect3DDevice9**) PURE;
+};
+typedef struct IDirect3D9 *LPDIRECT3D9, *PDIRECT3D9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3D9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3D9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3D9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3D9_RegisterSoftwareDevice(p,a)	(p)->lpVtbl->RegisterSoftwareDevice(p,a)
+#define IDirect3D9_GetAdapterCount(p)	(p)->lpVtbl->GetAdapterCount(p)
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)	(p)->lpVtbl->GetAdapterIdentifier(p,a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)	(p)->lpVtbl->GetAdapterModeCount(p,a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)	(p)->lpVtbl->EnumAdapterModes(p,a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)	(p)->lpVtbl->GetAdapterDisplayMode(p,a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)	(p)->lpVtbl->CheckDeviceType(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)	(p)->lpVtbl->CheckDeviceFormat(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)	(p)->lpVtbl->CheckDeviceMultiSampleType(p,a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)	(p)->lpVtbl->CheckDepthStencilMatch(p,a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)	(p)->lpVtbl->CheckDeviceFormatConversion(p,a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)	(p)->lpVtbl->GetDeviceCaps(p,a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)	(p)->lpVtbl->GetAdapterMonitor(p,a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateDevice(p,a,b,c,d,e,f)
+#else
+#define IDirect3D9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3D9_AddRef(p)	(p)->AddRef()
+#define IDirect3D9_Release(p)	(p)->Release()
+#define IDirect3D9_RegisterSoftwareDevice(p,a)	(p)->RegisterSoftwareDevice(a)
+#define IDirect3D9_GetAdapterCount(p)	(p)->GetAdapterCount()
+#define IDirect3D9_GetAdapterIdentifier(p,a,b,c)	(p)->GetAdapterIdentifier(a,b,c)
+#define IDirect3D9_GetAdapterModeCount(p,a,b)	(p)->GetAdapterModeCount(a,b)
+#define IDirect3D9_EnumAdapterModes(p,a,b,c,d)	(p)->EnumAdapterModes(a,b,c,d)
+#define IDirect3D9_GetAdapterDisplayMode(p,a,b)	(p)->GetAdapterDisplayMode(a,b)
+#define IDirect3D9_CheckDeviceType(p,a,b,c,d,e)	(p)->CheckDeviceType(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormat(p,a,b,c,d,e,f)	(p)->CheckDeviceFormat(a,b,c,d,e,f)
+#define IDirect3D9_CheckDeviceMultiSampleType(p,a,b,c,d,e,f)	(p)->CheckDeviceMultiSampleType(a,b,c,d,e,f)
+#define IDirect3D9_CheckDepthStencilMatch(p,a,b,c,d,e)	(p)->CheckDepthStencilMatch(a,b,c,d,e)
+#define IDirect3D9_CheckDeviceFormatConversion(p,a,b,c,d)	(p)->CheckDeviceFormatConversion(a,b,c,d)
+#define IDirect3D9_GetDeviceCaps(p,a,b,c)	(p)->GetDeviceCaps(a,b,c)
+#define IDirect3D9_GetAdapterMonitor(p,a)	(p)->GetAdapterMonitor(a)
+#define IDirect3D9_CreateDevice(p,a,b,c,d,e,f)	(p)->CreateDevice(a,b,c,d,e,f)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DDevice9
+DECLARE_INTERFACE_(IDirect3DDevice9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(TestCooperativeLevel)(THIS) PURE;
+	STDMETHOD_(UINT,GetAvailableTextureMem)(THIS) PURE;
+	STDMETHOD(EvictManagedResources)(THIS) PURE;
+	STDMETHOD(GetDirect3D)(THIS_ IDirect3D9**) PURE;
+	STDMETHOD(GetDeviceCaps)(THIS_ D3DCAPS9*) PURE;
+	STDMETHOD(GetDisplayMode)(THIS_ UINT,D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetCreationParameters)(THIS_ D3DDEVICE_CREATION_PARAMETERS*) PURE;
+	STDMETHOD(SetCursorProperties)(THIS_ UINT,UINT,IDirect3DSurface9*) PURE;
+	STDMETHOD_(void,SetCursorPosition)(THIS_ int,int,DWORD) PURE;
+	STDMETHOD_(BOOL,ShowCursor)(THIS_ BOOL) PURE;
+	STDMETHOD(CreateAdditionalSwapChain)(THIS_ D3DPRESENT_PARAMETERS*,IDirect3DSwapChain9**) PURE;
+	STDMETHOD(GetSwapChain)(THIS_ UINT,IDirect3DSwapChain9**) PURE;
+	STDMETHOD_(UINT,GetNumberOfSwapChains)(THIS) PURE;
+	STDMETHOD(Reset)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
+	STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*) PURE;
+	STDMETHOD(GetBackBuffer)(THIS_ UINT,UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
+	STDMETHOD(GetRasterStatus)(THIS_ UINT,D3DRASTER_STATUS*) PURE;
+	STDMETHOD(SetDialogBoxMode)(THIS_ BOOL) PURE;
+	STDMETHOD_(void,SetGammaRamp)(THIS_ UINT,DWORD,CONST D3DGAMMARAMP*) PURE;
+	STDMETHOD_(void,GetGammaRamp)(THIS_ UINT,D3DGAMMARAMP*) PURE;
+	STDMETHOD(CreateTexture)(THIS_ UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DTexture9**,HANDLE*) PURE;
+	STDMETHOD(CreateVolumeTexture)(THIS_ UINT,UINT,UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DVolumeTexture9**,HANDLE*) PURE;
+	STDMETHOD(CreateCubeTexture)(THIS_ UINT,UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DCubeTexture9**, HANDLE*) PURE;
+	STDMETHOD(CreateVertexBuffer)(THIS_ UINT,DWORD,DWORD,D3DPOOL,IDirect3DVertexBuffer9**, HANDLE*) PURE;
+	STDMETHOD(CreateIndexBuffer)(THIS_ UINT,DWORD,D3DFORMAT,D3DPOOL,IDirect3DIndexBuffer9**,HANDLE*) PURE;
+	STDMETHOD(CreateRenderTarget)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(CreateDepthStencilSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DMULTISAMPLE_TYPE,DWORD,BOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(UpdateSurface)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST POINT*) PURE;
+	STDMETHOD(UpdateTexture)(THIS_ IDirect3DBaseTexture9*,IDirect3DBaseTexture9*) PURE;
+	STDMETHOD(GetRenderTargetData)(THIS_ IDirect3DSurface9*,IDirect3DSurface9*) PURE;
+	STDMETHOD(GetFrontBufferData)(THIS_ UINT,IDirect3DSurface9*) PURE;
+	STDMETHOD(StretchRect)(THIS_ IDirect3DSurface9*,CONST RECT*,IDirect3DSurface9*,CONST RECT*,D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD(ColorFill)(THIS_ IDirect3DSurface9*,CONST RECT*,D3DCOLOR) PURE;
+	STDMETHOD(CreateOffscreenPlainSurface)(THIS_ UINT,UINT,D3DFORMAT,D3DPOOL,IDirect3DSurface9**,HANDLE*) PURE;
+	STDMETHOD(SetRenderTarget)(THIS_ DWORD,IDirect3DSurface9*) PURE;
+	STDMETHOD(GetRenderTarget)(THIS_ DWORD,IDirect3DSurface9**) PURE;
+	STDMETHOD(SetDepthStencilSurface)(THIS_ IDirect3DSurface9*) PURE;
+	STDMETHOD(GetDepthStencilSurface)(THIS_ IDirect3DSurface9**) PURE;
+	STDMETHOD(BeginScene)(THIS) PURE;
+	STDMETHOD(EndScene)(THIS) PURE;
+	STDMETHOD(Clear)(THIS_ DWORD,CONST D3DRECT*,DWORD,D3DCOLOR,float,DWORD) PURE;
+	STDMETHOD(SetTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
+	STDMETHOD(GetTransform)(THIS_ D3DTRANSFORMSTATETYPE,D3DMATRIX*) PURE;
+	STDMETHOD(MultiplyTransform)(THIS_ D3DTRANSFORMSTATETYPE,CONST D3DMATRIX*) PURE;
+	STDMETHOD(SetViewport)(THIS_ CONST D3DVIEWPORT9*) PURE;
+	STDMETHOD(GetViewport)(THIS_ D3DVIEWPORT9*) PURE;
+	STDMETHOD(SetMaterial)(THIS_ CONST D3DMATERIAL9*) PURE;
+	STDMETHOD(GetMaterial)(THIS_ D3DMATERIAL9*) PURE;
+	STDMETHOD(SetLight)(THIS_ DWORD,CONST D3DLIGHT9*) PURE;
+	STDMETHOD(GetLight)(THIS_ DWORD,D3DLIGHT9*) PURE;
+	STDMETHOD(LightEnable)(THIS_ DWORD,BOOL) PURE;
+	STDMETHOD(GetLightEnable)(THIS_ DWORD,BOOL*) PURE;
+	STDMETHOD(SetClipPlane)(THIS_ DWORD,CONST float*) PURE;
+	STDMETHOD(GetClipPlane)(THIS_ DWORD,float*) PURE;
+	STDMETHOD(SetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD) PURE;
+	STDMETHOD(GetRenderState)(THIS_ D3DRENDERSTATETYPE,DWORD*) PURE;
+	STDMETHOD(CreateStateBlock)(THIS_ D3DSTATEBLOCKTYPE,IDirect3DStateBlock9**) PURE;
+	STDMETHOD(BeginStateBlock)(THIS) PURE;
+	STDMETHOD(EndStateBlock)(THIS_ IDirect3DStateBlock9**) PURE;
+	STDMETHOD(SetClipStatus)(THIS_ CONST D3DCLIPSTATUS9*) PURE;
+	STDMETHOD(GetClipStatus)(THIS_ D3DCLIPSTATUS9*) PURE;
+	STDMETHOD(GetTexture)(THIS_ DWORD,IDirect3DBaseTexture9**) PURE;
+	STDMETHOD(SetTexture)(THIS_ DWORD,IDirect3DBaseTexture9*) PURE;
+	STDMETHOD(GetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD*) PURE;
+	STDMETHOD(SetTextureStageState)(THIS_ DWORD,D3DTEXTURESTAGESTATETYPE,DWORD) PURE;
+	STDMETHOD(GetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD*) PURE;
+	STDMETHOD(SetSamplerState)(THIS_ DWORD,D3DSAMPLERSTATETYPE,DWORD) PURE;
+	STDMETHOD(ValidateDevice)(THIS_ DWORD*) PURE;
+	STDMETHOD(SetPaletteEntries)(THIS_ UINT,CONST PALETTEENTRY*) PURE;
+	STDMETHOD(GetPaletteEntries)(THIS_ UINT,PALETTEENTRY*) PURE;
+	STDMETHOD(SetCurrentTexturePalette)(THIS_ UINT) PURE;
+	STDMETHOD(GetCurrentTexturePalette)(THIS_ UINT*) PURE;
+	STDMETHOD(SetScissorRect)(THIS_ CONST RECT*) PURE;
+	STDMETHOD(GetScissorRect)(THIS_ RECT*) PURE;
+	STDMETHOD(SetSoftwareVertexProcessing)(THIS_ BOOL) PURE;
+	STDMETHOD_(BOOL,GetSoftwareVertexProcessing)(THIS) PURE;
+	STDMETHOD(SetNPatchMode)(THIS_ float) PURE;
+	STDMETHOD_(float,GetNPatchMode)(THIS) PURE;
+	STDMETHOD(DrawPrimitive)(THIS_ D3DPRIMITIVETYPE,UINT,UINT) PURE;
+	STDMETHOD(DrawIndexedPrimitive)(THIS_ D3DPRIMITIVETYPE,INT,UINT,UINT,UINT,UINT) PURE;
+	STDMETHOD(DrawPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,CONST void*,UINT) PURE;
+	STDMETHOD(DrawIndexedPrimitiveUP)(THIS_ D3DPRIMITIVETYPE,UINT,UINT,UINT,CONST void*,D3DFORMAT,CONST void*,UINT) PURE;
+	STDMETHOD(ProcessVertices)(THIS_ UINT,UINT,UINT,IDirect3DVertexBuffer9*,IDirect3DVertexDeclaration9*,DWORD) PURE;
+	STDMETHOD(CreateVertexDeclaration)(THIS_ CONST D3DVERTEXELEMENT9*,IDirect3DVertexDeclaration9**) PURE;
+	STDMETHOD(SetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9*) PURE;
+	STDMETHOD(GetVertexDeclaration)(THIS_ IDirect3DVertexDeclaration9**) PURE;
+	STDMETHOD(SetFVF)(THIS_ DWORD) PURE;
+	STDMETHOD(GetFVF)(THIS_ DWORD*) PURE;
+	STDMETHOD(CreateVertexShader)(THIS_ CONST DWORD*,IDirect3DVertexShader9**) PURE;
+	STDMETHOD(SetVertexShader)(THIS_ IDirect3DVertexShader9*) PURE;
+	STDMETHOD(GetVertexShader)(THIS_ IDirect3DVertexShader9**) PURE;
+	STDMETHOD(SetVertexShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
+	STDMETHOD(SetVertexShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
+	STDMETHOD(SetVertexShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
+	STDMETHOD(GetVertexShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
+	STDMETHOD(SetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9*,UINT,UINT) PURE;
+	STDMETHOD(GetStreamSource)(THIS_ UINT,IDirect3DVertexBuffer9**,UINT*,UINT*) PURE;
+	STDMETHOD(SetStreamSourceFreq)(THIS_ UINT,UINT) PURE;
+	STDMETHOD(GetStreamSourceFreq)(THIS_ UINT,UINT*) PURE;
+	STDMETHOD(SetIndices)(THIS_ IDirect3DIndexBuffer9*) PURE;
+	STDMETHOD(GetIndices)(THIS_ IDirect3DIndexBuffer9**) PURE;
+	STDMETHOD(CreatePixelShader)(THIS_ CONST DWORD*,IDirect3DPixelShader9**) PURE;
+	STDMETHOD(SetPixelShader)(THIS_ IDirect3DPixelShader9*) PURE;
+	STDMETHOD(GetPixelShader)(THIS_ IDirect3DPixelShader9**) PURE;
+	STDMETHOD(SetPixelShaderConstantF)(THIS_ UINT,CONST float*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantF)(THIS_ UINT,float*,UINT) PURE;
+	STDMETHOD(SetPixelShaderConstantI)(THIS_ UINT,CONST int*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantI)(THIS_ UINT,int*,UINT) PURE;
+	STDMETHOD(SetPixelShaderConstantB)(THIS_ UINT,CONST BOOL*,UINT) PURE;
+	STDMETHOD(GetPixelShaderConstantB)(THIS_ UINT,BOOL*,UINT) PURE;
+	STDMETHOD(DrawRectPatch)(THIS_ UINT,CONST float*,CONST D3DRECTPATCH_INFO*) PURE;
+	STDMETHOD(DrawTriPatch)(THIS_ UINT,CONST float*,CONST D3DTRIPATCH_INFO*) PURE;
+	STDMETHOD(DeletePatch)(THIS_ UINT) PURE;
+	STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE,IDirect3DQuery9**) PURE;
+};
+typedef struct IDirect3DDevice9 *LPDIRECT3DDEVICE9, *PDIRECT3DDEVICE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DDevice9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DDevice9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DDevice9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DDevice9_TestCooperativeLevel(p)	(p)->lpVtbl->TestCooperativeLevel(p)
+#define IDirect3DDevice9_GetAvailableTextureMem(p)	(p)->lpVtbl->GetAvailableTextureMem(p)
+#define IDirect3DDevice9_EvictManagedResources(p)	(p)->lpVtbl->EvictManagedResources(p)
+#define IDirect3DDevice9_GetDirect3D(p,a)	(p)->lpVtbl->GetDirect3D(p,a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)	(p)->lpVtbl->GetDeviceCaps(p,a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)	(p)->lpVtbl->GetDisplayMode(p,a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)	(p)->lpVtbl->GetCreationParameters(p,a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)	(p)->lpVtbl->SetCursorProperties(p,a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)	(p)->lpVtbl->SetCursorPosition(p,a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)	(p)->lpVtbl->ShowCursor(p,a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)	(p)->lpVtbl->CreateAdditionalSwapChain(p,a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)	(p)->lpVtbl->GetSwapChain(p,a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)	(p)->lpVtbl->GetNumberOfSwapChains(p)
+#define IDirect3DDevice9_Reset(p,a)	(p)->lpVtbl->Reset(p,a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)	(p)->lpVtbl->Present(p,a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)	(p)->lpVtbl->GetBackBuffer(p,a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)	(p)->lpVtbl->GetRasterStatus(p,a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)	(p)->lpVtbl->SetDialogBoxMode(p,a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)	(p)->lpVtbl->SetGammaRamp(p,a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)	(p)->lpVtbl->GetGammaRamp(p,a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateTexture(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)	(p)->lpVtbl->CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)	(p)->lpVtbl->CreateCubeTexture(p,a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateVertexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateIndexBuffer(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateRenderTarget(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)	(p)->lpVtbl->UpdateSurface(p,a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)	(p)->lpVtbl->UpdateTexture(p,a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)	(p)->lpVtbl->GetRenderTargetData(p,a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)	(p)->lpVtbl->GetFrontBufferData(p,a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)	(p)->lpVtbl->StretchRect(p,a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)	(p)->lpVtbl->ColorFill(p,a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)	(p)->lpVtbl->CreateOffscreenPlainSurface(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)	(p)->lpVtbl->SetRenderTarget(p,a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)	(p)->lpVtbl->GetRenderTarget(p,a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)	(p)->lpVtbl->SetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)	(p)->lpVtbl->GetDepthStencilSurface(p,a)
+#define IDirect3DDevice9_BeginScene(p)	(p)->lpVtbl->BeginScene(p)
+#define IDirect3DDevice9_EndScene(p)	(p)->lpVtbl->EndScene(p)
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)	(p)->lpVtbl->Clear(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)	(p)->lpVtbl->SetTransform(p,a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)	(p)->lpVtbl->GetTransform(p,a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)	(p)->lpVtbl->MultiplyTransform(p,a,b)
+#define IDirect3DDevice9_SetViewport(p,a)	(p)->lpVtbl->SetViewport(p,a)
+#define IDirect3DDevice9_GetViewport(p,a)	(p)->lpVtbl->GetViewport(p,a)
+#define IDirect3DDevice9_SetMaterial(p,a)	(p)->lpVtbl->SetMaterial(p,a)
+#define IDirect3DDevice9_GetMaterial(p,a)	(p)->lpVtbl->GetMaterial(p,a)
+#define IDirect3DDevice9_SetLight(p,a,b)	(p)->lpVtbl->SetLight(p,a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)	(p)->lpVtbl->GetLight(p,a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)	(p)->lpVtbl->LightEnable(p,a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)	(p)->lpVtbl->GetLightEnable(p,a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)	(p)->lpVtbl->SetClipPlane(p,a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)	(p)->lpVtbl->GetClipPlane(p,a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)	(p)->lpVtbl->SetRenderState(p,a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)	(p)->lpVtbl->GetRenderState(p,a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)	(p)->lpVtbl->CreateStateBlock(p,a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)	(p)->lpVtbl->BeginStateBlock(p)
+#define IDirect3DDevice9_EndStateBlock(p,a)	(p)->lpVtbl->EndStateBlock(p,a)
+#define IDirect3DDevice9_SetClipStatus(p,a)	(p)->lpVtbl->SetClipStatus(p,a)
+#define IDirect3DDevice9_GetClipStatus(p,a)	(p)->lpVtbl->GetClipStatus(p,a)
+#define IDirect3DDevice9_GetTexture(p,a,b)	(p)->lpVtbl->GetTexture(p,a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)	(p)->lpVtbl->SetTexture(p,a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)	(p)->lpVtbl->GetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)	(p)->lpVtbl->SetTextureStageState(p,a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)	(p)->lpVtbl->GetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)	(p)->lpVtbl->SetSamplerState(p,a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)	(p)->lpVtbl->ValidateDevice(p,a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)	(p)->lpVtbl->SetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)	(p)->lpVtbl->GetPaletteEntries(p,a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)	(p)->lpVtbl->SetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)	(p)->lpVtbl->GetCurrentTexturePalette(p,a)
+#define IDirect3DDevice9_SetScissorRect(p,a)	(p)->lpVtbl->SetScissorRect(p,a)
+#define IDirect3DDevice9_GetScissorRect(p,a)	(p)->lpVtbl->GetScissorRect(p,a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)	(p)->lpVtbl->SetSoftwareVertexProcessing(p,a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)	(p)->lpVtbl->GetSoftwareVertexProcessing(p)
+#define IDirect3DDevice9_SetNPatchMode(p,a)	(p)->lpVtbl->SetNPatchMode(p,a)
+#define IDirect3DDevice9_GetNPatchMode(p)	(p)->lpVtbl->GetNPatchMode(p)
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)	(p)->lpVtbl->DrawPrimitive(p,a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)	(p)->lpVtbl->DrawIndexedPrimitive(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)	(p)->lpVtbl->DrawPrimitiveUP(p,a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)	(p)->lpVtbl->DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)	(p)->lpVtbl->ProcessVertices(p,a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)	(p)->lpVtbl->CreateVertexDeclaration(p,a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)	(p)->lpVtbl->SetVertexDeclaration(p,a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)	(p)->lpVtbl->GetVertexDeclaration(p,a)
+#define IDirect3DDevice9_SetFVF(p,a)	(p)->lpVtbl->SetFVF(p,a)
+#define IDirect3DDevice9_GetFVF(p,a)	(p)->lpVtbl->GetFVF(p,a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)	(p)->lpVtbl->CreateVertexShader(p,a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)	(p)->lpVtbl->SetVertexShader(p,a)
+#define IDirect3DDevice9_GetVertexShader(p,a)	(p)->lpVtbl->GetVertexShader(p,a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)	(p)->lpVtbl->SetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)	(p)->lpVtbl->GetVertexShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)	(p)->lpVtbl->SetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)	(p)->lpVtbl->GetStreamSource(p,a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)	(p)->lpVtbl->SetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)	(p)->lpVtbl->GetStreamSourceFreq(p,a,b)
+#define IDirect3DDevice9_SetIndices(p,a)	(p)->lpVtbl->SetIndices(p,a)
+#define IDirect3DDevice9_GetIndices(p,a)	(p)->lpVtbl->GetIndices(p,a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)	(p)->lpVtbl->CreatePixelShader(p,a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)	(p)->lpVtbl->SetPixelShader(p,a)
+#define IDirect3DDevice9_GetPixelShader(p,a)	(p)->lpVtbl->GetPixelShader(p,a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantF(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantI(p,a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)	(p)->lpVtbl->SetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)	(p)->lpVtbl->GetPixelShaderConstantB(p,a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)	(p)->lpVtbl->DrawRectPatch(p,a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)	(p)->lpVtbl->DrawTriPatch(p,a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)	(p)->lpVtbl->DeletePatch(p,a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)	(p)->lpVtbl->CreateQuery(p,a,b)
+#else
+#define IDirect3DDevice9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DDevice9_AddRef(p)	(p)->AddRef()
+#define IDirect3DDevice9_Release(p)	(p)->Release()
+#define IDirect3DDevice9_TestCooperativeLevel(p)	(p)->TestCooperativeLevel()
+#define IDirect3DDevice9_GetAvailableTextureMem(p)	(p)->GetAvailableTextureMem()
+#define IDirect3DDevice9_EvictManagedResources(p)	(p)->EvictManagedResources()
+#define IDirect3DDevice9_GetDirect3D(p,a)	(p)->GetDirect3D(a)
+#define IDirect3DDevice9_GetDeviceCaps(p,a)	(p)->GetDeviceCaps(a)
+#define IDirect3DDevice9_GetDisplayMode(p,a,b)	(p)->GetDisplayMode(a,b)
+#define IDirect3DDevice9_GetCreationParameters(p,a)	(p)->GetCreationParameters(a)
+#define IDirect3DDevice9_SetCursorProperties(p,a,b,c)	(p)->SetCursorProperties(a,b,c)
+#define IDirect3DDevice9_SetCursorPosition(p,a,b,c)	(p)->SetCursorPosition(a,b,c)
+#define IDirect3DDevice9_ShowCursor(p,a)	(p)->ShowCursor(a)
+#define IDirect3DDevice9_CreateAdditionalSwapChain(p,a,b)	(p)->CreateAdditionalSwapChain(a,b)
+#define IDirect3DDevice9_GetSwapChain(p,a,b)	(p)->GetSwapChain(a,b)
+#define IDirect3DDevice9_GetNumberOfSwapChains(p)	(p)->GetNumberOfSwapChains()
+#define IDirect3DDevice9_Reset(p,a)	(p)->Reset(a)
+#define IDirect3DDevice9_Present(p,a,b,c,d)	(p)->Present(a,b,c,d)
+#define IDirect3DDevice9_GetBackBuffer(p,a,b,c,d)	(p)->GetBackBuffer(a,b,c,d)
+#define IDirect3DDevice9_GetRasterStatus(p,a,b)	(p)->GetRasterStatus(a,b)
+#define IDirect3DDevice9_SetDialogBoxMode(p,a)	(p)->SetDialogBoxMode(a)
+#define IDirect3DDevice9_SetGammaRamp(p,a,b,c)	(p)->SetGammaRamp(a,b,c)
+#define IDirect3DDevice9_GetGammaRamp(p,a,b)	(p)->GetGammaRamp(a,b)
+#define IDirect3DDevice9_CreateTexture(p,a,b,c,d,e,f,g,h)	(p)->CreateTexture(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateVolumeTexture(p,a,b,c,d,e,f,g,h,i)	(p)->CreateVolumeTexture(a,b,c,d,e,f,g,h,i)
+#define IDirect3DDevice9_CreateCubeTexture(p,a,b,c,d,e,f,g)	(p)->CreateCubeTexture(a,b,c,d,e,f,g)
+#define IDirect3DDevice9_CreateVertexBuffer(p,a,b,c,d,e,f)	(p)->CreateVertexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateIndexBuffer(p,a,b,c,d,e,f)	(p)->CreateIndexBuffer(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateRenderTarget(p,a,b,c,d,e,f,g,h)	(p)->CreateRenderTarget(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_CreateDepthStencilSurface(p,a,b,c,d,e,f,g,h)	(p)->CreateDepthStencilSurface(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_UpdateSurface(p,a,b,c,d)	(p)->UpdateSurface(a,b,c,d)
+#define IDirect3DDevice9_UpdateTexture(p,a,b)	(p)->UpdateTexture(a,b)
+#define IDirect3DDevice9_GetRenderTargetData(p,a,b)	(p)->GetRenderTargetData(a,b)
+#define IDirect3DDevice9_GetFrontBufferData(p,a,b)	(p)->GetFrontBufferData(a,b)
+#define IDirect3DDevice9_StretchRect(p,a,b,c,d,e)	(p)->StretchRect(a,b,c,d,e)
+#define IDirect3DDevice9_ColorFill(p,a,b,c)	(p)->ColorFill(a,b,c)
+#define IDirect3DDevice9_CreateOffscreenPlainSurface(p,a,b,c,d,e,f)	(p)->CreateOffscreenPlainSurface(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetRenderTarget(p,a,b)	(p)->SetRenderTarget(a,b)
+#define IDirect3DDevice9_GetRenderTarget(p,a,b)	(p)->GetRenderTarget(a,b)
+#define IDirect3DDevice9_SetDepthStencilSurface(p,a)	(p)->SetDepthStencilSurface(a)
+#define IDirect3DDevice9_GetDepthStencilSurface(p,a)	(p)->GetDepthStencilSurface(a)
+#define IDirect3DDevice9_BeginScene(p)	(p)->BeginScene()
+#define IDirect3DDevice9_EndScene(p)	(p)->EndScene()
+#define IDirect3DDevice9_Clear(p,a,b,c,d,e,f)	(p)->Clear(a,b,c,d,e,f)
+#define IDirect3DDevice9_SetTransform(p,a,b)	(p)->SetTransform(a,b)
+#define IDirect3DDevice9_GetTransform(p,a,b)	(p)->GetTransform(a,b)
+#define IDirect3DDevice9_MultiplyTransform(p,a,b)	(p)->MultiplyTransform(a,b)
+#define IDirect3DDevice9_SetViewport(p,a)	(p)->SetViewport(a)
+#define IDirect3DDevice9_GetViewport(p,a)	(p)->GetViewport(a)
+#define IDirect3DDevice9_SetMaterial(p,a)	(p)->SetMaterial(a)
+#define IDirect3DDevice9_GetMaterial(p,a)	(p)->GetMaterial(a)
+#define IDirect3DDevice9_SetLight(p,a,b)	(p)->SetLight(a,b)
+#define IDirect3DDevice9_GetLight(p,a,b)	(p)->GetLight(a,b)
+#define IDirect3DDevice9_LightEnable(p,a,b)	(p)->LightEnable(a,b)
+#define IDirect3DDevice9_GetLightEnable(p,a,b)	(p)->GetLightEnable(a,b)
+#define IDirect3DDevice9_SetClipPlane(p,a,b)	(p)->SetClipPlane(a,b)
+#define IDirect3DDevice9_GetClipPlane(p,a,b)	(p)->GetClipPlane(a,b)
+#define IDirect3DDevice9_SetRenderState(p,a,b)	(p)->SetRenderState(a,b)
+#define IDirect3DDevice9_GetRenderState(p,a,b)	(p)->GetRenderState(a,b)
+#define IDirect3DDevice9_CreateStateBlock(p,a,b)	(p)->CreateStateBlock(a,b)
+#define IDirect3DDevice9_BeginStateBlock(p)	(p)->BeginStateBlock()
+#define IDirect3DDevice9_EndStateBlock(p,a)	(p)->EndStateBlock(a)
+#define IDirect3DDevice9_SetClipStatus(p,a)	(p)->SetClipStatus(a)
+#define IDirect3DDevice9_GetClipStatus(p,a)	(p)->GetClipStatus(a)
+#define IDirect3DDevice9_GetTexture(p,a,b)	(p)->GetTexture(a,b)
+#define IDirect3DDevice9_SetTexture(p,a,b)	(p)->SetTexture(a,b)
+#define IDirect3DDevice9_GetTextureStageState(p,a,b,c)	(p)->GetTextureStageState(a,b,c)
+#define IDirect3DDevice9_SetTextureStageState(p,a,b,c)	(p)->SetTextureStageState(a,b,c)
+#define IDirect3DDevice9_GetSamplerState(p,a,b,c)	(p)->GetSamplerState(a,b,c)
+#define IDirect3DDevice9_SetSamplerState(p,a,b,c)	(p)->SetSamplerState(a,b,c)
+#define IDirect3DDevice9_ValidateDevice(p,a)	(p)->ValidateDevice(a)
+#define IDirect3DDevice9_SetPaletteEntries(p,a,b)	(p)->SetPaletteEntries(a,b)
+#define IDirect3DDevice9_GetPaletteEntries(p,a,b)	(p)->GetPaletteEntries(a,b)
+#define IDirect3DDevice9_SetCurrentTexturePalette(p,a)	(p)->SetCurrentTexturePalette(a)
+#define IDirect3DDevice9_GetCurrentTexturePalette(p,a)	(p)->GetCurrentTexturePalette(a)
+#define IDirect3DDevice9_SetScissorRect(p,a)	(p)->SetScissorRect(a)
+#define IDirect3DDevice9_GetScissorRect(p,a)	(p)->GetScissorRect(a)
+#define IDirect3DDevice9_SetSoftwareVertexProcessing(p,a)	(p)->SetSoftwareVertexProcessing(a)
+#define IDirect3DDevice9_GetSoftwareVertexProcessing(p)	(p)->GetSoftwareVertexProcessing()
+#define IDirect3DDevice9_SetNPatchMode(p,a)	(p)->SetNPatchMode(a)
+#define IDirect3DDevice9_GetNPatchMode(p)	(p)->GetNPatchMode()
+#define IDirect3DDevice9_DrawPrimitive(p,a,b,c)	(p)->DrawPrimitive(a,b,c)
+#define IDirect3DDevice9_DrawIndexedPrimitive(p,a,b,c,d,e,f)	(p)->DrawIndexedPrimitive(a,b,c,d,e,f)
+#define IDirect3DDevice9_DrawPrimitiveUP(p,a,b,c,d)	(p)->DrawPrimitiveUP(a,b,c,d)
+#define IDirect3DDevice9_DrawIndexedPrimitiveUP(p,a,b,c,d,e,f,g,h)	(p)->DrawIndexedPrimitiveUP(a,b,c,d,e,f,g,h)
+#define IDirect3DDevice9_ProcessVertices(p,a,b,c,d,e,f)	(p)->ProcessVertices(a,b,c,d,e,f)
+#define IDirect3DDevice9_CreateVertexDeclaration(p,a,b)	(p)->CreateVertexDeclaration(a,b)
+#define IDirect3DDevice9_SetVertexDeclaration(p,a)	(p)->SetVertexDeclaration(a)
+#define IDirect3DDevice9_GetVertexDeclaration(p,a)	(p)->GetVertexDeclaration(a)
+#define IDirect3DDevice9_SetFVF(p,a)	(p)->SetFVF(a)
+#define IDirect3DDevice9_GetFVF(p,a)	(p)->GetFVF(a)
+#define IDirect3DDevice9_CreateVertexShader(p,a,b)	(p)->CreateVertexShader(a,b)
+#define IDirect3DDevice9_SetVertexShader(p,a)	(p)->SetVertexShader(a)
+#define IDirect3DDevice9_GetVertexShader(p,a)	(p)->GetVertexShader(a)
+#define IDirect3DDevice9_SetVertexShaderConstantF(p,a,b,c)	(p)->SetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantF(p,a,b,c)	(p)->GetVertexShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantI(p,a,b,c)	(p)->SetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantI(p,a,b,c)	(p)->GetVertexShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetVertexShaderConstantB(p,a,b,c)	(p)->SetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetVertexShaderConstantB(p,a,b,c)	(p)->GetVertexShaderConstantB(a,b,c)
+#define IDirect3DDevice9_SetStreamSource(p,a,b,c,d)	(p)->SetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_GetStreamSource(p,a,b,c,d)	(p)->GetStreamSource(a,b,c,d)
+#define IDirect3DDevice9_SetStreamSourceFreq(p,a,b)	(p)->SetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_GetStreamSourceFreq(p,a,b)	(p)->GetStreamSourceFreq(a,b)
+#define IDirect3DDevice9_SetIndices(p,a)	(p)->SetIndices(a)
+#define IDirect3DDevice9_GetIndices(p,a)	(p)->GetIndices(a)
+#define IDirect3DDevice9_CreatePixelShader(p,a,b)	(p)->CreatePixelShader(a,b)
+#define IDirect3DDevice9_SetPixelShader(p,a)	(p)->SetPixelShader(a)
+#define IDirect3DDevice9_GetPixelShader(p,a)	(p)->GetPixelShader(a)
+#define IDirect3DDevice9_SetPixelShaderConstantF(p,a,b,c)	(p)->SetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantF(p,a,b,c)	(p)->GetPixelShaderConstantF(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantI(p,a,b,c)	(p)->SetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantI(p,a,b,c)	(p)->GetPixelShaderConstantI(a,b,c)
+#define IDirect3DDevice9_SetPixelShaderConstantB(p,a,b,c)	(p)->SetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_GetPixelShaderConstantB(p,a,b,c)	(p)->GetPixelShaderConstantB(a,b,c)
+#define IDirect3DDevice9_DrawRectPatch(p,a,b,c)	(p)->DrawRectPatch(a,b,c)
+#define IDirect3DDevice9_DrawTriPatch(p,a,b,c)	(p)->DrawTriPatch(a,b,c)
+#define IDirect3DDevice9_DeletePatch(p,a)	(p)->DeletePatch(a)
+#define IDirect3DDevice9_CreateQuery(p,a,b)	(p)->CreateQuery(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolume9
+DECLARE_INTERFACE_(IDirect3DVolume9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DVOLUME_DESC*) PURE;
+	STDMETHOD(LockBox)(THIS_ D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
+	STDMETHOD(UnlockBox)(THIS) PURE;
+};
+typedef struct IDirect3DVolume9 *LPDIRECT3DVOLUME9, *PDIRECT3DVOLUME9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolume9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolume9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVolume9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVolume9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolume9_GetContainer(p,a,b)	(p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DVolume9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)	(p)->lpVtbl->LockBox(p,a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)	(p)->lpVtbl->UnlockBox(p)
+#else
+#define IDirect3DVolume9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVolume9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVolume9_Release(p)	(p)->Release()
+#define IDirect3DVolume9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVolume9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolume9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVolume9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVolume9_GetContainer(p,a,b)	(p)->GetContainer(a,b)
+#define IDirect3DVolume9_GetDesc(p,a)	(p)->GetDesc(a)
+#define IDirect3DVolume9_LockBox(p,a,b,c)	(p)->LockBox(a,b,c)
+#define IDirect3DVolume9_UnlockBox(p)	(p)->UnlockBox()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSwapChain9
+DECLARE_INTERFACE_(IDirect3DSwapChain9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(Present)(THIS_ CONST RECT*,CONST RECT*,HWND,CONST RGNDATA*,DWORD) PURE;
+	STDMETHOD(GetFrontBufferData)(THIS_ IDirect3DSurface9*) PURE;
+	STDMETHOD(GetBackBuffer)(THIS_ UINT,D3DBACKBUFFER_TYPE,IDirect3DSurface9**) PURE;
+	STDMETHOD(GetRasterStatus)(THIS_ D3DRASTER_STATUS*) PURE;
+	STDMETHOD(GetDisplayMode)(THIS_ D3DDISPLAYMODE*) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetPresentParameters)(THIS_ D3DPRESENT_PARAMETERS*) PURE;
+};
+typedef struct IDirect3DSwapChain9 *LPDIRECT3DSWAPCHAIN9, *PDIRECT3DSWAPCHAIN9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSwapChain9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DSwapChain9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)	(p)->lpVtbl->Present(p,a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)	(p)->lpVtbl->GetFrontBufferData(p,a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)	(p)->lpVtbl->GetBackBuffer(p,a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)	(p)->lpVtbl->GetRasterStatus(p,a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)	(p)->lpVtbl->GetDisplayMode(p,a)
+#define IDirect3DSwapChain9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)	(p)->lpVtbl->GetPresentParameters(p,a)
+#else
+#define IDirect3DSwapChain9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DSwapChain9_AddRef(p)	(p)->AddRef()
+#define IDirect3DSwapChain9_Release(p)	(p)->Release()
+#define IDirect3DSwapChain9_Present(p,a,b,c,d,e)	(p)->Present(a,b,c,d,e)
+#define IDirect3DSwapChain9_GetFrontBufferData(p,a)	(p)->GetFrontBufferData(a)
+#define IDirect3DSwapChain9_GetBackBuffer(p,a,b,c)	(p)->GetBackBuffer(a,b,c)
+#define IDirect3DSwapChain9_GetRasterStatus(p,a)	(p)->GetRasterStatus(a)
+#define IDirect3DSwapChain9_GetDisplayMode(p,a)	(p)->GetDisplayMode(a)
+#define IDirect3DSwapChain9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DSwapChain9_GetPresentParameters(p,a)	(p)->GetPresentParameters(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DResource9
+DECLARE_INTERFACE_(IDirect3DResource9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+};
+typedef struct IDirect3DResource9 *LPDIRECT3DRESOURCE9, *PDIRECT3DRESOURCE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DResource9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DResource9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DResource9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DResource9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DResource9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DResource9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DResource9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DResource9_GetType(p)	(p)->lpVtbl->GetType(p)
+#else
+#define IDirect3DResource9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DResource9_AddRef(p)	(p)->AddRef()
+#define IDirect3DResource9_Release(p)	(p)->Release()
+#define IDirect3DResource9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DResource9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DResource9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DResource9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DResource9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DResource9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DResource9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DResource9_GetType(p)	(p)->GetType()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DSurface9
+DECLARE_INTERFACE_(IDirect3DSurface9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(GetContainer)(THIS_ REFIID,void**) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DSURFACE_DESC*) PURE;
+	STDMETHOD(LockRect)(THIS_ D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
+	STDMETHOD(UnlockRect)(THIS) PURE;
+	STDMETHOD(GetDC)(THIS_ HDC*) PURE;
+	STDMETHOD(ReleaseDC)(THIS_ HDC) PURE;
+};
+typedef struct IDirect3DSurface9 *LPDIRECT3DSURFACE9, *PDIRECT3DSURFACE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DSurface9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DSurface9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DSurface9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DSurface9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DSurface9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DSurface9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DSurface9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DSurface9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DSurface9_GetContainer(p,a,b)	(p)->lpVtbl->GetContainer(p,a,b)
+#define IDirect3DSurface9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)	(p)->lpVtbl->LockRect(p,a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)	(p)->lpVtbl->UnlockRect(p)
+#define IDirect3DSurface9_GetDC(p,a)	(p)->lpVtbl->GetDC(p,a)
+#define IDirect3DSurface9_ReleaseDC(p,a)	(p)->lpVtbl->ReleaseDC(p,a)
+#else
+#define IDirect3DSurface9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DSurface9_AddRef(p)	(p)->AddRef()
+#define IDirect3DSurface9_Release(p)	(p)->Release()
+#define IDirect3DSurface9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DSurface9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DSurface9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DSurface9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DSurface9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DSurface9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DSurface9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DSurface9_GetType(p)	(p)->GetType()
+#define IDirect3DSurface9_GetContainer(p,a,b)	(p)->GetContainer(a,b)
+#define IDirect3DSurface9_GetDesc(p,a)	(p)->GetDesc(a)
+#define IDirect3DSurface9_LockRect(p,a,b,c)	(p)->LockRect(a,b,c)
+#define IDirect3DSurface9_UnlockRect(p)	(p)->UnlockRect()
+#define IDirect3DSurface9_GetDC(p,a)	(p)->GetDC(a)
+#define IDirect3DSurface9_ReleaseDC(p,a)	(p)->ReleaseDC(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexBuffer9
+DECLARE_INTERFACE_(IDirect3DVertexBuffer9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
+	STDMETHOD(Unlock)(THIS) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DVERTEXBUFFER_DESC*) PURE;
+};
+typedef struct IDirect3DVertexBuffer9 *LPDIRECT3DVERTEXBUFFER9, *PDIRECT3DVERTEXBUFFER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexBuffer9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexBuffer9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVertexBuffer9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DVertexBuffer9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DVertexBuffer9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)	(p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)	(p)->lpVtbl->Unlock(p)
+#define IDirect3DVertexBuffer9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DVertexBuffer9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexBuffer9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexBuffer9_Release(p)	(p)->Release()
+#define IDirect3DVertexBuffer9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVertexBuffer9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVertexBuffer9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVertexBuffer9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DVertexBuffer9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DVertexBuffer9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DVertexBuffer9_GetType(p)	(p)->GetType()
+#define IDirect3DVertexBuffer9_Lock(p,a,b,c,d)	(p)->Lock(a,b,c,d)
+#define IDirect3DVertexBuffer9_Unlock(p)	(p)->Unlock()
+#define IDirect3DVertexBuffer9_GetDesc(p,a)	(p)->GetDesc(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DIndexBuffer9
+DECLARE_INTERFACE_(IDirect3DIndexBuffer9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD(Lock)(THIS_ UINT,UINT,void**,DWORD) PURE;
+	STDMETHOD(Unlock)(THIS) PURE;
+	STDMETHOD(GetDesc)(THIS_ D3DINDEXBUFFER_DESC*) PURE;
+};
+typedef struct IDirect3DIndexBuffer9 *LPDIRECT3DINDEXBUFFER9, *PDIRECT3DINDEXBUFFER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DIndexBuffer9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DIndexBuffer9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DIndexBuffer9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DIndexBuffer9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DIndexBuffer9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)	(p)->lpVtbl->Lock(p,a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)	(p)->lpVtbl->Unlock(p)
+#define IDirect3DIndexBuffer9_GetDesc(p,a)	(p)->lpVtbl->GetDesc(p,a)
+#else
+#define IDirect3DIndexBuffer9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DIndexBuffer9_AddRef(p)	(p)->AddRef()
+#define IDirect3DIndexBuffer9_Release(p)	(p)->Release()
+#define IDirect3DIndexBuffer9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DIndexBuffer9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DIndexBuffer9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DIndexBuffer9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DIndexBuffer9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DIndexBuffer9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DIndexBuffer9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DIndexBuffer9_GetType(p)	(p)->GetType()
+#define IDirect3DIndexBuffer9_Lock(p,a,b,c,d)	(p)->Lock(a,b,c,d)
+#define IDirect3DIndexBuffer9_Unlock(p)	(p)->Unlock()
+#define IDirect3DIndexBuffer9_GetDesc(p,a)	(p)->GetDesc(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DBaseTexture9
+DECLARE_INTERFACE_(IDirect3DBaseTexture9,IDirect3DResource9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+};
+typedef struct IDirect3DBaseTexture9 *LPDIRECT3DBASETEXTURE9, *PDIRECT3DBASETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DBaseTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DBaseTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DBaseTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DBaseTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DBaseTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DBaseTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DBaseTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DBaseTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DBaseTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#else
+#define IDirect3DBaseTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DBaseTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DBaseTexture9_Release(p)	(p)->Release()
+#define IDirect3DBaseTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DBaseTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DBaseTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DBaseTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DBaseTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DBaseTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DBaseTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DBaseTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DBaseTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DBaseTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DBaseTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DBaseTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DBaseTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DBaseTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DCubeTexture9
+DECLARE_INTERFACE_(IDirect3DCubeTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+	STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE; \
+	STDMETHOD(GetCubeMapSurface)(THIS_ D3DCUBEMAP_FACES,UINT,IDirect3DSurface9**) PURE; \
+	STDMETHOD(LockRect)(THIS_ D3DCUBEMAP_FACES,UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE; \
+	STDMETHOD(UnlockRect)(THIS_ D3DCUBEMAP_FACES,UINT) PURE; \
+	STDMETHOD(AddDirtyRect)(THIS_ D3DCUBEMAP_FACES,CONST RECT*) PURE;
+};
+typedef struct IDirect3DCubeTexture9 *LPDIRECT3DCUBETEXTURE9, *PDIRECT3DCUBETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DCubeTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DCubeTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DCubeTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DCubeTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DCubeTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DCubeTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DCubeTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DCubeTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DCubeTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)	(p)->lpVtbl->GetCubeMapSurface(p,a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)	(p)->lpVtbl->LockRect(p,a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)	(p)->lpVtbl->UnlockRect(p,a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)	(p)->lpVtbl->AddDirtyRect(p,a,b)
+#else
+#define IDirect3DCubeTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DCubeTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DCubeTexture9_Release(p)	(p)->Release()
+#define IDirect3DCubeTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DCubeTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DCubeTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DCubeTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DCubeTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DCubeTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DCubeTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DCubeTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DCubeTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DCubeTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DCubeTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DCubeTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DCubeTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DCubeTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DCubeTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DCubeTexture9_GetCubeMapSurface(p,a,b,c)	(p)->GetCubeMapSurface(a,b,c)
+#define IDirect3DCubeTexture9_LockRect(p,a,b,c,d,e)	(p)->LockRect(a,b,c,d,e)
+#define IDirect3DCubeTexture9_UnlockRect(p,a,b)	(p)->UnlockRect(a,b)
+#define IDirect3DCubeTexture9_AddDirtyRect(p,a,b)	(p)->AddDirtyRect(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DTexture9
+DECLARE_INTERFACE_(IDirect3DTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+	STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DSURFACE_DESC*) PURE;
+	STDMETHOD(GetSurfaceLevel)(THIS_ UINT,IDirect3DSurface9**) PURE;
+	STDMETHOD(LockRect)(THIS_ UINT,D3DLOCKED_RECT*,CONST RECT*,DWORD) PURE;
+	STDMETHOD(UnlockRect)(THIS_ UINT) PURE;
+	STDMETHOD(AddDirtyRect)(THIS_ CONST RECT*) PURE;
+};
+typedef struct IDirect3DTexture9 *LPDIRECT3DTEXTURE9, *PDIRECT3DTEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)	(p)->lpVtbl->GetSurfaceLevel(p,a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)	(p)->lpVtbl->LockRect(p,a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)	(p)->lpVtbl->UnlockRect(p,a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)	(p)->lpVtbl->AddDirtyRect(p,a)
+#else
+#define IDirect3DTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DTexture9_Release(p)	(p)->Release()
+#define IDirect3DTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DTexture9_GetSurfaceLevel(p,a,b)	(p)->GetSurfaceLevel(a,b)
+#define IDirect3DTexture9_LockRect(p,a,b,c,d)	(p)->LockRect(a,b,c,d)
+#define IDirect3DTexture9_UnlockRect(p,a)	(p)->UnlockRect(a)
+#define IDirect3DTexture9_AddDirtyRect(p,a)	(p)->AddDirtyRect(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVolumeTexture9
+DECLARE_INTERFACE_(IDirect3DVolumeTexture9,IDirect3DBaseTexture9)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(SetPrivateData)(THIS_ REFGUID,CONST void*,DWORD,DWORD) PURE;
+	STDMETHOD(GetPrivateData)(THIS_ REFGUID,void*,DWORD*) PURE;
+	STDMETHOD(FreePrivateData)(THIS_ REFGUID) PURE;
+	STDMETHOD_(DWORD,SetPriority)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetPriority)(THIS) PURE;
+	STDMETHOD_(void,PreLoad)(THIS) PURE;
+	STDMETHOD_(D3DRESOURCETYPE,GetType)(THIS) PURE;
+	STDMETHOD_(DWORD,SetLOD)(THIS_ DWORD) PURE;
+	STDMETHOD_(DWORD,GetLOD)(THIS) PURE;
+	STDMETHOD_(DWORD,GetLevelCount)(THIS) PURE;
+	STDMETHOD(SetAutoGenFilterType)(THIS_ D3DTEXTUREFILTERTYPE) PURE;
+	STDMETHOD_(D3DTEXTUREFILTERTYPE,GetAutoGenFilterType)(THIS) PURE;
+	STDMETHOD_(void,GenerateMipSubLevels)(THIS) PURE;
+    STDMETHOD(GetLevelDesc)(THIS_ UINT,D3DVOLUME_DESC*) PURE;
+    STDMETHOD(GetVolumeLevel)(THIS_ UINT,IDirect3DVolume9**) PURE;
+    STDMETHOD(LockBox)(THIS_ UINT,D3DLOCKED_BOX*,CONST D3DBOX*,DWORD) PURE;
+    STDMETHOD(UnlockBox)(THIS_ UINT) PURE;
+    STDMETHOD(AddDirtyBox)(THIS_ CONST D3DBOX*) PURE;
+};
+typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVolumeTexture9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVolumeTexture9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVolumeTexture9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)	(p)->lpVtbl->SetPrivateData(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)	(p)->lpVtbl->GetPrivateData(p,a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a)	(p)->lpVtbl->FreePrivateData(p,a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a)	(p)->lpVtbl->SetPriority(p,a)
+#define IDirect3DVolumeTexture9_GetPriority(p)	(p)->lpVtbl->GetPriority(p)
+#define IDirect3DVolumeTexture9_PreLoad(p)	(p)->lpVtbl->PreLoad(p)
+#define IDirect3DVolumeTexture9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DVolumeTexture9_SetLOD(p,a)	(p)->lpVtbl->SetLOD(p,a)
+#define IDirect3DVolumeTexture9_GetLOD(p)	(p)->lpVtbl->GetLOD(p)
+#define IDirect3DVolumeTexture9_GetLevelCount(p)	(p)->lpVtbl->GetLevelCount(p)
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)	(p)->lpVtbl->SetAutoGenFilterType(p,a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)	(p)->lpVtbl->GetAutoGenFilterType(p)
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)	(p)->lpVtbl->GenerateMipSubLevels(p)
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)	(p)->lpVtbl->GetLevelDesc(p,a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)	(p)->lpVtbl->GetVolumeLevel(p,a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)	(p)->lpVtbl->LockBox(p,a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a)	(p)->lpVtbl->UnlockBox(p,a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a)	(p)->lpVtbl->AddDirtyBox(p,a)
+#else
+#define IDirect3DVolumeTexture9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVolumeTexture9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVolumeTexture9_Release(p)	(p)->Release()
+#define IDirect3DVolumeTexture9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVolumeTexture9_SetPrivateData(p,a,b,c,d)	(p)->SetPrivateData(a,b,c,d)
+#define IDirect3DVolumeTexture9_GetPrivateData(p,a,b,c)	(p)->GetPrivateData(a,b,c)
+#define IDirect3DVolumeTexture9_FreePrivateData(p,a)	(p)->FreePrivateData(a)
+#define IDirect3DVolumeTexture9_SetPriority(p,a)	(p)->SetPriority(a)
+#define IDirect3DVolumeTexture9_GetPriority(p)	(p)->GetPriority()
+#define IDirect3DVolumeTexture9_PreLoad(p)	(p)->PreLoad()
+#define IDirect3DVolumeTexture9_GetType(p)	(p)->GetType()
+#define IDirect3DVolumeTexture9_SetLOD(p,a)	(p)->SetLOD(a)
+#define IDirect3DVolumeTexture9_GetLOD(p)	(p)->GetLOD()
+#define IDirect3DVolumeTexture9_GetLevelCount(p)	(p)->GetLevelCount()
+#define IDirect3DVolumeTexture9_SetAutoGenFilterType(p,a)	(p)->SetAutoGenFilterType(a)
+#define IDirect3DVolumeTexture9_GetAutoGenFilterType(p)	(p)->GetAutoGenFilterType()
+#define IDirect3DVolumeTexture9_GenerateMipSubLevels(p)	(p)->GenerateMipSubLevels()
+#define IDirect3DVolumeTexture9_GetLevelDesc(p,a,b)	(p)->GetLevelDesc(a,b)
+#define IDirect3DVolumeTexture9_GetVolumeLevel(p,a,b)	(p)->GetVolumeLevel(a,b)
+#define IDirect3DVolumeTexture9_LockBox(p,a,b,c,d)	(p)->LockBox(a,b,c,d)
+#define IDirect3DVolumeTexture9_UnlockBox(p,a)	(p)->UnlockBox(a)
+#define IDirect3DVolumeTexture9_AddDirtyBox(p,a)	(p)->AddDirtyBox(a)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexDeclaration9
+DECLARE_INTERFACE_(IDirect3DVertexDeclaration9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetDeclaration)(THIS_ D3DVERTEXELEMENT9*,UINT*) PURE;
+};
+typedef struct IDirect3DVertexDeclaration9 *LPDIRECT3DVERTEXDECLARATION9, *PDIRECT3DVERTEXDECLARATION9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexDeclaration9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)	(p)->lpVtbl->GetDeclaration(p,a,b)
+#else
+#define IDirect3DVertexDeclaration9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexDeclaration9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexDeclaration9_Release(p)	(p)->Release()
+#define IDirect3DVertexDeclaration9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexDeclaration9_GetDeclaration(p,a,b)	(p)->GetDeclaration(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DVertexShader9
+DECLARE_INTERFACE_(IDirect3DVertexShader9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
+};
+typedef struct IDirect3DVertexShader9 *LPDIRECT3DVERTEXSHADER9, *PDIRECT3DVERTEXSHADER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DVertexShader9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DVertexShader9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DVertexShader9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)	(p)->lpVtbl->GetFunction(p,a,b)
+#else
+#define IDirect3DVertexShader9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DVertexShader9_AddRef(p)	(p)->AddRef()
+#define IDirect3DVertexShader9_Release(p)	(p)->Release()
+#define IDirect3DVertexShader9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DVertexShader9_GetFunction(p,a,b)	(p)->GetFunction(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DPixelShader9
+DECLARE_INTERFACE_(IDirect3DPixelShader9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(GetFunction)(THIS_ void*,UINT*) PURE;
+};
+typedef struct IDirect3DPixelShader9 *LPDIRECT3DPIXELSHADER9, *PDIRECT3DPIXELSHADER9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DPixelShader9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DPixelShader9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DPixelShader9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)	(p)->lpVtbl->GetFunction(p,a,b)
+#else
+#define IDirect3DPixelShader9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DPixelShader9_AddRef(p)	(p)->AddRef()
+#define IDirect3DPixelShader9_Release(p)	(p)->Release()
+#define IDirect3DPixelShader9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DPixelShader9_GetFunction(p,a,b)	(p)->GetFunction(a,b)
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DStateBlock9
+DECLARE_INTERFACE_(IDirect3DStateBlock9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD(Capture)(THIS) PURE;
+	STDMETHOD(Apply)(THIS) PURE;
+};
+typedef struct IDirect3DStateBlock9 *LPDIRECT3DSTATEBLOCK9, *PDIRECT3DSTATEBLOCK9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DStateBlock9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DStateBlock9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DStateBlock9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DStateBlock9_Capture(p)	(p)->lpVtbl->Capture(p)
+#define IDirect3DStateBlock9_Apply(p)	(p)->lpVtbl->Apply(p)
+#else
+#define IDirect3DStateBlock9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DStateBlock9_AddRef(p)	(p)->AddRef()
+#define IDirect3DStateBlock9_Release(p)	(p)->Release()
+#define IDirect3DStateBlock9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DStateBlock9_Capture(p)	(p)->Capture()
+#define IDirect3DStateBlock9_Apply(p)	(p)->Apply()
+#endif
+
+#undef INTERFACE
+#define INTERFACE IDirect3DQuery9
+DECLARE_INTERFACE_(IDirect3DQuery9,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+	STDMETHOD(GetDevice)(THIS_ IDirect3DDevice9**) PURE;
+	STDMETHOD_(D3DQUERYTYPE, GetType)(THIS) PURE;
+	STDMETHOD_(DWORD, GetDataSize)(THIS) PURE;
+	STDMETHOD(Issue)(THIS_ DWORD) PURE;
+	STDMETHOD(GetData)(THIS_ void*,DWORD,DWORD) PURE;
+};
+typedef struct IDirect3DQuery9 *LPDIRECT3DQUERY9, *PDIRECT3DQUERY9;
+
+#if !defined(__cplusplus) || defined(CINTERFACE)
+#define IDirect3DQuery9_QueryInterface(p,a,b)	(p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirect3DQuery9_AddRef(p)	(p)->lpVtbl->AddRef(p)
+#define IDirect3DQuery9_Release(p)	(p)->lpVtbl->Release(p)
+#define IDirect3DQuery9_GetDevice(p,a)	(p)->lpVtbl->GetDevice(p,a)
+#define IDirect3DQuery9_GetType(p)	(p)->lpVtbl->GetType(p)
+#define IDirect3DQuery9_GetDataSize(p)	(p)->lpVtbl->GetDataSize(p)
+#define IDirect3DQuery9_Issue(p,a)	(p)->lpVtbl->Issue(p,a)
+#define IDirect3DQuery9_GetData(p,a,b,c)	(p)->lpVtbl->GetData(p,a,b,c)
+#else
+#define IDirect3DQuery9_QueryInterface(p,a,b)	(p)->QueryInterface(a,b)
+#define IDirect3DQuery9_AddRef(p)	(p)->AddRef()
+#define IDirect3DQuery9_Release(p)	(p)->Release()
+#define IDirect3DQuery9_GetDevice(p,a)	(p)->GetDevice(a)
+#define IDirect3DQuery9_GetType(p)	(p)->GetType()
+#define IDirect3DQuery9_GetDataSize(p)	(p)->GetDataSize()
+#define IDirect3DQuery9_Issue(p,a)	(p)->Issue(a)
+#define IDirect3DQuery9_GetData(p,a,b,c)	(p)->GetData(a,b,c)
+#endif
+
+#ifdef __cplusplus
+extern "C" IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+#else
+extern IDirect3D9* WINAPI Direct3DCreate9(UINT SDKVersion);
+#endif
+
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/d3d9caps.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,338 @@
+/*
+
+	d3d9caps.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_CAPS_H
+#define _D3D9_CAPS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#define D3DCURSORCAPS_COLOR	1
+#define D3DCURSORCAPS_LOWRES	2
+#define D3DDEVCAPS_EXECUTESYSTEMMEMORY	0x10
+#define D3DDEVCAPS_EXECUTEVIDEOMEMORY	0x20
+#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY	0x40
+#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY	0x80
+#define D3DDEVCAPS_TEXTURESYSTEMMEMORY	0x100
+#define D3DDEVCAPS_TEXTUREVIDEOMEMORY	0x200
+#define D3DDEVCAPS_DRAWPRIMTLVERTEX	0x400
+#define D3DDEVCAPS_CANRENDERAFTERFLIP	0x800
+#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM	0x1000
+#define D3DDEVCAPS_DRAWPRIMITIVES2	0x2000
+#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES	0x4000
+#define D3DDEVCAPS_DRAWPRIMITIVES2EX	0x8000
+#define D3DDEVCAPS_HWTRANSFORMANDLIGHT	0x10000
+#define D3DDEVCAPS_CANBLTSYSTONONLOCAL	0x20000
+#define D3DDEVCAPS_HWRASTERIZATION	0x80000
+#define D3DDEVCAPS_PUREDEVICE	0x100000
+#define D3DDEVCAPS_QUINTICRTPATCHES	0x200000
+#define D3DDEVCAPS_RTPATCHES	0x400000
+#define D3DDEVCAPS_RTPATCHHANDLEZERO	0x800000
+#define D3DDEVCAPS_NPATCHES	0x1000000
+#define D3DDEVCAPS2_STREAMOFFSET	0x01
+#define D3DDEVCAPS2_DMAPNPATCH	0x02
+#define D3DDEVCAPS2_ADAPTIVETESSRTPATCH	0x04
+#define D3DDEVCAPS2_ADAPTIVETESSNPATCH	0x08
+#define D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES	0x10
+#define D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH	0x20
+#define D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET	0x40
+#define D3DFVFCAPS_TEXCOORDCOUNTMASK	0xFFFF
+#define D3DFVFCAPS_DONOTSTRIPELEMENTS	0x80000
+#define D3DFVFCAPS_PSIZE	0x100000
+#define D3DLINECAPS_TEXTURE	0x01
+#define D3DLINECAPS_ZTEST	0x02
+#define D3DLINECAPS_BLEND	0x04
+#define D3DLINECAPS_ALPHACMP	0x08
+#define D3DLINECAPS_FOG	0x10
+#define D3DLINECAPS_ANTIALIAS	0x20
+#define D3DPBLENDCAPS_ZERO	0x01
+#define D3DPBLENDCAPS_ONE	0x02
+#define D3DPBLENDCAPS_SRCCOLOR	0x04
+#define D3DPBLENDCAPS_INVSRCCOLOR	0x08
+#define D3DPBLENDCAPS_SRCALPHA	0x10
+#define D3DPBLENDCAPS_INVSRCALPHA	0x20
+#define D3DPBLENDCAPS_DESTALPHA	0x40
+#define D3DPBLENDCAPS_INVDESTALPHA	0x80
+#define D3DPBLENDCAPS_DESTCOLOR	0x100
+#define D3DPBLENDCAPS_INVDESTCOLOR	0x200
+#define D3DPBLENDCAPS_SRCALPHASAT	0x400
+#define D3DPBLENDCAPS_BOTHSRCALPHA	0x800
+#define D3DPBLENDCAPS_BOTHINVSRCALPHA	0x1000
+#define D3DPBLENDCAPS_BLENDFACTOR	0x2000
+#define D3DPCMPCAPS_NEVER	0x01
+#define D3DPCMPCAPS_LESS	0x02
+#define D3DPCMPCAPS_EQUAL	0x04
+#define D3DPCMPCAPS_LESSEQUAL	0x08
+#define D3DPCMPCAPS_GREATER	0x10
+#define D3DPCMPCAPS_NOTEQUAL	0x20
+#define D3DPCMPCAPS_GREATEREQUAL	0x40
+#define D3DPCMPCAPS_ALWAYS	0x80
+#define D3DPMISCCAPS_MASKZ	0x02
+#define D3DPMISCCAPS_CULLNONE	0x10
+#define D3DPMISCCAPS_CULLCW	0x20
+#define D3DPMISCCAPS_CULLCCW	0x40
+#define D3DPMISCCAPS_COLORWRITEENABLE	0x80
+#define D3DPMISCCAPS_CLIPPLANESCALEDPOINTS	0x100
+#define D3DPMISCCAPS_CLIPTLVERTS	0x200
+#define D3DPMISCCAPS_TSSARGTEMP	0x400
+#define D3DPMISCCAPS_BLENDOP	0x800
+#define D3DPMISCCAPS_NULLREFERENCE	0x1000
+#define D3DPMISCCAPS_INDEPENDENTWRITEMASKS	0x4000
+#define D3DPMISCCAPS_PERSTAGECONSTANT	0x8000
+#define D3DPMISCCAPS_FOGANDSPECULARALPHA	0x10000
+#define D3DPMISCCAPS_SEPARATEALPHABLEND	0x20000
+#define D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS	0x40000
+#define D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING	0x80000
+#define D3DPMISCCAPS_FOGVERTEXCLAMPED	0x100000
+#define D3DPRASTERCAPS_DITHER	0x01
+#define D3DPRASTERCAPS_ZTEST	0x10
+#define D3DPRASTERCAPS_FOGVERTEX	0x80
+#define D3DPRASTERCAPS_FOGTABLE	0x100
+#define D3DPRASTERCAPS_MIPMAPLODBIAS	0x2000
+#define D3DPRASTERCAPS_ZBUFFERLESSHSR	0x8000
+#define D3DPRASTERCAPS_FOGRANGE	0x10000
+#define D3DPRASTERCAPS_ANISOTROPY	0x20000
+#define D3DPRASTERCAPS_WBUFFER	0x40000
+#define D3DPRASTERCAPS_WFOG	0x100000
+#define D3DPRASTERCAPS_ZFOG	0x200000
+#define D3DPRASTERCAPS_COLORPERSPECTIVE	0x400000
+#define D3DPRASTERCAPS_SCISSORTEST	0x1000000
+#define D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS	0x2000000
+#define D3DPRASTERCAPS_DEPTHBIAS	0x4000000 
+#define D3DPRASTERCAPS_MULTISAMPLE_TOGGLE	0x8000000
+#define D3DPRESENT_INTERVAL_DEFAULT	0x00
+#define D3DPRESENT_INTERVAL_ONE	0x01
+#define D3DPRESENT_INTERVAL_TWO	0x02
+#define D3DPRESENT_INTERVAL_THREE	0x04
+#define D3DPRESENT_INTERVAL_FOUR	0x08
+#define D3DPRESENT_INTERVAL_IMMEDIATE	0x80000000L
+#define D3DPSHADECAPS_COLORGOURAUDRGB	0x08
+#define D3DPSHADECAPS_SPECULARGOURAUDRGB	0x200
+#define D3DPSHADECAPS_ALPHAGOURAUDBLEND	0x4000
+#define D3DPSHADECAPS_FOGGOURAUD	0x80000
+#define D3DPTADDRESSCAPS_WRAP	0x01
+#define D3DPTADDRESSCAPS_MIRROR	0x02
+#define D3DPTADDRESSCAPS_CLAMP	0x04
+#define D3DPTADDRESSCAPS_BORDER	0x08
+#define D3DPTADDRESSCAPS_INDEPENDENTUV	0x10
+#define D3DPTADDRESSCAPS_MIRRORONCE	0x20
+#define D3DPTEXTURECAPS_PERSPECTIVE	0x01
+#define D3DPTEXTURECAPS_POW2	0x02
+#define D3DPTEXTURECAPS_ALPHA	0x04
+#define D3DPTEXTURECAPS_SQUAREONLY	0x20
+#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE	0x40
+#define D3DPTEXTURECAPS_ALPHAPALETTE	0x80
+#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL	0x100
+#define D3DPTEXTURECAPS_PROJECTED	0x400
+#define D3DPTEXTURECAPS_CUBEMAP	0x800
+#define D3DPTEXTURECAPS_VOLUMEMAP	0x2000
+#define D3DPTEXTURECAPS_MIPMAP	0x4000
+#define D3DPTEXTURECAPS_MIPVOLUMEMAP	0x8000
+#define D3DPTEXTURECAPS_MIPCUBEMAP	0x10000
+#define D3DPTEXTURECAPS_CUBEMAP_POW2	0x20000
+#define D3DPTEXTURECAPS_VOLUMEMAP_POW2	0x40000
+#define D3DPTEXTURECAPS_NOPROJECTEDBUMPENV	0x200000
+#define D3DPTFILTERCAPS_MINFPOINT	0x100
+#define D3DPTFILTERCAPS_MINFLINEAR	0x200
+#define D3DPTFILTERCAPS_MINFANISOTROPIC	0x400
+#define D3DPTFILTERCAPS_MINFPYRAMIDALQUAD	0x800
+#define D3DPTFILTERCAPS_MINFGAUSSIANQUAD	0x1000
+#define D3DPTFILTERCAPS_MIPFPOINT	0x10000
+#define D3DPTFILTERCAPS_MIPFLINEAR	0x20000
+#define D3DPTFILTERCAPS_MAGFPOINT	0x1000000
+#define D3DPTFILTERCAPS_MAGFLINEAR	0x2000000
+#define D3DPTFILTERCAPS_MAGFANISOTROPIC	0x4000000
+#define D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD	0x8000000
+#define D3DPTFILTERCAPS_MAGFGAUSSIANQUAD	0x10000000
+#define D3DSTENCILCAPS_KEEP	0x01
+#define D3DSTENCILCAPS_ZERO	0x02
+#define D3DSTENCILCAPS_REPLACE	0x04
+#define D3DSTENCILCAPS_INCRSAT	0x08
+#define D3DSTENCILCAPS_DECRSAT	0x10
+#define D3DSTENCILCAPS_INVERT	0x20
+#define D3DSTENCILCAPS_INCR	0x40
+#define D3DSTENCILCAPS_DECR	0x80
+#define D3DSTENCILCAPS_TWOSIDED	0x100
+#define D3DTEXOPCAPS_DISABLE	0x01
+#define D3DTEXOPCAPS_SELECTARG1	0x02
+#define D3DTEXOPCAPS_SELECTARG2	0x04
+#define D3DTEXOPCAPS_MODULATE	0x08
+#define D3DTEXOPCAPS_MODULATE2X	0x10
+#define D3DTEXOPCAPS_MODULATE4X	0x20
+#define D3DTEXOPCAPS_ADD	0x40
+#define D3DTEXOPCAPS_ADDSIGNED	0x80
+#define D3DTEXOPCAPS_ADDSIGNED2X	0x100
+#define D3DTEXOPCAPS_SUBTRACT	0x200
+#define D3DTEXOPCAPS_ADDSMOOTH	0x400
+#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA	0x800
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHA	0x1000
+#define D3DTEXOPCAPS_BLENDFACTORALPHA	0x2000
+#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM	0x4000
+#define D3DTEXOPCAPS_BLENDCURRENTALPHA	0x8000
+#define D3DTEXOPCAPS_PREMODULATE	0x10000
+#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR	0x20000
+#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA	0x40000
+#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR	0x80000
+#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA	0x100000
+#define D3DTEXOPCAPS_BUMPENVMAP	0x200000
+#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE	0x400000
+#define D3DTEXOPCAPS_DOTPRODUCT3	0x800000
+#define D3DTEXOPCAPS_MULTIPLYADD	0x1000000
+#define D3DTEXOPCAPS_LERP	0x2000000
+#define D3DVTXPCAPS_TEXGEN	0x01
+#define D3DVTXPCAPS_MATERIALSOURCE7	0x02
+#define D3DVTXPCAPS_DIRECTIONALLIGHTS	0x08
+#define D3DVTXPCAPS_POSITIONALLIGHTS	0x10
+#define D3DVTXPCAPS_LOCALVIEWER	0x20
+#define D3DVTXPCAPS_TWEENING	0x40
+#define D3DVTXPCAPS_TEXGEN_SPHEREMAP	0x100
+#define D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER	0x200
+#define D3DCAPS_READ_SCANLINE	0x20000
+#define D3DCAPS2_FULLSCREENGAMMA	0x20000L
+#define D3DCAPS2_CANCALIBRATEGAMMA	0x100000L
+#define D3DCAPS2_RESERVED	0x2000000L
+#define D3DCAPS2_CANMANAGERESOURCE	0x10000000L
+#define D3DCAPS2_DYNAMICTEXTURES	0x20000000L
+#define D3DCAPS2_CANAUTOGENMIPMAP	0x40000000L
+#define D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD	0x20
+#define D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION	0x80
+#define D3DCAPS3_COPY_TO_VIDMEM	0x100
+#define D3DCAPS3_COPY_TO_SYSTEMMEM	0x200
+#define D3DCAPS3_RESERVED	0x8000001fL
+#define D3DDTCAPS_UBYTE4	0x01
+#define D3DDTCAPS_UBYTE4N	0x02
+#define D3DDTCAPS_SHORT2N	0x04
+#define D3DDTCAPS_SHORT4N	0x08
+#define D3DDTCAPS_USHORT2N	0x10
+#define D3DDTCAPS_USHORT4N	0x20
+#define D3DDTCAPS_UDEC3	0x40
+#define D3DDTCAPS_DEC3N	0x80
+#define D3DDTCAPS_FLOAT16_2	0x100
+#define D3DDTCAPS_FLOAT16_4	0x200
+#define D3DMIN30SHADERINSTRUCTIONS	512
+#define D3DMAX30SHADERINSTRUCTIONS	32768
+#define D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH	24
+#define D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH	0
+#define D3DPS20_MAX_NUMTEMPS	32
+#define D3DPS20_MIN_NUMTEMPS	12
+#define D3DPS20_MAX_STATICFLOWCONTROLDEPTH	4
+#define D3DPS20_MIN_STATICFLOWCONTROLDEPTH	0
+#define D3DPS20_MAX_NUMINSTRUCTIONSLOTS	512
+#define D3DPS20_MIN_NUMINSTRUCTIONSLOTS	96
+#define D3DPS20CAPS_ARBITRARYSWIZZLE	0x1
+#define D3DPS20CAPS_GRADIENTINSTRUCTIONS	0x2
+#define D3DPS20CAPS_PREDICATION	0x4
+#define D3DPS20CAPS_NODEPENDENTREADLIMIT	0x8
+#define D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT	0x10
+#define D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH	24
+#define D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH	0
+#define D3DVS20_MAX_NUMTEMPS	32
+#define D3DVS20_MIN_NUMTEMPS	12
+#define D3DVS20_MAX_STATICFLOWCONTROLDEPTH	4
+#define D3DVS20_MIN_STATICFLOWCONTROLDEPTH	1
+#define D3DVS20CAPS_PREDICATION	1
+
+typedef struct _D3DVSHADERCAPS2_0 {
+	DWORD Caps;
+	INT DynamicFlowControlDepth;
+	INT NumTemps;
+	INT StaticFlowControlDepth;
+} D3DVSHADERCAPS2_0;
+
+typedef struct _D3DPSHADERCAPS2_0 {
+	DWORD Caps;
+	INT DynamicFlowControlDepth;
+	INT NumTemps;
+	INT StaticFlowControlDepth;
+	INT NumInstructionSlots;
+} D3DPSHADERCAPS2_0;
+
+typedef struct _D3DCAPS9 {
+	D3DDEVTYPE DeviceType;
+	UINT AdapterOrdinal;
+	DWORD Caps;
+	DWORD Caps2;
+	DWORD Caps3;
+	DWORD PresentationIntervals;
+	DWORD CursorCaps;
+	DWORD DevCaps;
+	DWORD PrimitiveMiscCaps;
+	DWORD RasterCaps;
+	DWORD ZCmpCaps;
+	DWORD SrcBlendCaps;
+	DWORD DestBlendCaps;
+	DWORD AlphaCmpCaps;
+	DWORD ShadeCaps;
+	DWORD TextureCaps;
+	DWORD TextureFilterCaps;
+	DWORD CubeTextureFilterCaps;
+	DWORD VolumeTextureFilterCaps;
+	DWORD TextureAddressCaps;
+	DWORD VolumeTextureAddressCaps;
+	DWORD LineCaps;
+	DWORD MaxTextureWidth;
+	DWORD MaxTextureHeight;
+	DWORD MaxVolumeExtent;
+	DWORD MaxTextureRepeat;
+	DWORD MaxTextureAspectRatio;
+	DWORD MaxAnisotropy;
+	float MaxVertexW;
+	float GuardBandLeft;
+	float GuardBandTop;
+	float GuardBandRight;
+	float GuardBandBottom;
+	float ExtentsAdjust;
+	DWORD StencilCaps;
+	DWORD FVFCaps;
+	DWORD TextureOpCaps;
+	DWORD MaxTextureBlendStages;
+	DWORD MaxSimultaneousTextures;
+	DWORD VertexProcessingCaps;
+	DWORD MaxActiveLights;
+	DWORD MaxUserClipPlanes;
+	DWORD MaxVertexBlendMatrices;
+	DWORD MaxVertexBlendMatrixIndex;
+	float MaxPointSize;
+	DWORD MaxPrimitiveCount;
+	DWORD MaxVertexIndex;
+	DWORD MaxStreams;
+	DWORD MaxStreamStride;
+	DWORD VertexShaderVersion;
+	DWORD MaxVertexShaderConst;
+	DWORD PixelShaderVersion;
+	float PixelShader1xMaxValue;
+	DWORD DevCaps2;
+	float MaxNpatchTessellationLevel;
+	DWORD Reserved5;
+	UINT MasterAdapterOrdinal;   
+	UINT AdapterOrdinalInGroup;  
+	UINT NumberOfAdaptersInGroup;
+	DWORD DeclTypes;              
+	DWORD NumSimultaneousRTs;     
+	DWORD StretchRectFilterCaps;  
+	D3DVSHADERCAPS2_0 VS20Caps;
+	D3DPSHADERCAPS2_0 PS20Caps;
+	DWORD VertexTextureFilterCaps;
+	DWORD MaxVShaderInstructionsExecuted;
+	DWORD MaxPShaderInstructionsExecuted;
+	DWORD MaxVertexShader30InstructionSlots; 
+	DWORD MaxPixelShader30InstructionSlots;
+} D3DCAPS9;
+
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/d3d9types.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,1272 @@
+/*
+
+	d3d9types.h - Header file for the Direct3D9 API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _D3D9_TYPES_H
+#define _D3D9_TYPES_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifndef DIRECT3D_VERSION
+#define DIRECT3D_VERSION  0x0900
+#endif
+
+#if (DIRECT3D_VERSION >= 0x0900)
+
+#include <pshpack4.h>
+
+#define D3DCLEAR_TARGET	0x01
+#define D3DCLEAR_ZBUFFER	0x02
+#define D3DCLEAR_STENCIL	0x04
+#define D3DCLIPPLANE0	0x01
+#define D3DCLIPPLANE1	0x02
+#define D3DCLIPPLANE2	0x04
+#define D3DCLIPPLANE3	0x08
+#define D3DCLIPPLANE4	0x10
+#define D3DCLIPPLANE5	0x20
+#define D3DCOLOR_ARGB(a,r,g,b)	((D3DCOLOR)((((a)&0xff)<<24)|(((r)&0xff)<<16)|(((g)&0xff)<<8)|((b)&0xff)))
+#define D3DCOLOR_COLORVALUE(r,g,b,a)	D3DCOLOR_RGBA((DWORD)((r)*255.f),(DWORD)((g)*255.f),(DWORD)((b)*255.f),(DWORD)((a)*255.f))
+#define D3DCOLOR_RGBA(r,g,b,a)	D3DCOLOR_ARGB(a,r,g,b)
+#define D3DCOLOR_XRGB(r,g,b)	D3DCOLOR_ARGB(0xff,r,g,b)
+#define D3DCOLOR_XYUV(y,u,v)	D3DCOLOR_ARGB(0xff,y,u,v)
+#define D3DCOLOR_AYUV(a,y,u,v)	D3DCOLOR_ARGB(a,y,u,v)
+#define D3DCOLORWRITEENABLE_RED	0x01
+#define D3DCOLORWRITEENABLE_GREEN	0x02
+#define D3DCOLORWRITEENABLE_BLUE	0x04
+#define D3DCOLORWRITEENABLE_ALPHA	0x08
+#define D3DCS_LEFT	0x01
+#define D3DCS_RIGHT	0x02
+#define D3DCS_TOP	0x04
+#define D3DCS_BOTTOM	0x08
+#define D3DCS_FRONT	0x10
+#define D3DCS_BACK	0x20
+#define D3DCS_PLANE0	0x40
+#define D3DCS_PLANE1	0x80
+#define D3DCS_PLANE2	0x100
+#define D3DCS_PLANE3	0x200
+#define D3DCS_PLANE4	0x400
+#define D3DCS_PLANE5	0x800
+#define D3DCS_ALL	(D3DCS_LEFT|D3DCS_RIGHT|D3DCS_TOP|D3DCS_BOTTOM|D3DCS_FRONT|D3DCS_BACK|D3DCS_PLANE0|D3DCS_PLANE1|D3DCS_PLANE2|D3DCS_PLANE3|D3DCS_PLANE4|D3DCS_PLANE5)
+#define D3DDECL_END()	{0xff,0,D3DDECLTYPE_UNUSED,0,0,0}
+#define D3DDP_MAXTEXCOORD	8
+#define D3DPV_DONOTCOPYDATA	0x01
+#define D3DTA_SELECTMASK	0x0f
+#define D3DTA_DIFFUSE	0x00
+#define D3DTA_CURRENT	0x01
+#define D3DTA_TEXTURE	0x02
+#define D3DTA_TFACTOR	0x03
+#define D3DTA_SPECULAR	0x04
+#define D3DTA_TEMP	0x05
+#define D3DTA_CONSTANT	0x06
+#define D3DTA_COMPLEMENT	0x10
+#define D3DTA_ALPHAREPLICATE	0x20
+#define D3DFVF_RESERVED0	0x01
+#define D3DFVF_POSITION_MASK	0x4000E
+#define D3DFVF_XYZ	0x02
+#define D3DFVF_XYZRHW	0x04
+#define D3DFVF_XYZB1	0x06
+#define D3DFVF_XYZB2	0x08
+#define D3DFVF_XYZB3	0x0a
+#define D3DFVF_XYZB4	0x0c
+#define D3DFVF_XYZB5	0x0e
+#define D3DFVF_XYZW	0x4002
+#define D3DFVF_NORMAL	0x10
+#define D3DFVF_PSIZE	0x20
+#define D3DFVF_DIFFUSE	0x40
+#define D3DFVF_SPECULAR	0x80
+#define D3DFVF_TEXCOUNT_MASK	0xf00
+#define D3DFVF_TEXCOUNT_SHIFT	8
+#define D3DFVF_TEX0	0x0000
+#define D3DFVF_TEX1	0x0100
+#define D3DFVF_TEX2	0x0200
+#define D3DFVF_TEX3	0x0300
+#define D3DFVF_TEX4	0x0400
+#define D3DFVF_TEX5	0x0500
+#define D3DFVF_TEX6	0x0600
+#define D3DFVF_TEX7	0x0700
+#define D3DFVF_TEX8	0x0800
+#define D3DFVF_TEXCOORDSIZE1(i) (D3DFVF_TEXTUREFORMAT1 << (i * 2 + 16))
+#define D3DFVF_TEXCOORDSIZE2(i) (D3DFVF_TEXTUREFORMAT2)
+#define D3DFVF_TEXCOORDSIZE3(i) (D3DFVF_TEXTUREFORMAT3 << (i * 2 + 16))
+#define D3DFVF_TEXCOORDSIZE4(i) (D3DFVF_TEXTUREFORMAT4 << (i * 2 + 16))
+#define D3DFVF_TEXTUREFORMAT1	3
+#define D3DFVF_TEXTUREFORMAT2	0
+#define D3DFVF_TEXTUREFORMAT3	1
+#define D3DFVF_TEXTUREFORMAT4	2
+#define D3DFVF_LASTBETA_UBYTE4	0x1000
+#define D3DFVF_LASTBETA_D3DCOLOR	0x8000
+#define D3DFVF_RESERVED2	0x6000
+#define D3DDMAPSAMPLER	256
+#define D3DVERTEXTEXTURESAMPLER0	(D3DDMAPSAMPLER+1)
+#define D3DVERTEXTEXTURESAMPLER1	(D3DDMAPSAMPLER+2)
+#define D3DVERTEXTEXTURESAMPLER2	(D3DDMAPSAMPLER+3)
+#define D3DVERTEXTEXTURESAMPLER3	(D3DDMAPSAMPLER+4)
+#define D3DVS_ADDRESSMODE_SHIFT	13
+#define D3DVS_ADDRESSMODE_MASK	(1 << D3DVS_ADDRESSMODE_SHIFT)
+#define D3DVS_SWIZZLE_SHIFT     16
+#define D3DVS_SWIZZLE_MASK      0x00FF0000
+#define D3DVS_X_X	(0 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Y	(1 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_Z	(2 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_X_W	(3 << D3DVS_SWIZZLE_SHIFT)
+#define D3DVS_Y_X	(0 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Y_W	(3 << (D3DVS_SWIZZLE_SHIFT + 2))
+#define D3DVS_Z_X	(0 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_Z_W	(3 << (D3DVS_SWIZZLE_SHIFT + 4))
+#define D3DVS_W_X	(0 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Y	(1 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_Z	(2 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_W_W	(3 << (D3DVS_SWIZZLE_SHIFT + 6))
+#define D3DVS_NOSWIZZLE	(D3DVS_X_X|D3DVS_Y_Y|D3DVS_Z_Z|D3DVS_W_W)
+#define D3DPRESENT_RATE_DEFAULT	0
+#define D3DRENDERSTATE_WRAPBIAS	128UL
+#define D3DSHADER_ADDRESSMODE_SHIFT	13
+#define D3DSHADER_ADDRESSMODE_MASK	(1 << D3DSHADER_ADDRESSMODE_SHIFT)
+#define D3DSHADER_COMPARISON_SHIFT	D3DSP_OPCODESPECIFICCONTROL_SHIFT
+#define D3DSHADER_COMPARISON_MASK	(0x07 << D3DSHADER_COMPARISON_SHIFT)
+#define D3DSHADER_INSTRUCTION_PREDICATED	0x10000000
+#define D3DSI_COISSUE	0x40000000
+#define D3DSI_COMMENTSIZE_SHIFT	16
+#define D3DSI_COMMENTSIZE_MASK	0x7fff0000
+#define D3DSI_OPCODE_MASK	0xffff
+#define D3DSI_INSTLENGTH_MASK	0xf000000
+#define D3DSI_INSTLENGTH_SHIFT	24
+#define D3DSI_TEXLD_PROJECT	(0x01 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
+#define D3DSI_TEXLD_BIAS	(0x02 << D3DSP_OPCODESPECIFICCONTROL_SHIFT)
+#define D3DSINCOSCONST1	-1.5500992e-006f, -2.1701389e-005f, 0.0026041667f, 0.00026041668f
+#define D3DSINCOSCONST2	-0.020833334f, -0.12500000f, 1.0f, 0.50000000f
+#define D3DSP_OPCODESPECIFICCONTROL_MASK	0xff0000
+#define D3DSP_OPCODESPECIFICCONTROL_SHIFT	16
+#define D3DSP_DCL_USAGE_SHIFT	0
+#define D3DSP_DCL_USAGE_MASK	0x0000000f
+#define D3DSP_DCL_USAGEINDEX_SHIFT	16
+#define D3DSP_DCL_USAGEINDEX_MASK	0x000f0000
+#define D3DSP_TEXTURETYPE_SHIFT	27
+#define D3DSP_TEXTURETYPE_MASK	0x78000000
+#define D3DSP_REGNUM_MASK	0x7ff
+#define D3DSP_WRITEMASK_0	0x10000
+#define D3DSP_WRITEMASK_1	0x20000
+#define D3DSP_WRITEMASK_2	0x40000
+#define D3DSP_WRITEMASK_3	0x80000
+#define D3DSP_WRITEMASK_ALL	0xf0000
+#define D3DSP_DSTMOD_SHIFT	20
+#define D3DSP_DSTMOD_MASK	0xf00000
+#define D3DSPDM_NONE	0
+#define D3DSPDM_SATURATE	(1 << D3DSP_DSTMOD_SHIFT)
+#define D3DSPDM_PARTIALPRECISION	(2 << D3DSP_DSTMOD_SHIFT)
+#define D3DSPDM_MSAMPCENTROID	(4 << D3DSP_DSTMOD_SHIFT)
+#define D3DSP_DSTSHIFT_SHIFT	24
+#define D3DSP_DSTSHIFT_MASK	0xf000000
+#define D3DSP_NOSWIZZLE	((0 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATERED	0
+#define D3DSP_REPLICATEGREEN	((1 << (D3DSP_SWIZZLE_SHIFT + 0)) | (1 << (D3DSP_SWIZZLE_SHIFT + 2)) | (1 << (D3DSP_SWIZZLE_SHIFT + 4)) | (1 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATEBLUE	((2 << (D3DSP_SWIZZLE_SHIFT + 0)) | (2 << (D3DSP_SWIZZLE_SHIFT + 2)) | (2 << (D3DSP_SWIZZLE_SHIFT + 4)) | (2 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REPLICATEALPHA	((3 << (D3DSP_SWIZZLE_SHIFT + 0)) | (3 << (D3DSP_SWIZZLE_SHIFT + 2)) | (3 << (D3DSP_SWIZZLE_SHIFT + 4)) | (3 << (D3DSP_SWIZZLE_SHIFT + 6)))
+#define D3DSP_REGTYPE_SHIFT	28
+#define D3DSP_REGTYPE_SHIFT2	8
+#define D3DSP_REGTYPE_MASK	0x70000000
+#define D3DSP_REGTYPE_MASK2	0x1800
+#define D3DSP_SRCMOD_SHIFT	24
+#define D3DSP_SRCMOD_MASK	0xf000000
+#define D3DSP_SWIZZLE_SHIFT	16
+#define D3DSP_SWIZZLE_MASK	0xff0000
+#define D3DTS_WORLDMATRIX(index)	(D3DTRANSFORMSTATETYPE)(index + 256)
+#define D3DTS_WORLD	D3DTS_WORLDMATRIX(0)
+#define D3DTS_WORLD1	D3DTS_WORLDMATRIX(1)
+#define D3DTS_WORLD2	D3DTS_WORLDMATRIX(2)
+#define D3DTS_WORLD3	D3DTS_WORLDMATRIX(3)
+#define D3DTSS_TCI_PASSTHRU	0x00
+#define D3DTSS_TCI_CAMERASPACENORMAL	0x10000
+#define D3DTSS_TCI_CAMERASPACEPOSITION	0x20000
+#define D3DTSS_TCI_CAMERASPACEREFLECTIONVECTOR	0x30000
+#define D3DTSS_TCI_SPHEREMAP	0x40000
+#define D3DUSAGE_RENDERTARGET	0x01
+#define D3DUSAGE_DEPTHSTENCIL	0x02
+#define D3DUSAGE_WRITEONLY	0x08
+#define D3DUSAGE_SOFTWAREPROCESSING	0x10
+#define D3DUSAGE_DONOTCLIP	0x20
+#define D3DUSAGE_POINTS	0x40
+#define D3DUSAGE_RTPATCHES	0x80
+#define D3DUSAGE_NPATCHES	0x100
+#define D3DUSAGE_DYNAMIC	0x200
+#define D3DUSAGE_AUTOGENMIPMAP	0x400
+#define D3DUSAGE_DMAP	0x4000
+#define D3DUSAGE_QUERY_LEGACYBUMPMAP	0x8000
+#define D3DUSAGE_QUERY_SRGBREAD	0x10000
+#define D3DUSAGE_QUERY_FILTER	0x20000
+#define D3DUSAGE_QUERY_SRGBWRITE	0x40000
+#define D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING	0x80000
+#define D3DUSAGE_QUERY_VERTEXTEXTURE	0x100000
+#define D3DWRAP_U	0x01
+#define D3DWRAP_V	0x02
+#define D3DWRAP_W	0x04
+#define D3DWRAPCOORD_0	0x01
+#define D3DWRAPCOORD_1	0x02
+#define D3DWRAPCOORD_2	0x04
+#define D3DWRAPCOORD_3	0x08
+#define MAX_DEVICE_IDENTIFIER_STRING	512
+#define MAXD3DDECLLENGTH	64
+#define MAXD3DDECLMETHOD	D3DDECLMETHOD_LOOKUPPRESAMPLED
+#define MAXD3DDECLTYPE	D3DDECLTYPE_UNUSED
+#define MAXD3DDECLUSAGE	D3DDECLUSAGE_SAMPLE
+#define MAXD3DDECLUSAGEINDEX	15
+#define D3DMAXUSERCLIPPLANES	32
+#define D3D_MAX_SIMULTANEOUS_RENDERTARGETS	4
+#define D3DPS_VERSION(major,minor)	(0xffff0000 | ((major) << 8) | (minor))
+#define D3DVS_VERSION(major,minor)	(0xfffe0000 | ((major) << 8) | (minor))
+#define D3DSHADER_VERSION_MAJOR(version)	(((version) >> 8) & 0xff)
+#define D3DSHADER_VERSION_MINOR(version)	(((version) >> 0) & 0xff)
+#define D3DSHADER_COMMENT(s)	((((s) << D3DSI_COMMENTSIZE_SHIFT) & D3DSI_COMMENTSIZE_MASK) | D3DSIO_COMMENT)
+#define D3DPS_END()	0xffff
+#define D3DVS_END()	0xffff
+#define D3DPRESENTFLAG_LOCKABLE_BACKBUFFER	0x01
+#define D3DPRESENTFLAG_DISCARD_DEPTHSTENCIL	0x02
+#define D3DPRESENTFLAG_DEVICECLIP	0x04
+#define D3DPRESENTFLAG_VIDEO	0x10
+#define D3DLOCK_READONLY	0x10
+#define D3DLOCK_NOSYSLOCK	0x800
+#define D3DLOCK_NOOVERWRITE	0x1000
+#define D3DLOCK_DISCARD	0x2000
+#define D3DLOCK_DONOTWAIT	0x4000
+#define D3DLOCK_NO_DIRTY_UPDATE	0x8000
+#define D3DISSUE_END	0x01
+#define D3DISSUE_BEGIN	0x02
+#define D3DGETDATA_FLUSH	0x01
+#define D3DRTYPECOUNT	(D3DRTYPE_INDEXBUFFER+1)
+
+#define MAKEFOURCC(a,b,c,d)  \
+	((DWORD)(BYTE)(a) | ((DWORD)(BYTE)(b) << 8) |  \
+	((DWORD)(BYTE)(c) << 16) | ((DWORD)(BYTE)(d) << 24 ))
+
+typedef DWORD D3DCOLOR;
+
+typedef enum _D3DBACKBUFFER_TYPE {
+	D3DBACKBUFFER_TYPE_MONO = 0,
+	D3DBACKBUFFER_TYPE_LEFT = 1,
+	D3DBACKBUFFER_TYPE_RIGHT = 2,
+	D3DBACKBUFFER_TYPE_FORCE_DWORD = 0xffffffff
+} D3DBACKBUFFER_TYPE;
+
+typedef enum _D3DBASISTYPE {
+	D3DBASIS_BEZIER = 0,
+	D3DBASIS_BSPLINE = 1,
+	D3DBASIS_INTERPOLATE = 2,
+	D3DBASIS_FORCE_DWORD = 0xffffffff
+} D3DBASISTYPE;
+
+typedef enum _D3DBLEND {
+	D3DBLEND_ZERO = 1,
+	D3DBLEND_ONE = 2,
+	D3DBLEND_SRCCOLOR = 3,
+	D3DBLEND_INVSRCCOLOR = 4,
+	D3DBLEND_SRCALPHA = 5,
+	D3DBLEND_INVSRCALPHA = 6,
+	D3DBLEND_DESTALPHA = 7,
+	D3DBLEND_INVDESTALPHA = 8,
+	D3DBLEND_DESTCOLOR = 9,
+	D3DBLEND_INVDESTCOLOR = 10,
+	D3DBLEND_SRCALPHASAT = 11,
+	D3DBLEND_BOTHSRCALPHA = 12,
+	D3DBLEND_BOTHINVSRCALPHA = 13,
+	D3DBLEND_BLENDFACTOR = 14,
+	D3DBLEND_INVBLENDFACTOR = 15,
+	D3DBLEND_FORCE_DWORD = 0xffffffff
+} D3DBLEND;
+
+typedef enum _D3DBLENDOP {
+	D3DBLENDOP_ADD = 1,
+	D3DBLENDOP_SUBTRACT = 2,
+	D3DBLENDOP_REVSUBTRACT = 3,
+	D3DBLENDOP_MIN = 4,
+	D3DBLENDOP_MAX = 5,
+	D3DBLENDOP_FORCE_DWORD = 0x7fffffff
+} D3DBLENDOP;
+
+typedef enum _D3DCMPFUNC {
+	D3DCMP_NEVER = 1,
+	D3DCMP_LESS = 2,
+	D3DCMP_EQUAL = 3,
+	D3DCMP_LESSEQUAL = 4,
+	D3DCMP_GREATER = 5,
+	D3DCMP_NOTEQUAL = 6,
+	D3DCMP_GREATEREQUAL = 7,
+	D3DCMP_ALWAYS = 8,
+	D3DCMP_FORCE_DWORD = 0xffffffff
+} D3DCMPFUNC;
+
+typedef enum _D3DCUBEMAP_FACES {
+	D3DCUBEMAP_FACE_POSITIVE_X = 0,
+	D3DCUBEMAP_FACE_NEGATIVE_X = 1,
+	D3DCUBEMAP_FACE_POSITIVE_Y = 2,
+	D3DCUBEMAP_FACE_NEGATIVE_Y = 3,
+	D3DCUBEMAP_FACE_POSITIVE_Z = 4,
+	D3DCUBEMAP_FACE_NEGATIVE_Z = 5,
+	D3DCUBEMAP_FACE_FORCE_DWORD = 0xffffffff
+} D3DCUBEMAP_FACES;
+
+typedef enum _D3DCULL {
+	D3DCULL_NONE = 1,
+	D3DCULL_CW = 2,
+	D3DCULL_CCW = 3,
+	D3DCULL_FORCE_DWORD = 0xffffffff
+} D3DCULL;
+
+typedef enum _D3DDEBUGMONITORTOKENS {
+	D3DDMT_ENABLE = 0,
+	D3DDMT_DISABLE = 1,
+	D3DDMT_FORCE_DWORD = 0xffffffff
+} D3DDEBUGMONITORTOKENS;
+
+typedef enum _D3DDECLMETHOD
+{
+	D3DDECLMETHOD_DEFAULT = 0,
+	D3DDECLMETHOD_PARTIALU = 1,
+	D3DDECLMETHOD_PARTIALV = 2,
+	D3DDECLMETHOD_CROSSUV = 3,
+	D3DDECLMETHOD_UV = 4,
+	D3DDECLMETHOD_LOOKUP = 5,
+	D3DDECLMETHOD_LOOKUPPRESAMPLED = 6
+} D3DDECLMETHOD;
+
+typedef enum _D3DDECLTYPE
+{
+	D3DDECLTYPE_FLOAT1 = 0,
+	D3DDECLTYPE_FLOAT2 = 1,
+	D3DDECLTYPE_FLOAT3 = 2,
+	D3DDECLTYPE_FLOAT4 = 3,
+	D3DDECLTYPE_D3DCOLOR = 4,
+	D3DDECLTYPE_UBYTE4 = 5,
+	D3DDECLTYPE_SHORT2 = 6,
+	D3DDECLTYPE_SHORT4 = 7,
+	D3DDECLTYPE_UBYTE4N = 8,
+	D3DDECLTYPE_SHORT2N = 9,
+	D3DDECLTYPE_SHORT4N = 10,
+	D3DDECLTYPE_USHORT2N = 11,
+	D3DDECLTYPE_USHORT4N = 12,
+	D3DDECLTYPE_UDEC3 = 13,
+	D3DDECLTYPE_DEC3N = 14,
+	D3DDECLTYPE_FLOAT16_2 = 15,
+	D3DDECLTYPE_FLOAT16_4 = 16,
+	D3DDECLTYPE_UNUSED = 17,
+} D3DDECLTYPE;
+
+typedef enum _D3DDECLUSAGE
+{
+	D3DDECLUSAGE_POSITION = 0,
+	D3DDECLUSAGE_BLENDWEIGHT = 1,
+	D3DDECLUSAGE_BLENDINDICES = 2,
+	D3DDECLUSAGE_NORMAL = 3,
+	D3DDECLUSAGE_PSIZE = 4,
+	D3DDECLUSAGE_TEXCOORD = 5,
+	D3DDECLUSAGE_TANGENT = 6,
+	D3DDECLUSAGE_BINORMAL = 7,
+	D3DDECLUSAGE_TESSFACTOR = 8,
+	D3DDECLUSAGE_POSITIONT = 9,
+	D3DDECLUSAGE_COLOR = 10,
+	D3DDECLUSAGE_FOG = 11,
+	D3DDECLUSAGE_DEPTH = 12,
+	D3DDECLUSAGE_SAMPLE = 13
+} D3DDECLUSAGE;
+
+typedef enum _D3DDEGREETYPE {
+	D3DDEGREE_LINEAR = 1,
+	D3DDEGREE_QUADRATIC = 2,
+	D3DDEGREE_CUBIC = 3,
+	D3DDEGREE_QUINTIC = 5,
+	D3DDEGREE_FORCE_DWORD = 0xffffffff,
+} D3DDEGREETYPE;
+
+typedef enum _D3DDEVTYPE {
+	D3DDEVTYPE_HAL = 1,
+	D3DDEVTYPE_REF = 2,
+	D3DDEVTYPE_SW = 3,
+	D3DDEVTYPE_FORCE_DWORD = 0xffffffff
+} D3DDEVTYPE;
+
+typedef enum _D3DFILLMODE {
+	D3DFILL_POINT = 1,
+	D3DFILL_WIREFRAME = 2,
+	D3DFILL_SOLID = 3,
+	D3DFILL_FORCE_DWORD = 0xffffffff
+} D3DFILLMODE;
+
+typedef enum _D3DFOGMODE {
+	D3DFOG_NONE = 0,
+	D3DFOG_EXP = 1,
+	D3DFOG_EXP2 = 2,
+	D3DFOG_LINEAR = 3,
+	D3DFOG_FORCE_DWORD = 0xffffffff
+} D3DFOGMODE;
+
+typedef enum _D3DFORMAT {
+	D3DFMT_UNKNOWN = 0,
+	D3DFMT_R8G8B8 = 20,
+	D3DFMT_A8R8G8B8 = 21,
+	D3DFMT_X8R8G8B8 = 22,
+	D3DFMT_R5G6B5 = 23,
+	D3DFMT_X1R5G5B5 = 24,
+	D3DFMT_A1R5G5B5 = 25,
+	D3DFMT_A4R4G4B4 = 26,
+	D3DFMT_R3G3B2 = 27,
+	D3DFMT_A8 = 28,
+	D3DFMT_A8R3G3B2 = 29,
+	D3DFMT_X4R4G4B4 = 30,
+	D3DFMT_A2B10G10R10 = 31,
+	D3DFMT_A8B8G8R8 = 32,
+	D3DFMT_X8B8G8R8 = 33,
+	D3DFMT_G16R16 = 34,
+	D3DFMT_A2R10G10B10 = 35,
+	D3DFMT_A16B16G16R16 = 36,
+	D3DFMT_A8P8 = 40,
+	D3DFMT_P8 = 41,
+	D3DFMT_L8 = 50,
+	D3DFMT_A8L8 = 51,
+	D3DFMT_A4L4 = 52,
+	D3DFMT_V8U8 = 60,
+	D3DFMT_L6V5U5 = 61,
+	D3DFMT_X8L8V8U8 = 62,
+	D3DFMT_Q8W8V8U8 = 63,
+	D3DFMT_V16U16 = 64,
+    D3DFMT_A2W10V10U10 = 67,
+	D3DFMT_UYVY = MAKEFOURCC('U','Y','V','Y'),
+	D3DFMT_R8G8_B8G8 = MAKEFOURCC('R','G','B','G'),
+	D3DFMT_YUY2 = MAKEFOURCC('Y','U','Y','2'),
+	D3DFMT_G8R8_G8B8 = MAKEFOURCC('G','R','G','B'),
+	D3DFMT_DXT1 = MAKEFOURCC('D','X','T','1'),
+	D3DFMT_DXT2 = MAKEFOURCC('D','X','T','2'),
+	D3DFMT_DXT3 = MAKEFOURCC('D','X','T','3'),
+	D3DFMT_DXT4 = MAKEFOURCC('D','X','T','4'),
+	D3DFMT_DXT5 = MAKEFOURCC('D','X','T','5'),
+	D3DFMT_D16_LOCKABLE = 70,
+	D3DFMT_D32 = 71,
+	D3DFMT_D15S1 = 73,
+	D3DFMT_D24S8 = 75,
+	D3DFMT_D24X8 = 77,
+	D3DFMT_D24X4S4 = 79,
+	D3DFMT_D16 = 80,
+	D3DFMT_L16 = 81,
+	D3DFMT_D32F_LOCKABLE = 82,
+	D3DFMT_D24FS8 = 83,
+	D3DFMT_VERTEXDATA = 100,
+	D3DFMT_INDEX16 = 101,
+	D3DFMT_INDEX32 = 102,
+	D3DFMT_Q16W16V16U16 = 110,
+	D3DFMT_MULTI2_ARGB8 = MAKEFOURCC('M','E','T','1'),
+	D3DFMT_R16F = 111,
+	D3DFMT_G16R16F = 112,
+	D3DFMT_A16B16G16R16F = 113,
+	D3DFMT_R32F = 114,
+	D3DFMT_G32R32F = 115,
+	D3DFMT_A32B32G32R32F = 116,
+	D3DFMT_CxV8U8 = 117,
+	D3DFMT_FORCE_DWORD = 0xffffffff
+} D3DFORMAT;
+
+typedef enum _D3DLIGHTTYPE {
+	D3DLIGHT_POINT = 1,
+	D3DLIGHT_SPOT = 2,
+	D3DLIGHT_DIRECTIONAL = 3,
+	D3DLIGHT_FORCE_DWORD = 0xffffffff
+} D3DLIGHTTYPE;
+
+typedef enum _D3DMATERIALCOLORSOURCE
+{
+	D3DMCS_MATERIAL = 0,
+	D3DMCS_COLOR1 = 1,
+	D3DMCS_COLOR2 = 2,
+	D3DMCS_FORCE_DWORD = 0xffffffff
+} D3DMATERIALCOLORSOURCE;
+
+typedef enum _D3DMULTISAMPLE_TYPE {
+	D3DMULTISAMPLE_NONE = 0,
+	D3DMULTISAMPLE_NONMASKABLE = 1,
+	D3DMULTISAMPLE_2_SAMPLES = 2,
+	D3DMULTISAMPLE_3_SAMPLES = 3,
+	D3DMULTISAMPLE_4_SAMPLES = 4,
+	D3DMULTISAMPLE_5_SAMPLES = 5,
+	D3DMULTISAMPLE_6_SAMPLES = 6,
+	D3DMULTISAMPLE_7_SAMPLES = 7,
+	D3DMULTISAMPLE_8_SAMPLES = 8,
+	D3DMULTISAMPLE_9_SAMPLES = 9,
+	D3DMULTISAMPLE_10_SAMPLES = 10,
+	D3DMULTISAMPLE_11_SAMPLES = 11,
+	D3DMULTISAMPLE_12_SAMPLES = 12,
+	D3DMULTISAMPLE_13_SAMPLES = 13,
+	D3DMULTISAMPLE_14_SAMPLES = 14,
+	D3DMULTISAMPLE_15_SAMPLES = 15,
+	D3DMULTISAMPLE_16_SAMPLES = 16,
+	D3DMULTISAMPLE_FORCE_DWORD = 0xffffffff
+} D3DMULTISAMPLE_TYPE;
+
+typedef enum _D3DORDERTYPE {
+	D3DORDER_LINEAR = 1,
+	D3DORDER_QUADRATIC = 2,
+	D3DORDER_CUBIC = 3,
+	D3DORDER_QUINTIC = 5,
+	D3DORDER_FORCE_DWORD = 0xffffffff
+} D3DORDERTYPE;
+
+typedef enum _D3DPATCHEDGESTYLE
+{
+	D3DPATCHEDGE_DISCRETE = 0,
+	D3DPATCHEDGE_CONTINUOUS = 1,
+	D3DPATCHEDGE_FORCE_DWORD = 0xffffffff
+} D3DPATCHEDGESTYLE;
+
+typedef enum _D3DPOOL {
+	D3DPOOL_DEFAULT = 0,
+	D3DPOOL_MANAGED = 1,
+	D3DPOOL_SYSTEMMEM = 2,
+	D3DPOOL_SCRATCH = 3,
+	D3DPOOL_FORCE_DWORD = 0xffffffff
+} D3DPOOL;
+
+typedef enum _D3DPRIMITIVETYPE {
+	D3DPT_POINTLIST = 1,
+	D3DPT_LINELIST = 2,
+	D3DPT_LINESTRIP = 3,
+	D3DPT_TRIANGLELIST = 4,
+	D3DPT_TRIANGLESTRIP = 5,
+	D3DPT_TRIANGLEFAN = 6,
+	D3DPT_FORCE_DWORD = 0xffffffff
+} D3DPRIMITIVETYPE;
+
+typedef enum _D3DQUERYTYPE {
+	D3DQUERYTYPE_VCACHE = 4, 
+	D3DQUERYTYPE_RESOURCEMANAGER = 5, 
+	D3DQUERYTYPE_VERTEXSTATS = 6, 
+	D3DQUERYTYPE_EVENT = 8, 
+	D3DQUERYTYPE_OCCLUSION = 9
+} D3DQUERYTYPE;
+
+typedef enum _D3DRENDERSTATETYPE {
+	D3DRS_ZENABLE = 7,
+	D3DRS_FILLMODE = 8,
+	D3DRS_SHADEMODE = 9,
+	D3DRS_ZWRITEENABLE = 14,
+	D3DRS_ALPHATESTENABLE = 15,
+	D3DRS_LASTPIXEL = 16,
+	D3DRS_SRCBLEND = 19,
+	D3DRS_DESTBLEND = 20,
+	D3DRS_CULLMODE = 22,
+	D3DRS_ZFUNC = 23,
+	D3DRS_ALPHAREF = 24,
+	D3DRS_ALPHAFUNC = 25,
+	D3DRS_DITHERENABLE = 26,
+	D3DRS_ALPHABLENDENABLE = 27,
+	D3DRS_FOGENABLE = 28,
+	D3DRS_SPECULARENABLE = 29,
+	D3DRS_FOGCOLOR = 34,
+	D3DRS_FOGTABLEMODE = 35,
+	D3DRS_FOGSTART = 36,
+	D3DRS_FOGEND = 37,
+	D3DRS_FOGDENSITY = 38,
+	D3DRS_RANGEFOGENABLE = 48,
+	D3DRS_STENCILENABLE = 52,
+	D3DRS_STENCILFAIL = 53,
+	D3DRS_STENCILZFAIL = 54,
+	D3DRS_STENCILPASS = 55,
+	D3DRS_STENCILFUNC = 56,
+	D3DRS_STENCILREF = 57,
+	D3DRS_STENCILMASK = 58,
+	D3DRS_STENCILWRITEMASK = 59,
+	D3DRS_TEXTUREFACTOR = 60,
+	D3DRS_WRAP0 = 128,
+	D3DRS_WRAP1 = 129,
+	D3DRS_WRAP2 = 130,
+	D3DRS_WRAP3 = 131,
+	D3DRS_WRAP4 = 132,
+	D3DRS_WRAP5 = 133,
+	D3DRS_WRAP6 = 134,
+	D3DRS_WRAP7 = 135,
+	D3DRS_CLIPPING = 136,
+	D3DRS_LIGHTING = 137,
+	D3DRS_AMBIENT = 139,
+	D3DRS_FOGVERTEXMODE = 140,
+	D3DRS_COLORVERTEX = 141,
+	D3DRS_LOCALVIEWER = 142,
+	D3DRS_NORMALIZENORMALS = 143,
+	D3DRS_DIFFUSEMATERIALSOURCE = 145,
+	D3DRS_SPECULARMATERIALSOURCE = 146,
+	D3DRS_AMBIENTMATERIALSOURCE = 147,
+	D3DRS_EMISSIVEMATERIALSOURCE = 148,
+	D3DRS_VERTEXBLEND = 151,
+	D3DRS_CLIPPLANEENABLE = 152,
+	D3DRS_POINTSIZE = 154,
+	D3DRS_POINTSIZE_MIN = 155,
+	D3DRS_POINTSPRITEENABLE = 156,
+	D3DRS_POINTSCALEENABLE = 157,
+	D3DRS_POINTSCALE_A = 158,
+	D3DRS_POINTSCALE_B = 159,
+	D3DRS_POINTSCALE_C = 160,
+	D3DRS_MULTISAMPLEANTIALIAS = 161,
+	D3DRS_MULTISAMPLEMASK = 162,
+	D3DRS_PATCHEDGESTYLE = 163,
+	D3DRS_DEBUGMONITORTOKEN = 165,
+	D3DRS_POINTSIZE_MAX = 166,
+	D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
+	D3DRS_COLORWRITEENABLE = 168,
+	D3DRS_TWEENFACTOR = 170,
+	D3DRS_BLENDOP = 171,
+	D3DRS_POSITIONDEGREE = 172,
+	D3DRS_NORMALDEGREE = 173,
+	D3DRS_SCISSORTESTENABLE = 174,
+	D3DRS_SLOPESCALEDEPTHBIAS = 175,
+	D3DRS_ANTIALIASEDLINEENABLE = 176,
+	D3DRS_MINTESSELLATIONLEVEL = 178,
+	D3DRS_MAXTESSELLATIONLEVEL = 179,
+	D3DRS_ADAPTIVETESS_X = 180,
+	D3DRS_ADAPTIVETESS_Y = 181,
+	D3DRS_ADAPTIVETESS_Z = 182,
+	D3DRS_ADAPTIVETESS_W = 183,
+	D3DRS_ENABLEADAPTIVETESSELLATION = 184,
+	D3DRS_TWOSIDEDSTENCILMODE = 185,
+	D3DRS_CCW_STENCILFAIL = 186,
+	D3DRS_CCW_STENCILZFAIL = 187,
+	D3DRS_CCW_STENCILPASS = 188,
+	D3DRS_CCW_STENCILFUNC = 189,
+	D3DRS_COLORWRITEENABLE1 = 190,
+	D3DRS_COLORWRITEENABLE2 = 191,
+	D3DRS_COLORWRITEENABLE3 = 192,
+	D3DRS_BLENDFACTOR = 193,
+	D3DRS_SRGBWRITEENABLE = 194,
+	D3DRS_DEPTHBIAS = 195,
+	D3DRS_WRAP8 = 198,
+	D3DRS_WRAP9 = 199,
+	D3DRS_WRAP10 = 200,
+	D3DRS_WRAP11 = 201,
+	D3DRS_WRAP12 = 202,
+	D3DRS_WRAP13 = 203,
+	D3DRS_WRAP14 = 204,
+	D3DRS_WRAP15 = 205,
+	D3DRS_SEPARATEALPHABLENDENABLE = 206,
+	D3DRS_SRCBLENDALPHA = 207,
+	D3DRS_DESTBLENDALPHA = 208,
+	D3DRS_BLENDOPALPHA = 209,
+	D3DRS_FORCE_DWORD = 0xffffffff
+} D3DRENDERSTATETYPE;
+
+typedef enum _D3DRESOURCETYPE {
+	D3DRTYPE_SURFACE = 1,
+	D3DRTYPE_VOLUME = 2,
+	D3DRTYPE_TEXTURE = 3,
+	D3DRTYPE_VOLUMETEXTURE = 4,
+	D3DRTYPE_CUBETEXTURE = 5,
+	D3DRTYPE_VERTEXBUFFER = 6,
+	D3DRTYPE_INDEXBUFFER = 7,
+	D3DRTYPE_FORCE_DWORD = 0xffffffff
+} D3DRESOURCETYPE;
+
+typedef enum _D3DSAMPLER_TEXTURE_TYPE
+{
+	D3DSTT_UNKNOWN = 0 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_2D = 2 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_CUBE = 3 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_VOLUME = 4 << D3DSP_TEXTURETYPE_SHIFT,
+	D3DSTT_FORCE_DWORD = 0xffffffff
+} D3DSAMPLER_TEXTURE_TYPE;
+
+typedef enum _D3DSAMPLERSTATETYPE {
+	D3DSAMP_ADDRESSU = 1,
+	D3DSAMP_ADDRESSV = 2,
+	D3DSAMP_ADDRESSW = 3,
+	D3DSAMP_BORDERCOLOR = 4,
+	D3DSAMP_MAGFILTER = 5,
+	D3DSAMP_MINFILTER = 6,
+	D3DSAMP_MIPFILTER = 7,
+	D3DSAMP_MIPMAPLODBIAS = 8,
+	D3DSAMP_MAXMIPLEVEL = 9,
+	D3DSAMP_MAXANISOTROPY = 10,
+	D3DSAMP_SRGBTEXTURE = 11,
+	D3DSAMP_ELEMENTINDEX = 12,
+	D3DSAMP_DMAPOFFSET = 13,
+	D3DSAMP_FORCE_DWORD = 0xffffffff,
+} D3DSAMPLERSTATETYPE;
+
+typedef enum _D3DSHADEMODE {
+	D3DSHADE_FLAT = 1,
+	D3DSHADE_GOURAUD = 2,
+	D3DSHADE_PHONG = 3,
+	D3DSHADE_FORCE_DWORD = 0xffffffff
+} D3DSHADEMODE;
+
+typedef enum _D3DSHADER_ADDRESSMODE_TYPE
+{
+	D3DSHADER_ADDRMODE_ABSOLUTE = (0 << D3DSHADER_ADDRESSMODE_SHIFT),
+	D3DSHADER_ADDRMODE_RELATIVE = (1 << D3DSHADER_ADDRESSMODE_SHIFT),
+	D3DSHADER_ADDRMODE_FORCE_DWORD = 0xffffffff
+} D3DSHADER_ADDRESSMODE_TYPE;
+
+typedef enum _D3DSHADER_COMPARISON
+{
+	D3DSPC_RESERVED0 = 0,
+	D3DSPC_GT = 1,
+	D3DSPC_EQ = 2,
+	D3DSPC_GE = 3,
+	D3DSPC_LT = 4,
+	D3DSPC_NE = 5,
+	D3DSPC_LE = 6,
+	D3DSPC_RESERVED1 = 7
+} D3DSHADER_COMPARISON;
+
+typedef enum _D3DSHADER_INSTRUCTION_OPCODE_TYPE
+{
+	D3DSIO_NOP = 0,
+	D3DSIO_MOV = 1,
+	D3DSIO_ADD = 2,
+	D3DSIO_SUB = 3,
+	D3DSIO_MAD = 4,
+	D3DSIO_MUL = 5,
+	D3DSIO_RCP = 6,
+	D3DSIO_RSQ = 7,
+	D3DSIO_DP3 = 8,
+	D3DSIO_DP4 = 9,
+	D3DSIO_MIN = 10,
+	D3DSIO_MAX = 11,
+	D3DSIO_SLT = 12,
+	D3DSIO_SGE = 13,
+	D3DSIO_EXP = 14,
+	D3DSIO_LOG = 15,
+	D3DSIO_LIT = 16,
+	D3DSIO_DST = 17,
+	D3DSIO_LRP = 18,
+	D3DSIO_FRC = 19,
+	D3DSIO_M4x4 = 20,
+	D3DSIO_M4x3 = 21,
+	D3DSIO_M3x4 = 22,
+	D3DSIO_M3x3 = 23,
+	D3DSIO_M3x2 = 24,
+	D3DSIO_CALL = 25,
+	D3DSIO_CALLNZ = 26,
+	D3DSIO_LOOP = 27,
+	D3DSIO_RET = 28,
+	D3DSIO_ENDLOOP = 29,
+	D3DSIO_LABEL = 30,
+	D3DSIO_DCL = 31,
+	D3DSIO_POW = 32,
+	D3DSIO_CRS = 33,
+	D3DSIO_SGN = 34,
+	D3DSIO_ABS = 35,
+	D3DSIO_NRM = 36,
+	D3DSIO_SINCOS = 37,
+	D3DSIO_REP = 38,
+	D3DSIO_ENDREP = 39,
+	D3DSIO_IF = 40,
+	D3DSIO_IFC = 41,
+	D3DSIO_ELSE = 42,
+	D3DSIO_ENDIF = 43,
+	D3DSIO_BREAK = 44,
+	D3DSIO_BREAKC = 45,
+	D3DSIO_MOVA = 46,
+	D3DSIO_DEFB = 47,
+	D3DSIO_DEFI = 48,
+	D3DSIO_TEXCOORD = 64,
+	D3DSIO_TEXKILL = 65,
+	D3DSIO_TEX = 66,
+	D3DSIO_TEXBEM = 67,
+	D3DSIO_TEXBEML = 68,
+	D3DSIO_TEXREG2AR = 69,
+	D3DSIO_TEXREG2GB = 70,
+	D3DSIO_TEXM3x2PAD = 71,
+	D3DSIO_TEXM3x2TEX = 72,
+	D3DSIO_TEXM3x3PAD = 73,
+	D3DSIO_TEXM3x3TEX = 74,
+	D3DSIO_RESERVED0 = 75,
+	D3DSIO_TEXM3x3SPEC = 76,
+	D3DSIO_TEXM3x3VSPEC = 77,
+	D3DSIO_EXPP = 78,
+	D3DSIO_LOGP = 79,
+	D3DSIO_CND = 80,
+	D3DSIO_DEF = 81,
+	D3DSIO_TEXREG2RGB = 82,
+	D3DSIO_TEXDP3TEX = 83,
+	D3DSIO_TEXM3x2DEPTH = 84,
+	D3DSIO_TEXDP3 = 85,
+	D3DSIO_TEXM3x3 = 86,
+	D3DSIO_TEXDEPTH = 87,
+	D3DSIO_CMP = 88,
+	D3DSIO_BEM = 89,
+	D3DSIO_DP2ADD = 90,
+	D3DSIO_DSX = 91,
+	D3DSIO_DSY = 92,
+	D3DSIO_TEXLDD = 93,
+	D3DSIO_SETP = 94,
+	D3DSIO_TEXLDL = 95,
+	D3DSIO_BREAKP = 96,
+	D3DSIO_PHASE = 0xfffd,
+	D3DSIO_COMMENT = 0xfffe,
+	D3DSIO_END = 0xffff,
+	D3DSIO_FORCE_DWORD = 0xffffffff
+} D3DSHADER_INSTRUCTION_OPCODE_TYPE;
+
+typedef enum _D3DSHADER_MISCTYPE_OFFSETS
+{
+	D3DSMO_POSITION = 0,
+	D3DSMO_FACE = 1
+} D3DSHADER_MISCTYPE_OFFSETS;
+
+typedef enum _D3DSHADER_PARAM_REGISTER_TYPE
+{
+	D3DSPR_TEMP = 0,
+	D3DSPR_INPUT = 1,
+	D3DSPR_CONST = 2,
+	D3DSPR_ADDR = 3,
+	D3DSPR_TEXTURE = 3,
+	D3DSPR_RASTOUT = 4,
+	D3DSPR_ATTROUT = 5,
+	D3DSPR_TEXCRDOUT = 6,
+	D3DSPR_OUTPUT = 6,
+	D3DSPR_CONSTINT = 7,
+	D3DSPR_COLOROUT = 8,
+	D3DSPR_DEPTHOUT = 9,
+	D3DSPR_SAMPLER = 10,
+	D3DSPR_CONST2 = 11,
+	D3DSPR_CONST3 = 12,
+	D3DSPR_CONST4 = 13,
+	D3DSPR_CONSTBOOL = 14,
+	D3DSPR_LOOP = 15,
+	D3DSPR_TEMPFLOAT16 = 16,
+	D3DSPR_MISCTYPE = 17,
+	D3DSPR_LABEL = 18,
+	D3DSPR_PREDICATE = 19,
+	D3DSPR_FORCE_DWORD = 0xffffffff
+} D3DSHADER_PARAM_REGISTER_TYPE;
+
+typedef enum _D3DSHADER_PARAM_SRCMOD_TYPE
+{
+	D3DSPSM_NONE = 0 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_NEG = 1 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_BIAS = 2 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_BIASNEG = 3 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_SIGN = 4 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_SIGNNEG = 5 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_COMP = 6 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_X2 = 7 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_X2NEG = 8 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_DZ = 9 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_DW = 10 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_ABS = 11 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_ABSNEG = 12 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_NOT = 13 << D3DSP_SRCMOD_SHIFT,
+	D3DSPSM_FORCE_DWORD = 0xffffffff
+} D3DSHADER_PARAM_SRCMOD_TYPE;
+
+typedef enum _D3DVS_ADDRESSMODE_TYPE
+{
+	D3DVS_ADDRMODE_ABSOLUTE = (0 << D3DVS_ADDRESSMODE_SHIFT),
+	D3DVS_ADDRMODE_RELATIVE = (1 << D3DVS_ADDRESSMODE_SHIFT),
+	D3DVS_ADDRMODE_FORCE_DWORD = 0xffffffff
+} D3DVS_ADDRESSMODE_TYPE;
+
+typedef enum _D3DVS_RASTOUT_OFFSETS
+{
+	D3DSRO_POSITION = 0,
+	D3DSRO_FOG = 1,
+	D3DSRO_POINT_SIZE = 2,
+	D3DSRO_FORCE_DWORD = 0xffffffff
+} D3DVS_RASTOUT_OFFSETS;
+
+typedef enum _D3DSTENCILOP {
+	D3DSTENCILOP_KEEP = 1,
+	D3DSTENCILOP_ZERO = 2,
+	D3DSTENCILOP_REPLACE = 3,
+	D3DSTENCILOP_INCRSAT = 4,
+	D3DSTENCILOP_DECRSAT = 5,
+	D3DSTENCILOP_INVERT = 6,
+	D3DSTENCILOP_INCR = 7,
+	D3DSTENCILOP_DECR = 8,
+	D3DSTENCILOP_FORCE_DWORD = 0x7fffffff
+} D3DSTENCILOP;
+
+typedef enum _D3DSTATEBLOCKTYPE {
+	D3DSBT_ALL = 1,
+	D3DSBT_PIXELSTATE = 2,
+	D3DSBT_VERTEXSTATE = 3,
+	D3DSBT_FORCE_DWORD = 0xffffffff
+} D3DSTATEBLOCKTYPE;
+
+typedef enum _D3DSWAPEFFECT {
+	D3DSWAPEFFECT_DISCARD = 1,
+	D3DSWAPEFFECT_FLIP = 2,
+	D3DSWAPEFFECT_COPY = 3,
+	D3DSWAPEFFECT_COPY_VSYNC = 4,
+	D3DSWAPEFFECT_FORCE_DWORD = 0xffffffff
+} D3DSWAPEFFECT;
+
+typedef enum _D3DTEXTUREADDRESS {
+	D3DTADDRESS_WRAP = 1,
+	D3DTADDRESS_MIRROR = 2,
+	D3DTADDRESS_CLAMP = 3,
+	D3DTADDRESS_BORDER = 4,
+	D3DTADDRESS_MIRRORONCE = 5,
+	D3DTADDRESS_FORCE_DWORD = 0xffffffff
+} D3DTEXTUREADDRESS;
+
+typedef enum _D3DTEXTUREFILTERTYPE {
+	D3DTEXF_NONE = 0,
+	D3DTEXF_POINT = 1,
+	D3DTEXF_LINEAR = 2,
+	D3DTEXF_ANISOTROPIC = 3,
+	D3DTEXF_PYRAMIDALQUAD = 6,
+	D3DTEXF_GAUSSIANQUAD = 7,
+	D3DTEXF_FORCE_DWORD = 0xffffffff
+} D3DTEXTUREFILTERTYPE;
+
+typedef enum _D3DTEXTURESTAGESTATETYPE {
+	D3DTSS_COLOROP = 1,
+	D3DTSS_COLORARG1 = 2,
+	D3DTSS_COLORARG2 = 3,
+	D3DTSS_ALPHAOP = 4,
+	D3DTSS_ALPHAARG1 = 5,
+	D3DTSS_ALPHAARG2 = 6,
+	D3DTSS_BUMPENVMAT00 = 7,
+	D3DTSS_BUMPENVMAT01 = 8,
+	D3DTSS_BUMPENVMAT10 = 9,
+	D3DTSS_BUMPENVMAT11 = 10,
+	D3DTSS_TEXCOORDINDEX = 11,
+	D3DTSS_BUMPENVLSCALE = 22,
+	D3DTSS_BUMPENVLOFFSET = 23,
+	D3DTSS_TEXTURETRANSFORMFLAGS = 24,
+	D3DTSS_ADDRESSW = 25,
+	D3DTSS_COLORARG0 = 26,
+	D3DTSS_ALPHAARG0 = 27,
+	D3DTSS_RESULTARG = 28,
+	D3DTSS_CONSTANT = 32,
+	D3DTSS_FORCE_DWORD = 0xffffffff
+} D3DTEXTURESTAGESTATETYPE;
+
+typedef enum _D3DTEXTUREOP {
+	D3DTOP_DISABLE = 1,
+	D3DTOP_SELECTARG1 = 2,
+	D3DTOP_SELECTARG2 = 3,
+	D3DTOP_MODULATE = 4,
+	D3DTOP_MODULATE2X = 5,
+	D3DTOP_MODULATE4X = 6,
+	D3DTOP_ADD = 7,
+	D3DTOP_ADDSIGNED = 8,
+	D3DTOP_ADDSIGNED2X = 9,
+	D3DTOP_SUBTRACT = 10,
+	D3DTOP_ADDSMOOTH = 11,
+	D3DTOP_BLENDDIFFUSEALPHA = 12,
+	D3DTOP_BLENDTEXTUREALPHA = 13,
+	D3DTOP_BLENDFACTORALPHA = 14,
+	D3DTOP_BLENDTEXTUREALPHAPM = 15,
+	D3DTOP_BLENDCURRENTALPHA = 16,
+	D3DTOP_PREMODULATE = 17,
+	D3DTOP_MODULATEALPHA_ADDCOLOR = 18,
+	D3DTOP_MODULATECOLOR_ADDALPHA = 19,
+	D3DTOP_MODULATEINVALPHA_ADDCOLOR = 20,
+	D3DTOP_MODULATEINVCOLOR_ADDALPHA = 21,
+	D3DTOP_BUMPENVMAP = 22,
+	D3DTOP_BUMPENVMAPLUMINANCE = 23,
+	D3DTOP_DOTPRODUCT3 = 24,
+	D3DTOP_MULTIPLYADD = 25,
+	D3DTOP_LERP = 26,
+	D3DTOP_FORCE_DWORD = 0xffffffff,
+} D3DTEXTUREOP;
+
+typedef enum _D3DTEXTURETRANSFORMFLAGS {
+	D3DTTFF_DISABLE = 0,
+	D3DTTFF_COUNT1 = 1,
+	D3DTTFF_COUNT2 = 2,
+	D3DTTFF_COUNT3 = 3,
+	D3DTTFF_COUNT4 = 4,
+	D3DTTFF_PROJECTED = 256,
+	D3DTTFF_FORCE_DWORD = 0xffffffff,
+} D3DTEXTURETRANSFORMFLAGS;
+
+typedef enum _D3DTRANSFORMSTATETYPE {
+	D3DTS_VIEW = 2,
+	D3DTS_PROJECTION = 3,
+	D3DTS_TEXTURE0 = 16,
+	D3DTS_TEXTURE1 = 17,
+	D3DTS_TEXTURE2 = 18,
+	D3DTS_TEXTURE3 = 19,
+	D3DTS_TEXTURE4 = 20,
+	D3DTS_TEXTURE5 = 21,
+	D3DTS_TEXTURE6 = 22,
+	D3DTS_TEXTURE7 = 23,
+	D3DTS_FORCE_DWORD = 0xffffffff
+} D3DTRANSFORMSTATETYPE;
+
+typedef enum _D3DVERTEXBLENDFLAGS
+{
+	D3DVBF_DISABLE = 0,
+	D3DVBF_1WEIGHTS = 1,
+	D3DVBF_2WEIGHTS = 2,
+	D3DVBF_3WEIGHTS = 3,
+	D3DVBF_TWEENING = 255,
+	D3DVBF_0WEIGHTS = 256,
+	D3DVBF_FORCE_DWORD = 0xffffffff
+} D3DVERTEXBLENDFLAGS;
+
+typedef enum _D3DZBUFFERTYPE {
+	D3DZB_FALSE = 0,
+	D3DZB_TRUE = 1,
+	D3DZB_USEW = 2,
+	D3DZB_FORCE_DWORD = 0xffffffff
+} D3DZBUFFERTYPE;
+
+typedef struct _D3DADAPTER_IDENTIFIER9 {
+	char Driver[MAX_DEVICE_IDENTIFIER_STRING];
+	char Description[MAX_DEVICE_IDENTIFIER_STRING];
+	char DeviceName[32];
+	LARGE_INTEGER DriverVersion; 
+    DWORD VendorId;
+    DWORD DeviceId;
+    DWORD SubSysId;
+    DWORD Revision;
+    GUID DeviceIdentifier;
+    DWORD WHQLLevel;
+} D3DADAPTER_IDENTIFIER9;
+
+typedef struct _D3DBOX {
+	UINT Left;
+	UINT Top;
+	UINT Right;
+	UINT Bottom;
+	UINT Front;
+	UINT Back;
+} D3DBOX;
+
+typedef struct _D3DCLIPSTATUS9 {
+	DWORD ClipUnion;
+	DWORD ClipIntersection;
+} D3DCLIPSTATUS9;
+
+typedef struct _D3DCOLORVALUE {
+	float r;
+	float g;
+	float b;
+	float a;
+} D3DCOLORVALUE;
+
+typedef struct _D3DRESOURCESTATS
+{
+	BOOL bThrashing;
+	DWORD ApproxBytesDownloaded;
+	DWORD NumEvicts;
+	DWORD NumVidCreates;
+	DWORD LastPri;
+	DWORD NumUsed;
+	DWORD NumUsedInVidMem;
+	DWORD WorkingSet;
+	DWORD WorkingSetBytes;
+	DWORD TotalManaged;
+	DWORD TotalBytes;
+} D3DRESOURCESTATS;
+
+typedef struct _D3DDEVICE_CREATION_PARAMETERS {
+	UINT AdapterOrdinal;
+	D3DDEVTYPE DeviceType;
+	HWND hFocusWindow;
+	DWORD BehaviorFlags;
+} D3DDEVICE_CREATION_PARAMETERS;
+
+typedef struct _D3DDEVINFO_RESOURCEMANAGER {
+	D3DRESOURCESTATS stats[D3DRTYPECOUNT];
+} D3DDEVINFO_RESOURCEMANAGER, *LPD3DDEVINFO_RESOURCEMANAGER;
+
+typedef struct _D3DDEVINFO_D3DVERTEXSTATS {
+	DWORD NumRenderedTriangles;
+	DWORD NumExtraClippingTriangles;
+} D3DDEVINFO_D3DVERTEXSTATS, *LPD3DDEVINFO_D3DVERTEXSTATS;
+
+typedef struct _D3DDEVINFO_VCACHE {
+	DWORD Pattern;
+	DWORD OptMethod;
+	DWORD CacheSize;
+	DWORD MagicNumber;
+} D3DDEVINFO_VCACHE, *LPD3DDEVINFO_VCACHE;
+
+typedef struct _D3DDISPLAYMODE {
+	UINT Width;
+	UINT Height;
+	UINT RefreshRate;
+	D3DFORMAT Format;
+} D3DDISPLAYMODE;
+
+typedef struct _D3DGAMMARAMP {
+	WORD red[256];
+	WORD green[256];
+	WORD blue[256];
+} D3DGAMMARAMP;
+
+typedef struct _D3DINDEXBUFFER_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+} D3DINDEXBUFFER_DESC;
+
+typedef struct _D3DVECTOR {
+	float x;
+	float y;
+	float z;
+} D3DVECTOR;
+
+typedef struct _D3DLIGHT9 {
+	D3DLIGHTTYPE Type;
+	D3DCOLORVALUE Diffuse;
+	D3DCOLORVALUE Specular;
+	D3DCOLORVALUE Ambient;
+	D3DVECTOR Position;
+	D3DVECTOR Direction;
+	float Range;
+	float Falloff;
+	float Attenuation0;
+	float Attenuation1;
+	float Attenuation2;
+	float Theta;
+	float Phi;
+} D3DLIGHT9;
+
+typedef struct _D3DLOCKED_BOX {
+	INT RowPitch;
+	INT SlicePitch;
+	void *pBits;
+} D3DLOCKED_BOX;
+
+typedef struct _D3DLOCKED_RECT {
+	INT Pitch;
+	void *pBits;
+} D3DLOCKED_RECT;
+
+typedef struct _D3DMATERIAL9 {
+	D3DCOLORVALUE Diffuse;
+	D3DCOLORVALUE Ambient;
+	D3DCOLORVALUE Specular;
+	D3DCOLORVALUE Emissive;
+	float Power;
+} D3DMATERIAL9;
+
+typedef struct _D3DMATRIX {
+	union {
+		struct {
+			float _11, _12, _13, _14;
+			float _21, _22, _23, _24;
+			float _31, _32, _33, _34;
+			float _41, _42, _43, _44;
+		};
+		float m[4][4];
+	};
+} D3DMATRIX;
+
+typedef struct _D3DPRESENT_PARAMETERS {
+	UINT BackBufferWidth;
+	UINT BackBufferHeight;
+	D3DFORMAT BackBufferFormat;
+	UINT BackBufferCount;
+	D3DMULTISAMPLE_TYPE MultiSampleType;
+	DWORD MultiSampleQuality;
+	D3DSWAPEFFECT SwapEffect;
+	HWND hDeviceWindow;
+	BOOL Windowed;
+	BOOL EnableAutoDepthStencil;
+	D3DFORMAT AutoDepthStencilFormat;
+	DWORD Flags;
+	UINT FullScreen_RefreshRateInHz;
+	UINT PresentationInterval;
+} D3DPRESENT_PARAMETERS;
+
+typedef struct _D3DRANGE
+{
+	UINT Offset;
+	UINT Size;
+} D3DRANGE;
+
+typedef struct _D3DRASTER_STATUS {
+	BOOL InVBlank;
+	UINT ScanLine;
+} D3DRASTER_STATUS;
+
+typedef struct _D3DRECT {
+	LONG x1;
+	LONG y1;
+	LONG x2;
+	LONG y2;
+} D3DRECT;
+
+typedef struct _D3DRECTPATCH_INFO {
+	UINT StartVertexOffsetWidth;
+	UINT StartVertexOffsetHeight;
+	UINT Width;
+	UINT Height;
+	UINT Stride;
+	D3DBASISTYPE Basis;
+	D3DORDERTYPE Order;
+} D3DRECTPATCH_INFO;
+
+typedef struct _D3DSURFACE_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+	D3DMULTISAMPLE_TYPE MultiSampleType;
+	UINT Width;
+	UINT Height;
+} D3DSURFACE_DESC;
+
+typedef struct _D3DTRIPATCH_INFO {
+	UINT StartVertexOffset;
+	UINT NumVertices;
+	D3DBASISTYPE Basis;
+	D3DORDERTYPE Order;
+} D3DTRIPATCH_INFO;
+
+typedef struct _D3DVERTEXBUFFER_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Size;
+	DWORD FVF;
+} D3DVERTEXBUFFER_DESC;
+
+typedef struct _D3DVERTEXELEMENT9 {
+	WORD Stream;
+	WORD Offset;
+	BYTE Type;
+	BYTE Method;
+	BYTE Usage;
+	BYTE UsageIndex;
+} D3DVERTEXELEMENT9, *LPD3DVERTEXELEMENT9;
+
+typedef struct _D3DVIEWPORT9 {
+	DWORD X;
+	DWORD Y;
+	DWORD Width;
+	DWORD Height;
+	float MinZ;
+	float MaxZ;
+} D3DVIEWPORT9;
+
+typedef struct _D3DVOLUME_DESC {
+	D3DFORMAT Format;
+	D3DRESOURCETYPE Type;
+	DWORD Usage;
+	D3DPOOL Pool;
+	UINT Width;
+	UINT Height;
+	UINT Depth;
+} D3DVOLUME_DESC;
+
+#include <poppack.h>
+
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dbt.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,154 @@
+#ifndef _DBT_H
+#define _DBT_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define DBT_NO_DISK_SPACE	0x47
+#define DBT_CONFIGMGPRIVATE	0x7FFF
+#define DBT_DEVICEARRIVAL	0x8000
+#define DBT_DEVICEQUERYREMOVE	0x8001
+#define DBT_DEVICEQUERYREMOVEFAILED	0x8002
+#define DBT_DEVICEREMOVEPENDING	0x8003
+#define DBT_DEVICEREMOVECOMPLETE	0x8004
+#define DBT_DEVICETYPESPECIFIC	0x8005
+#define DBT_DEVTYP_OEM	0
+#define DBT_DEVTYP_DEVNODE	1
+#define DBT_DEVTYP_VOLUME	2
+#define DBT_DEVTYP_PORT	3
+#define DBT_DEVTYP_NET	4
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+#define DBT_DEVTYP_DEVICEINTERFACE 5
+#define DBT_DEVTYP_HANDLE 6
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+#define DBT_APPYBEGIN 0
+#define DBT_APPYEND 1
+#define DBT_DEVNODES_CHANGED 7
+#define DBT_QUERYCHANGECONFIG 0x17
+#define DBT_CONFIGCHANGED 0x18
+#define DBT_CONFIGCHANGECANCELED 0x19
+#define DBT_MONITORCHANGE 0x1B
+#define DBT_SHELLLOGGEDON 32
+#define DBT_CONFIGMGAPI32 34
+#define DBT_VXDINITCOMPLETE 35
+#define DBT_VOLLOCKQUERYLOCK 0x8041
+#define DBT_VOLLOCKLOCKTAKEN 0x8042
+#define DBT_VOLLOCKLOCKFAILED 0x8043
+#define DBT_VOLLOCKQUERYUNLOCK 0x8044
+#define DBT_VOLLOCKLOCKRELEASED 0x8045
+#define DBT_VOLLOCKUNLOCKFAILED 0x8046
+#define DBT_USERDEFINED 0xFFFF
+#define DBTF_MEDIA	1
+#define DBTF_NET	2
+
+/* Also defined in winuser.h */
+#define BSM_ALLCOMPONENTS	0
+#define BSM_APPLICATIONS	8
+#define BSM_ALLDESKTOPS		16
+#define BSM_INSTALLABLEDRIVERS	4
+#define BSM_NETDRIVER	2
+#define BSM_VXDS	1
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_NOHANG 0x00000008
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_QUERY 0x00000001
+#if (_WIN32_WINNT >= 0x0500)
+#define BSF_ALLOWSFW 0x00000080
+#define BSF_SENDNOTIFYMESSAGE 0x00000100
+#endif /* (_WIN32_WINNT >= 0x0500) */
+#if (_WIN32_WINNT >= 0x0501)
+#define BSF_LUID 0x00000400
+#define BSF_RETURNHDESK 0x00000200
+#endif /* (_WIN32_WINNT >= 0x0501) */
+
+#define BSF_MSGSRV32ISOK_BIT 31
+#define BSF_MSGSRV32ISOK 0x80000000
+
+typedef struct _DEV_BROADCAST_HDR {
+	DWORD dbch_size;
+	DWORD dbch_devicetype;
+	DWORD dbch_reserved;
+} DEV_BROADCAST_HDR,*PDEV_BROADCAST_HDR;
+typedef struct _DEV_BROADCAST_OEM {
+	DWORD dbco_size;
+	DWORD dbco_devicetype;
+	DWORD dbco_reserved;
+	DWORD dbco_identifier;
+	DWORD dbco_suppfunc;
+} DEV_BROADCAST_OEM,*PDEV_BROADCAST_OEM;
+typedef struct _DEV_BROADCAST_PORT_A {
+	DWORD dbcp_size;
+	DWORD dbcp_devicetype;
+	DWORD dbcp_reserved;
+	char dbcp_name[1];
+} DEV_BROADCAST_PORT_A, *PDEV_BROADCAST_PORT_A;
+typedef struct _DEV_BROADCAST_PORT_W {
+	DWORD dbcp_size;
+	DWORD dbcp_devicetype;
+	DWORD dbcp_reserved;
+	wchar_t dbcp_name[1];
+} DEV_BROADCAST_PORT_W, *PDEV_BROADCAST_PORT_W;
+typedef struct _DEV_BROADCAST_USERDEFINED {
+	struct _DEV_BROADCAST_HDR dbud_dbh;
+	char dbud_szName[1];
+} DEV_BROADCAST_USERDEFINED;
+typedef struct _DEV_BROADCAST_VOLUME {
+	DWORD dbcv_size;
+	DWORD dbcv_devicetype;
+	DWORD dbcv_reserved;
+	DWORD dbcv_unitmask;
+	WORD dbcv_flags;
+} DEV_BROADCAST_VOLUME,*PDEV_BROADCAST_VOLUME;
+
+#ifdef UNICODE
+typedef DEV_BROADCAST_PORT_W DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;
+#else
+typedef DEV_BROADCAST_PORT_A DEV_BROADCAST_PORT, *PDEV_BROADCAST_PORT;
+#endif
+
+#if (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500)
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_A {
+ DWORD dbcc_size;
+ DWORD dbcc_devicetype;
+ DWORD dbcc_reserved;
+ GUID dbcc_classguid;
+ char dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_A, *PDEV_BROADCAST_DEVICEINTERFACE_A;
+typedef struct _DEV_BROADCAST_DEVICEINTERFACE_W {
+ DWORD dbcc_size;
+ DWORD dbcc_devicetype;
+ DWORD dbcc_reserved;
+ GUID dbcc_classguid;
+ wchar_t dbcc_name[1];
+} DEV_BROADCAST_DEVICEINTERFACE_W, *PDEV_BROADCAST_DEVICEINTERFACE_W;
+
+#ifdef UNICODE
+typedef DEV_BROADCAST_DEVICEINTERFACE_W DEV_BROADCAST_DEVICEINTERFACE;
+typedef PDEV_BROADCAST_DEVICEINTERFACE_W PDEV_BROADCAST_DEVICEINTERFACE;
+#else
+typedef DEV_BROADCAST_DEVICEINTERFACE_A DEV_BROADCAST_DEVICEINTERFACE;
+typedef PDEV_BROADCAST_DEVICEINTERFACE_A PDEV_BROADCAST_DEVICEINTERFACE;
+#endif
+
+typedef struct _DEV_BROADCAST_HANDLE {
+ DWORD dbch_size;
+ DWORD dbch_devicetype;
+ DWORD dbch_reserved;
+ HANDLE dbch_handle;
+ DWORD dbch_hdevnotify;
+ GUID dbch_eventguid;
+ LONG dbch_nameoffset;
+ BYTE dbch_data[1];
+} DEV_BROADCAST_HANDLE, *PDEV_BROADCAST_HANDLE;
+#endif /* (_WIN32_WINDOWS >= 0x0410 || _WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dde.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,64 @@
+#ifndef _DDE_H
+#define _DDE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define WM_DDE_FIRST	0x03E0
+#define WM_DDE_INITIATE	(WM_DDE_FIRST)
+#define WM_DDE_TERMINATE	(WM_DDE_FIRST+1)
+#define WM_DDE_ADVISE	(WM_DDE_FIRST+2)
+#define WM_DDE_UNADVISE	(WM_DDE_FIRST+3)
+#define WM_DDE_ACK	(WM_DDE_FIRST+4)
+#define WM_DDE_DATA	(WM_DDE_FIRST+5)
+#define WM_DDE_REQUEST	(WM_DDE_FIRST+6)
+#define WM_DDE_POKE	(WM_DDE_FIRST+7)
+#define WM_DDE_EXECUTE	(WM_DDE_FIRST+8)
+#define WM_DDE_LAST	(WM_DDE_FIRST+8)
+
+#ifndef RC_INVOKED
+typedef struct {
+	unsigned short bAppReturnCode:8,reserved:6,fBusy:1,fAck:1;
+} DDEACK;
+typedef struct {
+	unsigned short reserved:14,fDeferUpd:1,fAckReq:1;
+	short cfFormat;
+} DDEADVISE;
+typedef struct {
+	unsigned short unused:12,fResponse:1,fRelease:1,reserved:1,fAckReq:1;
+	short cfFormat;
+	BYTE Value[1];
+} DDEDATA;
+typedef struct {
+	unsigned short unused:13,fRelease:1,fReserved:2;
+	short cfFormat;
+	BYTE  Value[1];
+} DDEPOKE;
+typedef struct {
+        unsigned short unused:13,
+                 fRelease:1,
+                 fDeferUpd:1,
+         fAckReq:1;
+    short    cfFormat;
+} DDELN;
+
+typedef struct {
+	unsigned short unused:12,fAck:1,fRelease:1,fReserved:1,fAckReq:1;
+    short cfFormat;
+    BYTE rgb[1];
+} DDEUP;
+BOOL WINAPI DdeSetQualityOfService(HWND,const SECURITY_QUALITY_OF_SERVICE*,PSECURITY_QUALITY_OF_SERVICE);
+BOOL WINAPI ImpersonateDdeClientWindow(HWND,HWND);
+LPARAM WINAPI PackDDElParam(UINT,UINT_PTR,UINT_PTR); 
+BOOL WINAPI UnpackDDElParam(UINT,LPARAM,PUINT_PTR,PUINT_PTR); 
+BOOL WINAPI FreeDDElParam(UINT,LPARAM); 
+LPARAM WINAPI ReuseDDElParam(LPARAM,UINT,UINT,UINT_PTR,UINT_PTR); 
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ddeml.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,314 @@
+#ifndef _DDEML_H
+#define _DDEML_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EXPENTRY	CALLBACK
+#define CP_WINANSI	1004
+#define CP_WINUNICODE	1200
+#define XTYPF_NOBLOCK	2
+#define XTYPF_NODATA	4
+#define XTYPF_ACKREQ	8
+#define XCLASS_MASK	0xFC00
+#define XCLASS_BOOL	0x1000
+#define XCLASS_DATA	0x2000
+#define XCLASS_FLAGS	0x4000
+#define XCLASS_NOTIFICATION	0x8000
+#define XST_NULL	0
+#define XST_INCOMPLETE	1
+#define XST_CONNECTED	2
+#define XST_INIT1	3
+#define XST_INIT2	4
+#define XST_REQSENT	5
+#define XST_DATARCVD	6
+#define XST_POKESENT	7
+#define XST_POKEACKRCVD	8
+#define XST_EXECSENT	9
+#define XST_EXECACKRCVD	10
+#define XST_ADVSENT 11
+#define XST_UNADVSENT 12
+#define XST_ADVACKRCVD 13
+#define XST_UNADVACKRCVD 14
+#define XST_ADVDATASENT 15
+#define XST_ADVDATAACKRCVD 16
+#define XTYP_ERROR	(XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_ADVDATA	(16|XCLASS_FLAGS)
+#define XTYP_ADVREQ	(32|XCLASS_DATA|XTYPF_NOBLOCK)
+#define XTYP_ADVSTART	(0x30|XCLASS_BOOL)
+#define XTYP_ADVSTOP	(0x0040|XCLASS_NOTIFICATION)
+#define XTYP_EXECUTE	(0x0050|XCLASS_FLAGS)
+#define XTYP_CONNECT	(0x0060|XCLASS_BOOL|XTYPF_NOBLOCK)
+#define XTYP_CONNECT_CONFIRM	(0x0070|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_XACT_COMPLETE	(0x0080|XCLASS_NOTIFICATION)
+#define XTYP_POKE	(0x0090|XCLASS_FLAGS)
+#define XTYP_REGISTER	(0x00A0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_REQUEST	(0x00B0|XCLASS_DATA)
+#define XTYP_DISCONNECT	(0x00C0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_UNREGISTER	(0x00D0|XCLASS_NOTIFICATION|XTYPF_NOBLOCK)
+#define XTYP_WILDCONNECT	(0x00E0|XCLASS_DATA|XTYPF_NOBLOCK)
+#define XTYP_MASK	0xF0
+#define XTYP_SHIFT	4
+#define TIMEOUT_ASYNC	0xFFFFFFFF
+#define QID_SYNC	0xFFFFFFFF
+#define ST_CONNECTED	1
+#define ST_ADVISE	2
+#define ST_ISLOCAL	4
+#define ST_BLOCKED	8
+#define ST_CLIENT	16
+#define ST_TERMINATED	32
+#define ST_INLIST	64
+#define ST_BLOCKNEXT	128
+#define ST_ISSELF	256
+#define CADV_LATEACK 0xFFFF
+#define DMLERR_NO_ERROR	0
+#define DMLERR_FIRST	0x4000
+#define DMLERR_ADVACKTIMEOUT	0x4000
+#define DMLERR_BUSY	0x4001
+#define DMLERR_DATAACKTIMEOUT	0x4002
+#define DMLERR_DLL_NOT_INITIALIZED	0x4003
+#define	DMLERR_DLL_USAGE	0x4004
+#define DMLERR_EXECACKTIMEOUT	0x4005
+#define DMLERR_INVALIDPARAMETER	0x4006
+#define DMLERR_LOW_MEMORY	0x4007
+#define DMLERR_MEMORY_ERROR	0x4008
+#define DMLERR_NOTPROCESSED	0x4009
+#define DMLERR_NO_CONV_ESTABLISHED	0x400a
+#define DMLERR_POKEACKTIMEOUT	0x400b
+#define DMLERR_POSTMSG_FAILED	0x400c
+#define DMLERR_REENTRANCY	0x400d
+#define DMLERR_SERVER_DIED	0x400e
+#define DMLERR_SYS_ERROR	0x400f
+#define DMLERR_UNADVACKTIMEOUT	0x4010
+#define DMLERR_UNFOUND_QUEUE_ID	0x4011
+#define DMLERR_LAST	0x4011
+#define DDE_FACK	0x8000
+#define DDE_FBUSY	0x4000
+#define DDE_FDEFERUPD	0x4000
+#define DDE_FACKREQ	0x8000
+#define DDE_FRELEASE	0x2000
+#define DDE_FREQUESTED	0x1000
+#define DDE_FAPPSTATUS	0x00ff
+#define DDE_FNOTPROCESSED	0
+#define DDE_FACKRESERVED	(~(DDE_FACK|DDE_FBUSY|DDE_FAPPSTATUS))
+#define DDE_FADVRESERVED	(~(DDE_FACKREQ|DDE_FDEFERUPD))
+#define DDE_FDATRESERVED	(~(DDE_FACKREQ|DDE_FRELEASE|DDE_FREQUESTED))
+#define DDE_FPOKRESERVED	(~DDE_FRELEASE)
+#define MSGF_DDEMGR	0x8001
+#define CBR_BLOCK	((HDDEDATA)0xffffffff)
+#define CBF_FAIL_SELFCONNECTIONS	0x1000
+#define CBF_FAIL_CONNECTIONS	0x2000
+#define CBF_FAIL_ADVISES	0x4000
+#define CBF_FAIL_EXECUTES	0x8000
+#define CBF_FAIL_POKES	0x10000
+#define CBF_FAIL_REQUESTS	0x20000
+#define CBF_FAIL_ALLSVRXACTIONS	0x3f000
+#define CBF_SKIP_CONNECT_CONFIRMS	0x40000
+#define CBF_SKIP_REGISTRATIONS	0x80000
+#define CBF_SKIP_UNREGISTRATIONS	0x100000
+#define CBF_SKIP_DISCONNECTS	0x200000
+#define CBF_SKIP_ALLNOTIFICATIONS	0x3c0000
+#define APPCMD_CLIENTONLY	0x10L
+#define APPCMD_FILTERINITS	0x20L
+#define APPCMD_MASK	0xFF0L
+#define APPCLASS_STANDARD	0
+#define APPCLASS_MASK	0xFL
+#define EC_ENABLEALL	0
+#define EC_ENABLEONE	ST_BLOCKNEXT
+#define EC_DISABLE	ST_BLOCKED
+#define EC_QUERYWAITING	2
+#define DNS_REGISTER	1
+#define DNS_UNREGISTER	2
+#define DNS_FILTERON	4
+#define DNS_FILTEROFF	8
+#define HDATA_APPOWNED	1
+#define MAX_MONITORS	4
+#define APPCLASS_MONITOR	1L
+#define XTYP_MONITOR	(XCLASS_NOTIFICATION|XTYPF_NOBLOCK|0xF0)
+#define MF_HSZ_INFO	0x1000000
+#define MF_SENDMSGS	0x2000000
+#define MF_POSTMSGS	0x4000000
+#define MF_CALLBACKS	0x8000000
+#define MF_ERRORS	0x10000000
+#define MF_LINKS	0x20000000
+#define MF_CONV	0x40000000
+#define MF_MASK 0xFF000000
+#define MH_CREATE	1
+#define MH_KEEP	2
+#define MH_DELETE	3
+#define MH_CLEANUP	4
+
+DECLARE_HANDLE(HCONVLIST);
+DECLARE_HANDLE(HCONV);
+DECLARE_HANDLE(HSZ);
+DECLARE_HANDLE(HDDEDATA);
+typedef HDDEDATA CALLBACK FNCALLBACK(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+typedef HDDEDATA(CALLBACK *PFNCALLBACK)(UINT,UINT,HCONV,HSZ,HSZ,HDDEDATA,DWORD,DWORD);
+typedef struct tagHSZPAIR {
+	HSZ	hszSvc;
+	HSZ	hszTopic;
+} HSZPAIR, *PHSZPAIR;
+typedef struct tagCONVCONTEXT {
+	UINT	cb;
+	UINT	wFlags;
+	UINT	wCountryID;
+	int	iCodePage;
+	DWORD	dwLangID;
+	DWORD	dwSecurity;
+	SECURITY_QUALITY_OF_SERVICE qos;
+} CONVCONTEXT,*PCONVCONTEXT;
+typedef struct tagCONVINFO {
+	DWORD	cb;
+	DWORD	hUser;
+	HCONV	hConvPartner;
+	HSZ	hszSvcPartner;
+	HSZ	hszServiceReq;
+	HSZ	hszTopic;
+	HSZ	hszItem;
+	UINT	wFmt;
+	UINT	wType;
+	UINT	wStatus;
+	UINT	wConvst;
+	UINT	wLastError;
+	HCONVLIST	hConvList;
+	CONVCONTEXT ConvCtxt;
+	HWND	hwnd;
+	HWND	hwndPartner;
+} CONVINFO,*PCONVINFO;
+typedef struct tagDDEML_MSG_HOOK_DATA {
+	UINT	uiLo;
+	UINT	uiHi;
+	DWORD	cbData;
+	DWORD	Data[8];
+} DDEML_MSG_HOOK_DATA;
+typedef struct tagMONHSZSTRUCT {
+	UINT	cb;
+	BOOL	fsAction;
+	DWORD	dwTime;
+	HSZ	hsz;
+	HANDLE	hTask;
+	TCHAR	str[1];
+} MONHSZSTRUCT, *PMONHSZSTRUCT;
+typedef struct tagMONLINKSTRUCT {
+	UINT	cb;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	BOOL	fEstablished;
+	BOOL	fNoData;
+	HSZ	hszSvc;
+	HSZ	hszTopic;
+	HSZ	hszItem;
+	UINT	wFmt;
+	BOOL	fServer;
+	HCONV	hConvServer;
+	HCONV	hConvClient;
+} MONLINKSTRUCT, *PMONLINKSTRUCT;
+typedef struct tagMONCONVSTRUCT {
+	UINT	cb;
+	BOOL	fConnect;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	HSZ	hszSvc;
+	HSZ	hszTopic;
+	HCONV	hConvClient;
+	HCONV	hConvServer;
+} MONCONVSTRUCT, *PMONCONVSTRUCT;
+typedef struct tagMONCBSTRUCT {
+	UINT	cb;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	DWORD	dwRet;
+	UINT	wType;
+	UINT	wFmt;
+	HCONV	hConv;
+	HSZ	hsz1;
+	HSZ	hsz2;
+	HDDEDATA	hData;
+	ULONG_PTR	dwData1;
+	ULONG_PTR	dwData2;
+	CONVCONTEXT	cc;
+	DWORD	cbData;
+	DWORD	Data[8];
+} MONCBSTRUCT, *PMONCBSTRUCT;
+typedef struct tagMONERRSTRUCT {
+	UINT	cb;
+	UINT	wLastError;
+	DWORD	dwTime;
+	HANDLE	hTask;
+} MONERRSTRUCT, *PMONERRSTRUCT;
+typedef struct tagMONMSGSTRUCT {
+	UINT	cb;
+	HWND	hwndTo;
+	DWORD	dwTime;
+	HANDLE	hTask;
+	UINT	wMsg;
+	WPARAM	wParam;
+	LPARAM	lParam;
+	DDEML_MSG_HOOK_DATA dmhd;
+} MONMSGSTRUCT, *PMONMSGSTRUCT;
+
+BOOL WINAPI DdeAbandonTransaction(DWORD,HCONV,DWORD);
+PBYTE WINAPI DdeAccessData(HDDEDATA,PDWORD);
+HDDEDATA WINAPI DdeAddData(HDDEDATA,PBYTE,DWORD,DWORD);
+HDDEDATA WINAPI DdeClientTransaction(PBYTE,DWORD,HCONV,HSZ,UINT,UINT,DWORD,PDWORD);
+int WINAPI DdeCmpStringHandles(HSZ,HSZ);
+HCONV WINAPI DdeConnect(DWORD,HSZ,HSZ,PCONVCONTEXT);
+HCONVLIST WINAPI DdeConnectList(DWORD,HSZ,HSZ,HCONVLIST,PCONVCONTEXT);
+HDDEDATA WINAPI DdeCreateDataHandle(DWORD,PBYTE,DWORD,DWORD,HSZ,UINT,UINT);
+HSZ WINAPI DdeCreateStringHandleA(DWORD,LPCSTR,int);
+HSZ WINAPI DdeCreateStringHandleW(DWORD,LPCWSTR,int);
+BOOL WINAPI DdeDisconnect(HCONV);
+BOOL WINAPI DdeDisconnectList(HCONVLIST);
+BOOL WINAPI DdeEnableCallback(DWORD,HCONV,UINT);
+BOOL WINAPI DdeFreeDataHandle(HDDEDATA);
+BOOL WINAPI DdeFreeStringHandle(DWORD,HSZ);
+DWORD WINAPI DdeGetData(HDDEDATA,PBYTE,DWORD,DWORD);
+UINT WINAPI DdeGetLastError(DWORD);
+BOOL WINAPI DdeImpersonateClient(HCONV);
+UINT WINAPI DdeInitializeA(PDWORD,PFNCALLBACK,DWORD,DWORD);
+UINT WINAPI DdeInitializeW(PDWORD,PFNCALLBACK,DWORD,DWORD);
+BOOL WINAPI DdeKeepStringHandle(DWORD,HSZ);
+HDDEDATA WINAPI DdeNameService(DWORD,HSZ,HSZ,UINT);
+BOOL WINAPI DdePostAdvise(DWORD,HSZ,HSZ);
+UINT WINAPI DdeQueryConvInfo(HCONV,DWORD,PCONVINFO);
+HCONV WINAPI DdeQueryNextServer(HCONVLIST,HCONV);
+DWORD WINAPI DdeQueryStringA(DWORD,HSZ,LPSTR,DWORD,int);
+DWORD WINAPI DdeQueryStringW(DWORD,HSZ,LPWSTR,DWORD,int);
+HCONV WINAPI DdeReconnect(HCONV);
+BOOL WINAPI DdeSetUserHandle(HCONV,DWORD,DWORD);
+BOOL WINAPI DdeUnaccessData(HDDEDATA);
+BOOL WINAPI DdeUninitialize(DWORD);
+
+#ifdef UNICODE
+#define SZDDESYS_TOPIC	L"System"
+#define SZDDESYS_ITEM_TOPICS	L"Topics"
+#define SZDDESYS_ITEM_SYSITEMS	L"SysItems"
+#define SZDDESYS_ITEM_RTNMSG	L"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS	L"Status"
+#define SZDDESYS_ITEM_FORMATS	L"Formats"
+#define SZDDESYS_ITEM_HELP	L"Help"
+#define SZDDE_ITEM_ITEMLIST	L"TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleW
+#define DdeInitialize DdeInitializeW
+#define DdeQueryString DdeQueryStringW
+#else
+#define SZDDESYS_TOPIC	"System"
+#define SZDDESYS_ITEM_TOPICS	"Topics"
+#define SZDDESYS_ITEM_SYSITEMS	"SysItems"
+#define SZDDESYS_ITEM_RTNMSG	"ReturnMessage"
+#define SZDDESYS_ITEM_STATUS	"Status"
+#define SZDDESYS_ITEM_FORMATS	"Formats"
+#define SZDDESYS_ITEM_HELP	"Help"
+#define SZDDE_ITEM_ITEMLIST	"TopicItemList"
+#define DdeCreateStringHandle DdeCreateStringHandleA
+#define DdeInitialize DdeInitializeA
+#define DdeQueryString DdeQueryStringA
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif /* _DDEML_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/devguid.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,65 @@
+#ifndef _DEVGUID_H
+#define _DEVGUID_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif 
+
+#ifdef __cplusplus
+extern "C" { 
+#endif 
+
+extern const GUID GUID_DEVCLASS_WCEUSBS;
+extern const GUID GUID_DEVCLASS_USB;
+extern const GUID GUID_DEVCLASS_PNPPRINTERS;
+extern const GUID GUID_DEVCLASS_DOT4;
+extern const GUID GUID_DEVCLASS_DOT4PRINT;
+extern const GUID GUID_DEVCLASS_CDROM;
+extern const GUID GUID_DEVCLASS_COMPUTER;
+extern const GUID GUID_DEVCLASS_DISKDRIVE;
+extern const GUID GUID_DEVCLASS_DISPLAY;
+extern const GUID GUID_DEVCLASS_FDC;
+extern const GUID GUID_DEVCLASS_HDC;
+extern const GUID GUID_DEVCLASS_KEYBOARD;
+extern const GUID GUID_DEVCLASS_MEDIA;
+extern const GUID GUID_DEVCLASS_MODEM;
+extern const GUID GUID_DEVCLASS_MONITOR;
+extern const GUID GUID_DEVCLASS_MOUSE;
+extern const GUID GUID_DEVCLASS_MTD;
+extern const GUID GUID_DEVCLASS_MULTIFUNCTION;
+extern const GUID GUID_DEVCLASS_NET;
+extern const GUID GUID_DEVCLASS_NETCLIENT;
+extern const GUID GUID_DEVCLASS_NETSERVICE;
+extern const GUID GUID_DEVCLASS_NETTRANS;
+extern const GUID GUID_DEVCLASS_PCMCIA;
+extern const GUID GUID_DEVCLASS_PORTS;
+extern const GUID GUID_DEVCLASS_PRINTER;
+extern const GUID GUID_DEVCLASS_SCSIADAPTER;
+extern const GUID GUID_DEVCLASS_SYSTEM;
+extern const GUID GUID_DEVCLASS_UNKNOWN;
+extern const GUID GUID_DEVCLASS_FLOPPYDISK;
+extern const GUID GUID_DEVCLASS_PROCESSOR;
+extern const GUID GUID_DEVCLASS_MULTIPORTSERIAL;
+extern const GUID GUID_DEVCLASS_SMARTCARDREADER;
+extern const GUID GUID_DEVCLASS_VOLUMESNAPSHOT;
+extern const GUID GUID_DEVCLASS_1394DEBUG;
+extern const GUID GUID_DEVCLASS_1394;
+extern const GUID GUID_DEVCLASS_INFRARED;
+extern const GUID GUID_DEVCLASS_IMAGE;
+extern const GUID GUID_DEVCLASS_TAPEDRIVE;
+extern const GUID GUID_DEVCLASS_VOLUME;
+extern const GUID GUID_DEVCLASS_BATTERY;
+extern const GUID GUID_DEVCLASS_HIDCLASS;
+extern const GUID GUID_DEVCLASS_61883;
+extern const GUID GUID_DEVCLASS_LEGACYDRIVER;
+extern const GUID GUID_DEVCLASS_SDHOST;
+extern const GUID GUID_DEVCLASS_AVC;
+extern const GUID GUID_DEVCLASS_ENUM1394;
+extern const GUID GUID_DEVCLASS_MEDIUMCHANGER;
+extern const GUID GUID_DEVCLASS_NTAPM;
+extern const GUID GUID_DEVCLASS_SBP2;
+extern const GUID GUID_DEVCLASS_BLUETOOTH;
+extern const GUID GUID_DEVCLASS_PROBES;
+#ifdef __cplusplus
+}
+#endif
+#endif /* _DEVGUID_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dhcpcsdk.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,42 @@
+#ifndef _DHCPCDSK_H
+#define _DHCPCDSK_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+#define DHCPCAPI_REGISTER_HANDLE_EVENT 0x00000001
+#define DHCPCAPI_REQUEST_PERSISTENT  0x00000001
+#define DHCPCAPI_REQUEST_SYNCHRONOUS 0x00000002
+typedef struct _DHCPAPI_CLASSID {
+	ULONG Flags;
+	LPBYTE Data;
+	ULONG nBytesData;
+} DHCPCAPI_CLASSID,*PDHCPCAPI_CLASSID,*LPDHCPCAPI_CLASSID;
+typedef struct _DHCPAPI_PARAMS {
+	ULONG Flags;
+	ULONG OptionId;
+	BOOL IsVendor;
+	LPBYTE Data;
+	DWORD nBytesData;
+} DHCPAPI_PARAMS,*PDHCPAPI_PARAMS,*LPDHCPAPI_PARAMS;
+typedef struct _DHCPAPI_PARAMS_ARRAY {
+	ULONG nParams;
+	LPDHCPAPI_PARAMS Params;
+} DHCPCAPI_PARAMS_ARRAY,*PDHCPCAPI_PARAMS_ARRAY,*LPDHCPCAPI_PARAMS_ARRAY;
+VOID WINAPI DhcpCApiCleanup(void);
+DWORD WINAPI DhcpCApiInitialize(LPDWORD);
+DWORD WINAPI DhcpDeRegisterParamChange(DWORD,LPVOID,LPVOID);
+DWORD WINAPI DhcpRegisterParamChange(DWORD,LPVOID,PWSTR,LPDHCPCAPI_CLASSID,DHCPCAPI_PARAMS_ARRAY,LPVOID);
+DWORD WINAPI DhcpRemoveDNSRegistrations(void);
+DWORD WINAPI DhcpUndoRequestParams(DWORD,LPVOID,LPWSTR,LPWSTR);
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dir.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,26 @@
+/* 
+ * dir.h
+ *
+ * This file OBSOLESCENT and only provided for backward compatibility.
+ * Please use io.h instead.
+ *
+ * This file is part of the Mingw32 package.
+ *
+ * Contributors:
+ *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
+ *             Mumit Khan <khan@xraylith.wisc.edu>
+ *
+ *  THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ *  This source code is offered for use in the public domain. You may
+ *  use, modify or distribute it freely.
+ *
+ *  This code is distributed in the hope that it will be useful but
+ *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ *  DISCLAIMED. This includes but is not limited to warranties of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+
+#include <io.h>
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/direct.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,73 @@
+/*
+ * direct.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Functions for manipulating paths and directories (included from io.h)
+ * plus functions for setting the current drive.
+ *
+ */
+#ifndef	_DIRECT_H_
+#define	_DIRECT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+#ifndef _DISKFREE_T_DEFINED
+/* needed by _getdiskfree (also in dos.h) */
+struct _diskfree_t {
+	unsigned total_clusters;
+	unsigned avail_clusters;
+	unsigned sectors_per_cluster;
+	unsigned bytes_per_sector;
+};
+#define _DISKFREE_T_DEFINED
+#endif  
+
+/*
+ * You really shouldn't be using these. Use the Win32 API functions instead.
+ * However, it does make it easier to port older code.
+ */
+_CRTIMP int __cdecl __MINGW_NOTHROW _getdrive (void);
+_CRTIMP unsigned long __cdecl __MINGW_NOTHROW _getdrives(void);
+_CRTIMP int __cdecl __MINGW_NOTHROW _chdrive (int);
+_CRTIMP char* __cdecl __MINGW_NOTHROW _getdcwd (int, char*, int);
+_CRTIMP unsigned __cdecl __MINGW_NOTHROW _getdiskfree (unsigned, struct _diskfree_t *);
+
+#ifndef	_NO_OLDNAMES
+# define diskfree_t _diskfree_t
+#endif
+
+#ifndef _WDIRECT_DEFINED
+/* wide character versions. Also in wchar.h */
+#ifdef __MSVCRT__ 
+_CRTIMP int __cdecl __MINGW_NOTHROW _wchdir(const wchar_t*);
+_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetcwd(wchar_t*, int);
+_CRTIMP wchar_t* __cdecl __MINGW_NOTHROW _wgetdcwd(int, wchar_t*, int);
+_CRTIMP int __cdecl __MINGW_NOTHROW _wmkdir(const wchar_t*);
+_CRTIMP int __cdecl __MINGW_NOTHROW _wrmdir(const wchar_t*);
+#endif	/* __MSVCRT__ */
+#define _WDIRECT_DEFINED
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRECT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dirent.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,123 @@
+/*
+ * DIRENT.H (formerly DIRLIB.H)
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ */
+#ifndef _DIRENT_H_
+#define _DIRENT_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+struct dirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	char		d_name[FILENAME_MAX]; /* File name. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ * dd_stat field is now int (was short in older versions).
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _finddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct dirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 = not started yet (next entry to read is first entry)
+	 *  -1 = off the end
+	 *   positive = 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	char			dd_name[1];
+} DIR;
+
+DIR* __cdecl __MINGW_NOTHROW opendir (const char*);
+struct dirent* __cdecl __MINGW_NOTHROW readdir (DIR*);
+int __cdecl __MINGW_NOTHROW closedir (DIR*);
+void __cdecl __MINGW_NOTHROW rewinddir (DIR*);
+long __cdecl __MINGW_NOTHROW telldir (DIR*);
+void __cdecl __MINGW_NOTHROW seekdir (DIR*, long);
+
+
+/* wide char versions */
+
+struct _wdirent
+{
+	long		d_ino;		/* Always zero. */
+	unsigned short	d_reclen;	/* Always zero. */
+	unsigned short	d_namlen;	/* Length of name in d_name. */
+	wchar_t		d_name[FILENAME_MAX]; /* File name. */
+};
+
+/*
+ * This is an internal data structure. Good programmers will not use it
+ * except as an argument to one of the functions below.
+ */
+typedef struct
+{
+	/* disk transfer area for this dir */
+	struct _wfinddata_t	dd_dta;
+
+	/* dirent struct to return from dir (NOTE: this makes this thread
+	 * safe as long as only one thread uses a particular DIR struct at
+	 * a time) */
+	struct _wdirent		dd_dir;
+
+	/* _findnext handle */
+	long			dd_handle;
+
+	/*
+         * Status of search:
+	 *   0 = not started yet (next entry to read is first entry)
+	 *  -1 = off the end
+	 *   positive = 0 based index of next entry
+	 */
+	int			dd_stat;
+
+	/* given path for dir with search pattern (struct is extended) */
+	wchar_t			dd_name[1];
+} _WDIR;
+
+
+
+_WDIR* __cdecl __MINGW_NOTHROW _wopendir (const wchar_t*);
+struct _wdirent*  __cdecl __MINGW_NOTHROW _wreaddir (_WDIR*);
+int __cdecl __MINGW_NOTHROW _wclosedir (_WDIR*);
+void __cdecl __MINGW_NOTHROW _wrewinddir (_WDIR*);
+long __cdecl __MINGW_NOTHROW _wtelldir (_WDIR*);
+void __cdecl __MINGW_NOTHROW _wseekdir (_WDIR*, long);
+
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DIRENT_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dis-asm.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,370 @@
+/* Interface between the opcode library and its callers.
+
+   Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, 2010
+   Free Software Foundation, Inc.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT 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
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin Street - Fifth Floor,
+   Boston, MA 02110-1301, USA.
+
+   Written by Cygnus Support, 1993.
+
+   The opcode library (libopcodes.a) provides instruction decoders for
+   a large variety of instruction sets, callable with an identical
+   interface, for making instruction-processing programs more independent
+   of the instruction set being processed.  */
+
+#ifndef DIS_ASM_H
+#define DIS_ASM_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#include "bfd.h"
+
+  typedef int (*fprintf_ftype) (void *, const char*, ...) /*ATTRIBUTE_FPTR_PRINTF_2*/;
+
+enum dis_insn_type
+{
+  dis_noninsn,			/* Not a valid instruction.  */
+  dis_nonbranch,		/* Not a branch instruction.  */
+  dis_branch,			/* Unconditional branch.  */
+  dis_condbranch,		/* Conditional branch.  */
+  dis_jsr,			/* Jump to subroutine.  */
+  dis_condjsr,			/* Conditional jump to subroutine.  */
+  dis_dref,			/* Data reference instruction.  */
+  dis_dref2			/* Two data references in instruction.  */
+};
+
+/* This struct is passed into the instruction decoding routine,
+   and is passed back out into each callback.  The various fields are used
+   for conveying information from your main routine into your callbacks,
+   for passing information into the instruction decoders (such as the
+   addresses of the callback functions), or for passing information
+   back from the instruction decoders to their callers.
+
+   It must be initialized before it is first passed; this can be done
+   by hand, or using one of the initialization macros below.  */
+
+typedef struct disassemble_info
+{
+  fprintf_ftype fprintf_func;
+  void *stream;
+  void *application_data;
+
+  /* Target description.  We could replace this with a pointer to the bfd,
+     but that would require one.  There currently isn't any such requirement
+     so to avoid introducing one we record these explicitly.  */
+  /* The bfd_flavour.  This can be bfd_target_unknown_flavour.  */
+  enum bfd_flavour flavour;
+  /* The bfd_arch value.  */
+  enum bfd_architecture arch;
+  /* The bfd_mach value.  */
+  unsigned long mach;
+  /* Endianness (for bi-endian cpus).  Mono-endian cpus can ignore this.  */
+  enum bfd_endian endian;
+  /* Endianness of code, for mixed-endian situations such as ARM BE8.  */
+  enum bfd_endian endian_code;
+  /* An arch/mach-specific bitmask of selected instruction subsets, mainly
+     for processors with run-time-switchable instruction sets.  The default,
+     zero, means that there is no constraint.  CGEN-based opcodes ports
+     may use ISA_foo masks.  */
+  void *insn_sets;
+
+  /* Some targets need information about the current section to accurately
+     display insns.  If this is NULL, the target disassembler function
+     will have to make its best guess.  */
+  asection *section;
+
+  /* An array of pointers to symbols either at the location being disassembled
+     or at the start of the function being disassembled.  The array is sorted
+     so that the first symbol is intended to be the one used.  The others are
+     present for any misc. purposes.  This is not set reliably, but if it is
+     not NULL, it is correct.  */
+  asymbol **symbols;
+  /* Number of symbols in array.  */
+  int num_symbols;
+
+  /* Symbol table provided for targets that want to look at it.  This is
+     used on Arm to find mapping symbols and determine Arm/Thumb code.  */
+  asymbol **symtab;
+  int symtab_pos;
+  int symtab_size;
+
+  /* For use by the disassembler.
+     The top 16 bits are reserved for public use (and are documented here).
+     The bottom 16 bits are for the internal use of the disassembler.  */
+  unsigned long flags;
+  /* Set if the disassembler has determined that there are one or more
+     relocations associated with the instruction being disassembled.  */
+#define INSN_HAS_RELOC	 (1 << 31)
+  /* Set if the user has requested the disassembly of data as well as code.  */
+#define DISASSEMBLE_DATA (1 << 30)
+  /* Set if the user has specifically set the machine type encoded in the
+     mach field of this structure.  */
+#define USER_SPECIFIED_MACHINE_TYPE (1 << 29)
+
+  /* Use internally by the target specific disassembly code.  */
+  void *private_data;
+
+  /* Function used to get bytes to disassemble.  MEMADDR is the
+     address of the stuff to be disassembled, MYADDR is the address to
+     put the bytes in, and LENGTH is the number of bytes to read.
+     INFO is a pointer to this struct.
+     Returns an errno value or 0 for success.  */
+  int (*read_memory_func)
+    (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
+     struct disassemble_info *dinfo);
+
+  /* Function which should be called if we get an error that we can't
+     recover from.  STATUS is the errno value from read_memory_func and
+     MEMADDR is the address that we were trying to read.  INFO is a
+     pointer to this struct.  */
+  void (*memory_error_func)
+    (int status, bfd_vma memaddr, struct disassemble_info *dinfo);
+
+  /* Function called to print ADDR.  */
+  void (*print_address_func)
+    (bfd_vma addr, struct disassemble_info *dinfo);
+
+  /* Function called to determine if there is a symbol at the given ADDR.
+     If there is, the function returns 1, otherwise it returns 0.
+     This is used by ports which support an overlay manager where
+     the overlay number is held in the top part of an address.  In
+     some circumstances we want to include the overlay number in the
+     address, (normally because there is a symbol associated with
+     that address), but sometimes we want to mask out the overlay bits.  */
+  int (* symbol_at_address_func)
+    (bfd_vma addr, struct disassemble_info *dinfo);
+
+  /* Function called to check if a SYMBOL is can be displayed to the user.
+     This is used by some ports that want to hide special symbols when
+     displaying debugging outout.  */
+  bfd_boolean (* symbol_is_valid)
+    (asymbol *, struct disassemble_info *dinfo);
+
+  /* These are for buffer_read_memory.  */
+  bfd_byte *buffer;
+  bfd_vma buffer_vma;
+  unsigned int buffer_length;
+
+  /* This variable may be set by the instruction decoder.  It suggests
+      the number of bytes objdump should display on a single line.  If
+      the instruction decoder sets this, it should always set it to
+      the same value in order to get reasonable looking output.  */
+  int bytes_per_line;
+
+  /* The next two variables control the way objdump displays the raw data.  */
+  /* For example, if bytes_per_line is 8 and bytes_per_chunk is 4, the */
+  /* output will look like this:
+     00:   00000000 00000000
+     with the chunks displayed according to "display_endian". */
+  int bytes_per_chunk;
+  enum bfd_endian display_endian;
+
+  /* Number of octets per incremented target address
+     Normally one, but some DSPs have byte sizes of 16 or 32 bits.  */
+  unsigned int octets_per_byte;
+
+  /* The number of zeroes we want to see at the end of a section before we
+     start skipping them.  */
+  unsigned int skip_zeroes;
+
+  /* The number of zeroes to skip at the end of a section.  If the number
+     of zeroes at the end is between SKIP_ZEROES_AT_END and SKIP_ZEROES,
+     they will be disassembled.  If there are fewer than
+     SKIP_ZEROES_AT_END, they will be skipped.  This is a heuristic
+     attempt to avoid disassembling zeroes inserted by section
+     alignment.  */
+  unsigned int skip_zeroes_at_end;
+
+  /* Whether the disassembler always needs the relocations.  */
+  bfd_boolean disassembler_needs_relocs;
+
+  /* Results from instruction decoders.  Not all decoders yet support
+     this information.  This info is set each time an instruction is
+     decoded, and is only valid for the last such instruction.
+
+     To determine whether this decoder supports this information, set
+     insn_info_valid to 0, decode an instruction, then check it.  */
+
+  char insn_info_valid;		/* Branch info has been set. */
+  char branch_delay_insns;	/* How many sequential insn's will run before
+				   a branch takes effect.  (0 = normal) */
+  char data_size;		/* Size of data reference in insn, in bytes */
+  enum dis_insn_type insn_type;	/* Type of instruction */
+  bfd_vma target;		/* Target address of branch or dref, if known;
+				   zero if unknown.  */
+  bfd_vma target2;		/* Second target address for dref2 */
+
+  /* Command line options specific to the target disassembler.  */
+  char * disassembler_options;
+
+} disassemble_info;
+
+
+/* Standard disassemblers.  Disassemble one instruction at the given
+   target address.  Return number of octets processed.  */
+typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
+
+extern int print_insn_alpha		(bfd_vma, disassemble_info *);
+extern int print_insn_avr		(bfd_vma, disassemble_info *);
+extern int print_insn_bfin		(bfd_vma, disassemble_info *);
+extern int print_insn_big_arm		(bfd_vma, disassemble_info *);
+extern int print_insn_big_mips		(bfd_vma, disassemble_info *);
+extern int print_insn_big_or32		(bfd_vma, disassemble_info *);
+extern int print_insn_big_powerpc	(bfd_vma, disassemble_info *);
+extern int print_insn_big_score         (bfd_vma, disassemble_info *);
+extern int print_insn_cr16              (bfd_vma, disassemble_info *);
+extern int print_insn_crx               (bfd_vma, disassemble_info *);
+extern int print_insn_d10v		(bfd_vma, disassemble_info *);
+extern int print_insn_d30v		(bfd_vma, disassemble_info *);
+extern int print_insn_dlx 		(bfd_vma, disassemble_info *);
+extern int print_insn_fr30		(bfd_vma, disassemble_info *);
+extern int print_insn_frv		(bfd_vma, disassemble_info *);
+extern int print_insn_h8300		(bfd_vma, disassemble_info *);
+extern int print_insn_h8300h		(bfd_vma, disassemble_info *);
+extern int print_insn_h8300s		(bfd_vma, disassemble_info *);
+extern int print_insn_h8500		(bfd_vma, disassemble_info *);
+extern int print_insn_hppa		(bfd_vma, disassemble_info *);
+extern int print_insn_i370		(bfd_vma, disassemble_info *);
+extern int print_insn_i386		(bfd_vma, disassemble_info *);
+extern int print_insn_i386_att		(bfd_vma, disassemble_info *);
+extern int print_insn_i386_intel	(bfd_vma, disassemble_info *);
+extern int print_insn_i860		(bfd_vma, disassemble_info *);
+extern int print_insn_i960		(bfd_vma, disassemble_info *);
+extern int print_insn_ia64		(bfd_vma, disassemble_info *);
+extern int print_insn_ip2k		(bfd_vma, disassemble_info *);
+extern int print_insn_iq2000		(bfd_vma, disassemble_info *);
+extern int print_insn_little_arm	(bfd_vma, disassemble_info *);
+extern int print_insn_little_mips	(bfd_vma, disassemble_info *);
+extern int print_insn_little_or32	(bfd_vma, disassemble_info *);
+extern int print_insn_little_powerpc	(bfd_vma, disassemble_info *);
+extern int print_insn_little_score      (bfd_vma, disassemble_info *); 
+extern int print_insn_lm32		(bfd_vma, disassemble_info *);
+extern int print_insn_m32c	        (bfd_vma, disassemble_info *);
+extern int print_insn_m32r		(bfd_vma, disassemble_info *);
+extern int print_insn_m68hc11		(bfd_vma, disassemble_info *);
+extern int print_insn_m68hc12		(bfd_vma, disassemble_info *);
+extern int print_insn_m68k		(bfd_vma, disassemble_info *);
+extern int print_insn_m88k		(bfd_vma, disassemble_info *);
+extern int print_insn_maxq_big		(bfd_vma, disassemble_info *);
+extern int print_insn_maxq_little	(bfd_vma, disassemble_info *);
+extern int print_insn_mcore		(bfd_vma, disassemble_info *);
+extern int print_insn_mep		(bfd_vma, disassemble_info *);
+extern int print_insn_microblaze	(bfd_vma, disassemble_info *);
+extern int print_insn_mmix		(bfd_vma, disassemble_info *);
+extern int print_insn_mn10200		(bfd_vma, disassemble_info *);
+extern int print_insn_mn10300		(bfd_vma, disassemble_info *);
+extern int print_insn_moxie		(bfd_vma, disassemble_info *);
+extern int print_insn_msp430		(bfd_vma, disassemble_info *);
+extern int print_insn_mt                (bfd_vma, disassemble_info *);
+extern int print_insn_ns32k		(bfd_vma, disassemble_info *);
+extern int print_insn_openrisc		(bfd_vma, disassemble_info *);
+extern int print_insn_pdp11		(bfd_vma, disassemble_info *);
+extern int print_insn_pj		(bfd_vma, disassemble_info *);
+extern int print_insn_rs6000		(bfd_vma, disassemble_info *);
+extern int print_insn_s390		(bfd_vma, disassemble_info *);
+extern int print_insn_sh		(bfd_vma, disassemble_info *);
+extern int print_insn_sh64		(bfd_vma, disassemble_info *);
+extern int print_insn_sh64x_media	(bfd_vma, disassemble_info *);
+extern int print_insn_sparc		(bfd_vma, disassemble_info *);
+extern int print_insn_spu		(bfd_vma, disassemble_info *);
+extern int print_insn_tic30		(bfd_vma, disassemble_info *);
+extern int print_insn_tic4x		(bfd_vma, disassemble_info *);
+extern int print_insn_tic54x		(bfd_vma, disassemble_info *);
+extern int print_insn_tic6x		(bfd_vma, disassemble_info *);
+extern int print_insn_tic80		(bfd_vma, disassemble_info *);
+extern int print_insn_v850		(bfd_vma, disassemble_info *);
+extern int print_insn_vax		(bfd_vma, disassemble_info *);
+extern int print_insn_w65		(bfd_vma, disassemble_info *);
+extern int print_insn_xc16x		(bfd_vma, disassemble_info *);
+extern int print_insn_xstormy16		(bfd_vma, disassemble_info *);
+extern int print_insn_xtensa		(bfd_vma, disassemble_info *);
+extern int print_insn_z80		(bfd_vma, disassemble_info *);
+extern int print_insn_z8001		(bfd_vma, disassemble_info *);
+extern int print_insn_z8002		(bfd_vma, disassemble_info *);
+extern int print_insn_rx		(bfd_vma, disassemble_info *);
+
+extern disassembler_ftype arc_get_disassembler (void *);
+extern disassembler_ftype cris_get_disassembler (bfd *);
+
+extern void print_i386_disassembler_options (FILE *);
+extern void print_mips_disassembler_options (FILE *);
+extern void print_ppc_disassembler_options (FILE *);
+extern void print_arm_disassembler_options (FILE *);
+extern void parse_arm_disassembler_option (char *);
+extern void print_s390_disassembler_options (FILE *);
+extern int  get_arm_regname_num_options (void);
+extern int  set_arm_regname_option (int);
+extern int  get_arm_regnames (int, const char **, const char **, const char *const **);
+extern bfd_boolean arm_symbol_is_valid (asymbol *, struct disassemble_info *);
+
+/* Fetch the disassembler for a given BFD, if that support is available.  */
+extern disassembler_ftype disassembler (bfd *);
+
+/* Amend the disassemble_info structure as necessary for the target architecture.
+   Should only be called after initialising the info->arch field.  */
+extern void disassemble_init_for_target (struct disassemble_info * dinfo);
+
+/* Document any target specific options available from the disassembler.  */
+extern void disassembler_usage (FILE *);
+
+
+/* This block of definitions is for particular callers who read instructions
+   into a buffer before calling the instruction decoder.  */
+
+/* Here is a function which callers may wish to use for read_memory_func.
+   It gets bytes from a buffer.  */
+extern int buffer_read_memory
+  (bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *);
+
+/* This function goes with buffer_read_memory.
+   It prints a message using info->fprintf_func and info->stream.  */
+extern void perror_memory (int, bfd_vma, struct disassemble_info *);
+
+
+/* Just print the address in hex.  This is included for completeness even
+   though both GDB and objdump provide their own (to print symbolic
+   addresses).  */
+extern void generic_print_address
+  (bfd_vma, struct disassemble_info *);
+
+/* Always true.  */
+extern int generic_symbol_at_address
+  (bfd_vma, struct disassemble_info *);
+
+/* Also always true.  */
+extern bfd_boolean generic_symbol_is_valid
+  (asymbol *, struct disassemble_info *);
+
+/* Method to initialize a disassemble_info struct.  This should be
+   called by all applications creating such a struct.  */
+extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream,
+				   fprintf_ftype fprintf_func);
+
+/* For compatibility with existing code.  */
+#define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \
+  init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
+#define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
+  init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* ! defined (DIS_ASM_H) */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dlgs.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,186 @@
+#ifndef _DLGS_H
+#define _DLGS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define FILEOPENORD 1536
+#define MULTIFILEOPENORD 1537
+#define PRINTDLGORD 1538
+#define PRNSETUPDLGORD 1539
+#define FINDDLGORD 1540
+#define REPLACEDLGORD 1541
+#define FONTDLGORD 1542
+#define FORMATDLGORD31 1543
+#define FORMATDLGORD30 1544
+#define PAGESETUPDLGORD 1546
+#define ctlFirst 0x400
+#define ctlLast 0x4ff
+#define chx1 0x410
+#define chx2 0x411
+#define chx3 0x412
+#define chx4 0x413
+#define chx5 0x414
+#define chx6 0x415
+#define chx7 0x416
+#define chx8 0x417
+#define chx9 0x418
+#define chx10 0x419
+#define chx11 0x41a
+#define chx12 0x41b
+#define chx13 0x41c
+#define chx14 0x41d
+#define chx15 0x41e
+#define chx16 0x41f
+#define cmb1 0x470
+#define cmb2 0x471
+#define cmb3 0x472
+#define cmb4 0x473
+#define cmb5 0x474
+#define cmb6 0x475
+#define cmb7 0x476
+#define cmb8 0x477
+#define cmb9 0x478
+#define cmb10 0x479
+#define cmb11 0x47a
+#define cmb12 0x47b
+#define cmb13 0x47c
+#define cmb14 0x47d
+#define cmb15 0x47e
+#define cmb16 0x47f
+#define edt1 0x480
+#define edt2 0x481
+#define edt3 0x482
+#define edt4 0x483
+#define edt5 0x484
+#define edt6 0x485
+#define edt7 0x486
+#define edt8 0x487
+#define edt9 0x488
+#define edt10 0x489
+#define edt11 0x48a
+#define edt12 0x48b
+#define edt13 0x48c
+#define edt14 0x48d
+#define edt15 0x48e
+#define edt16 0x48f
+#define frm1 0x434
+#define frm2 0x435
+#define frm3 0x436
+#define frm4 0x437
+#define grp1 0x430
+#define grp2 0x431
+#define grp3 0x432
+#define grp4 0x433
+#define ico1 0x43c
+#define ico2 0x43d
+#define ico3 0x43e
+#define ico4 0x43f
+#define lst1 0x460
+#define lst2 0x461
+#define lst3 0x462
+#define lst4 0x463
+#define lst5 0x464
+#define lst6 0x465
+#define lst7 0x466
+#define lst8 0x467
+#define lst9 0x468
+#define lst10 0x469
+#define lst11 0x46a
+#define lst12 0x46b
+#define lst13 0x46c
+#define lst14 0x46d
+#define lst15 0x46e
+#define lst16 0x46f
+#define psh1 0x400
+#define psh2 0x401
+#define psh3 0x402
+#define psh4 0x403
+#define psh5 0x404
+#define psh6 0x405
+#define psh7 0x406
+#define psh8 0x407
+#define psh9 0x408
+#define psh10 0x409
+#define psh11 0x40a
+#define psh12 0x40b
+#define psh13 0x40c
+#define psh14 0x40d
+#define psh15 0x40e
+#define pshHelp 0x40e
+#define psh16 0x40f
+#define rad1 0x420
+#define rad2 0x421
+#define rad3 0x422
+#define rad4 0x423
+#define rad5 0x424
+#define rad6 0x425
+#define rad7 0x426
+#define rad8 0x427
+#define rad9 0x428
+#define rad10 0x429
+#define rad11 0x42a
+#define rad12 0x42b
+#define rad13 0x42c
+#define rad14 0x42d
+#define rad15 0x42e
+#define rad16 0x42f
+#define rct1 0x438
+#define rct2 0x439
+#define rct3 0x43a
+#define rct4 0x43b
+#define scr1 0x490
+#define scr2 0x491
+#define scr3 0x492
+#define scr4 0x493
+#define scr5 0x494
+#define scr6 0x495
+#define scr7 0x496
+#define scr8 0x497
+#define stc1 0x440
+#define stc2 0x441
+#define stc3 0x442
+#define stc4 0x443
+#define stc5 0x444
+#define stc6 0x445
+#define stc7 0x446
+#define stc8 0x447
+#define stc9 0x448
+#define stc10 0x449
+#define stc11 0x44a
+#define stc12 0x44b
+#define stc13 0x44c
+#define stc14 0x44d
+#define stc15 0x44e
+#define stc16 0x44f
+#define stc17 0x450
+#define stc18 0x451
+#define stc19 0x452
+#define stc20 0x453
+#define stc21 0x454
+#define stc22 0x455
+#define stc23 0x456
+#define stc24 0x457
+#define stc25 0x458
+#define stc26 0x459
+#define stc27 0x45a
+#define stc28 0x45b
+#define stc29 0x45c
+#define stc30 0x45d
+#define stc31 0x45e
+#define stc32 0x45f
+#ifndef RC_INVOKED
+typedef struct tagCRGB {
+ BYTE bRed;
+ BYTE bGreen;
+ BYTE bBlue;
+ BYTE bExtra;
+} CRGB;
+#endif
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/docobj.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,147 @@
+#ifndef _DOCOBJ_H
+#define _DOCOBJ_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define OLECMDERR_E_UNKNOWNGROUP (-2147221244)
+#define OLECMDERR_E_DISABLED (-2147221247)
+#define OLECMDERR_E_NOHELP (-2147221246)
+#define OLECMDERR_E_CANCELED (-2147221245)
+#define OLECMDERR_E_NOTSUPPORTED (-2147221248)
+
+typedef enum {
+	OLECMDID_OPEN = 1,
+	OLECMDID_NEW = 2,
+	OLECMDID_SAVE = 3,
+	OLECMDID_SAVEAS = 4,
+	OLECMDID_SAVECOPYAS = 5,
+	OLECMDID_PRINT = 6,
+	OLECMDID_PRINTPREVIEW = 7,
+	OLECMDID_PAGESETUP = 8,
+	OLECMDID_SPELL = 9,
+	OLECMDID_PROPERTIES = 10,
+	OLECMDID_CUT = 11,
+	OLECMDID_COPY = 12,
+	OLECMDID_PASTE = 13,
+	OLECMDID_PASTESPECIAL = 14,
+	OLECMDID_UNDO = 15,
+	OLECMDID_REDO = 16,
+	OLECMDID_SELECTALL = 17,
+	OLECMDID_CLEARSELECTION = 18,
+	OLECMDID_ZOOM = 19,
+	OLECMDID_GETZOOMRANGE = 20,
+	OLECMDID_UPDATECOMMANDS = 21,
+	OLECMDID_REFRESH = 22,
+	OLECMDID_STOP = 23,
+	OLECMDID_HIDETOOLBARS = 24,
+	OLECMDID_SETPROGRESSMAX = 25,
+	OLECMDID_SETPROGRESSPOS = 26,
+	OLECMDID_SETPROGRESSTEXT = 27,
+	OLECMDID_SETTITLE = 28,
+	OLECMDID_SETDOWNLOADSTATE = 29,
+	OLECMDID_STOPDOWNLOAD = 30
+} OLECMDID;
+typedef enum {
+	OLECMDF_SUPPORTED = 1,
+	OLECMDF_ENABLED = 2,
+	OLECMDF_LATCHED = 4,
+	OLECMDF_NINCHED = 8
+} OLECMDF;
+typedef enum {
+	OLECMDEXECOPT_DODEFAULT = 0,
+	OLECMDEXECOPT_PROMPTUSER = 1,
+	OLECMDEXECOPT_DONTPROMPTUSER = 2,
+	OLECMDEXECOPT_SHOWHELP = 3
+} OLECMDEXECOPT;
+
+typedef struct _tagOLECMDTEXT {
+	DWORD cmdtextf;
+	ULONG cwActual;
+	ULONG cwBuf;
+	wchar_t rgwz[1];
+} OLECMDTEXT;
+typedef struct _tagOLECMD {
+	ULONG cmdID;
+	DWORD cmdf;
+} OLECMD;
+
+typedef _COM_interface IOleInPlaceSite *LPOLEINPLACESITE;
+typedef _COM_interface IEnumOleDocumentViews *LPENUMOLEDOCUMENTVIEWS;
+
+EXTERN_C const IID IID_IContinueCallback;
+EXTERN_C const IID IID_IEnumOleDocumentViews;
+EXTERN_C const IID IID_IPrint;
+
+EXTERN_C const IID IID_IOleDocumentView;
+#define INTERFACE IOleDocumentView
+DECLARE_INTERFACE_(IOleDocumentView,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(SetInPlaceSite)(THIS_ LPOLEINPLACESITE) PURE;
+	STDMETHOD(GetInPlaceSite)(THIS_ LPOLEINPLACESITE*) PURE;
+	STDMETHOD(GetDocument)(THIS_ IUnknown**) PURE;
+	STDMETHOD(SetRect)(THIS_ LPRECT) PURE;
+	STDMETHOD(GetRect)(THIS_ LPRECT) PURE;
+	STDMETHOD(SetRectComplex)(THIS_ LPRECT,LPRECT,LPRECT,LPRECT) PURE;
+	STDMETHOD(Show)(THIS_ BOOL) PURE;
+	STDMETHOD(UIActivate)(THIS_ BOOL) PURE;
+	STDMETHOD(Open)(THIS) PURE;
+	STDMETHOD(Close)(THIS_ DWORD) PURE;
+	STDMETHOD(SaveViewState)(THIS_ IStream*) PURE;
+	STDMETHOD(ApplyViewState)(THIS_ IStream*) PURE;
+	STDMETHOD(Clone)(THIS_ LPOLEINPLACESITE,IOleDocumentView**) PURE;
+};
+#undef INTERFACE
+DECLARE_ENUMERATOR_(IEnumOleDocumentViews,IOleDocumentView);
+
+EXTERN_C const IID IID_IOleDocument;
+#define INTERFACE IOleDocument
+DECLARE_INTERFACE_(IOleDocument,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(CreateView)(THIS_ LPOLEINPLACESITE,IStream*,DWORD,IOleDocumentView**) PURE;
+	STDMETHOD(GetDocMiscStatus)(THIS_ DWORD*) PURE;
+	STDMETHOD(EnumViews)(THIS_ LPENUMOLEDOCUMENTVIEWS*,IOleDocumentView**) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleCommandTarget;
+#define INTERFACE IOleCommandTarget
+DECLARE_INTERFACE_(IOleCommandTarget,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(QueryStatus)(THIS_ const GUID*,ULONG,OLECMD*,OLECMDTEXT*) PURE;
+	STDMETHOD(Exec)(THIS_ const GUID*,DWORD,DWORD,VARIANTARG*,VARIANTARG*) PURE;
+};
+#undef INTERFACE
+
+EXTERN_C const IID IID_IOleDocumentSite;
+#define INTERFACE IOleDocumentSite
+DECLARE_INTERFACE_(IOleDocumentSite,IUnknown)
+{
+	STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+	STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+	STDMETHOD_(ULONG,Release)(THIS) PURE;
+
+	STDMETHOD(ActivateMe)(THIS_ IOleDocumentView*) PURE;
+};
+#undef INTERFACE
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dos.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,89 @@
+/*
+ * dos.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * DOS-specific functions and structures.
+ *
+ */
+
+#ifndef	_DOS_H_
+#define	_DOS_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+#define __need_wchar_t
+#ifndef RC_INVOKED
+#include <stddef.h>
+#endif	/* Not RC_INVOKED */
+
+/* For DOS file attributes */
+#include <io.h>
+
+#ifndef RC_INVOKED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef __MSVCRT__ /* these are in CRTDLL, but not MSVCRT */
+#ifndef __DECLSPEC_SUPPORTED
+extern unsigned int *_imp___basemajor_dll;
+extern unsigned int *_imp___baseminor_dll;
+extern unsigned int *_imp___baseversion_dll;
+extern unsigned int *_imp___osmajor_dll;
+extern unsigned int *_imp___osminor_dll;
+extern unsigned int *_imp___osmode_dll;
+
+#define _basemajor (*_imp___basemajor_dll)
+#define _baseminor (*_imp___baseminor_dll)
+#define _baseversion (*_imp___baseversion_dll)
+#define _osmajor (*_imp___osmajor_dll)
+#define _osminor (*_imp___osminor_dll)
+#define _osmode (*_imp___osmode_dll)
+
+#else /* __DECLSPEC_SUPPORTED */
+
+__MINGW_IMPORT unsigned int _basemajor_dll;
+__MINGW_IMPORT unsigned int _baseminor_dll;
+__MINGW_IMPORT unsigned int _baseversion_dll;
+__MINGW_IMPORT unsigned int _osmajor_dll;
+__MINGW_IMPORT unsigned int _osminor_dll;
+__MINGW_IMPORT unsigned int _osmode_dll;
+
+#define _basemajor _basemajor_dll
+#define _baseminor _baseminor_dll
+#define _baseversion _baseversion_dll
+#define _osmajor _osmajor_dll
+#define _osminor _osminor_dll
+#define _osmode _osmode_dll
+
+#endif /* __DECLSPEC_SUPPORTED */
+#endif /* ! __MSVCRT__ */
+
+#ifndef _DISKFREE_T_DEFINED
+/* needed by _getdiskfree (also in direct.h) */
+struct _diskfree_t {
+	unsigned total_clusters;
+	unsigned avail_clusters;
+	unsigned sectors_per_cluster;
+	unsigned bytes_per_sector;
+};
+#define _DISKFREE_T_DEFINED
+#endif  
+
+_CRTIMP unsigned __cdecl __MINGW_NOTHROW _getdiskfree (unsigned, struct _diskfree_t *);
+
+#ifndef	_NO_OLDNAMES
+# define diskfree_t _diskfree_t
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _DOS_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsadmin.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,38 @@
+/*
+ * dsadmin.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSADMIN_H
+#define _DSADMIN_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Admin Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwSize;
+	HICON hObjClassIcon;
+	LPWSTR lpszWizTitle;
+	LPWSTR lpszContDisplayName;
+} DSA_NEWOBJ_DISPINFO,*LPDSA_NEWOBJ_DISPINFO;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsclient.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,186 @@
+/*
+ * dsclient.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSCLIENT_H
+#define _DSCLIENT_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+/*--- Active Directory Reference - Active Directory Functions - Active Directory Display Functions - BFFCallBack */
+#define DSBM_QUERYINSERTW 0x0064
+#define DSBM_QUERYINSERTA 0x0065
+#define DSBM_CHANGEIMAGESTATE 0x0066
+#define DSBM_HELP 0x0067
+#define DSBM_CONTEXTMENU 0x0068
+#ifdef UNICODE
+#define DSBM_QUERYINSERT DSBM_QUERYINSERTW
+#else
+#define DSBM_QUERYINSERT DSBM_QUERYINSERTA
+#endif
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+typedef struct _DOMAINDESC {
+	LPWSTR pszName;
+	LPWSTR pszPath;
+	LPWSTR pszNCName;
+	LPWSTR pszTrustParent;
+	LPWSTR pszObjectClass;
+	ULONG ulFlags;
+	BOOL fDownLevel;
+	struct _DOMAINDESC* pdChildList;
+	struct _DOMAINDESC* pdNextSibling;
+} DOMAIN_DESC,DOMAINDESC,*PDOMAIN_DESC,*LPDOMAINDESC;
+typedef struct {
+	DWORD dsSize;
+	DWORD dwCount;
+	DOMAINDESC aDomains[1];
+} DOMAINTREE,DOMAIN_TREE,*PDOMAIN_TREE,*LPDOMAINTREE;
+#define DSB_MAX_DISPLAYNAME_CHARS 64
+typedef struct {
+	DWORD cbStruct;
+	LPCWSTR pszADsPath;
+	LPCWSTR pszClass;
+	DWORD dwMask;
+	DWORD dwState;
+	DWORD dwStateMask;
+	CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
+	CHAR szIconLocation[MAX_PATH];
+	INT iIconResID;
+} DSBITEMA,*PDSBITEMA;
+typedef struct {
+	DWORD cbStruct;
+	LPCWSTR pszADsPath;
+	LPCWSTR pszClass;
+	DWORD dwMask;
+	DWORD dwState;
+	DWORD dwStateMask;
+	CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
+	CHAR szIconLocation[MAX_PATH];
+	INT iIconResID;
+} DSBITEMW,*PDSBITEMW;
+#define DSBF_STATE 0x00000001
+#define DSBF_ICONLOCATION 0x00000002
+#define DSBF_DISPLAYNAME 0x00000004
+#define DSBS_CHECKED 0x00000001
+#define DSBS_HIDDEN 0x00000002
+#define DSBS_ROOT 0x00000004
+typedef struct {
+	DWORD cbStruct;
+	HWND hwndOwner;
+	LPCSTR pszCaption;
+	LPCSTR pszTitle;
+	LPCWSTR pszRoot;
+	LPWSTR pszPath;
+	ULONG cchPath;
+	DWORD dwFlags;
+	BFFCALLBACK pfnCallback;
+	LPARAM lParam;
+	DWORD dwReturnFormat;
+	LPCWSTR pUserName;
+	LPCWSTR pPassword;
+	LPWSTR pszObjectClass;
+	ULONG cchObjectClass;
+} DSBROWSEINFOA,*PDSBROWSEINFOA;
+typedef struct {
+	DWORD cbStruct;
+	HWND hwndOwner;
+	LPCWSTR pszCaption;
+	LPCWSTR pszTitle;
+	LPCWSTR pszRoot;
+	LPWSTR pszPath;
+	ULONG cchPath;
+	DWORD dwFlags;
+	BFFCALLBACK pfnCallback;
+	LPARAM lParam;
+	DWORD dwReturnFormat;
+	LPCWSTR pUserName;
+	LPCWSTR pPassword;
+	LPWSTR pszObjectClass;
+	ULONG cchObjectClass;
+} DSBROWSEINFOW,*PDSBROWSEINFOW;
+#define DSBI_NOBUTTONS 0x00000001
+#define DSBI_NOLINES 0x00000002
+#define DSBI_NOLINESATROOT 0x00000004
+#define DSBI_CHECKBOXES 0x00000100
+#define DSBI_NOROOT 0x00010000
+#define DSBI_INCLUDEHIDDEN 0x00020000
+#define DSBI_EXPANDONOPEN 0x00040000
+#define DSBI_ENTIREDIRECTORY 0x00090000
+#define DSBI_RETURN_FORMAT 0x00100000
+#define DSBI_HASCREDENTIALS 0x00200000
+#define DSBI_IGNORETREATASLEAF 0x00400000
+#define DSBI_SIMPLEAUTHENTICATE 0x00800000
+#define DSBI_RETURNOBJECTCLASS 0x01000000
+#define DSBI_DONTSIGNSEAL 0x02000000
+typedef struct {
+	DWORD dwFlags;
+	CLSID clsidWizardDialog;
+	CLSID clsidWizardPrimaryPage;
+	DWORD cWizardExtensions;
+	CLSID aWizardExtensions[1];
+} DSCLASSCREATIONINFO,*LPDSCLASSCREATIONINFO;
+#define DSCCIF_HASWIZARDDIALOG 0x00000001
+#define DSCCIF_HASWIZARDPRIMARYPAGE 0x00000002
+typedef struct _DSDISPLAYSPECOPTIONS {
+	DWORD dwSize;
+	DWORD dwFlags;
+	DWORD offsetAttribPrefix;
+	DWORD offsetUserName;
+	DWORD offsetPassword;
+	DWORD offsetServer;
+	DWORD offsetServerConfigPath;
+} DSDISPLAYSPECOPTIONS,*PDSDISPLAYSPECOPTIONS,*LPDSDISPLAYSPECOPTIONS;
+#define DSDSOF_HASUSERANDSERVERINFO 0x00000001
+#define DSDSOF_SIMPLEAUTHENTICATE 0x00000002
+#define DSDSOF_DONTSIGNSEAL 0x00000004
+#define DSDSOF_DSAVAILABLE 0x40000000
+typedef struct {
+	DWORD dwFlags;
+	DWORD dwProviderFlags;
+	DWORD offsetName;
+	DWORD offsetClass;
+} DSOBJECT,*LPDSOBJECT;
+#define DSOBJECT_ISCONTAINER 0x00000001
+#define DSOBJECT_READONLYPAGES 0x80000000
+#define DSPROVIDER_UNUSED_0 0x00000001
+#define DSPROVIDER_UNUSED_1 0x00000002
+#define DSPROVIDER_UNUSED_2 0x00000004
+#define DSPROVIDER_UNUSED_3 0x00000008
+#define DSPROVIDER_ADVANCED 0x00000010
+typedef struct {
+	CLSID clsidNamespace;
+	UINT cItems;
+	DSOBJECT aObjects[1];
+} DSOBJECTNAMES,*LPDSOBJECTNAMES;
+typedef struct {
+	DWORD offsetString;
+} DSPROPERTYPAGEINFO,*LPDSPROPERTYPAGEINFO;
+#ifdef UNICODE
+typedef DSBITEMW DSBITEM,*PDSBITEM;
+typedef DSBROWSEINFOW DSBROWSEINFO,*PDSBROWSEINFO;
+#else
+typedef DSBITEMA DSBITEM,*PDSBITEM;
+typedef DSBROWSEINFOA DSBROWSEINFO,*PDSBROWSEINFO;
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsgetdc.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,121 @@
+/*
+ * dsgetdc.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSGETDC_H
+#define _DSGETDC_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Directory Service Structures */
+#if (_WIN32_WINNT >= 0x0500)
+#define DS_FORCE_REDISCOVERY 0x00000001
+#define DS_DIRECTORY_SERVICE_REQUIRED 0x00000010
+#define DS_DIRECTORY_SERVICE_PREFERRED 0x00000020
+#define DS_GC_SERVER_REQUIRED 0x00000040
+#define DS_PDC_REQUIRED 0x00000080
+#define DS_BACKGROUND_ONLY 0x00000100
+#define DS_IP_REQUIRED 0x00000200
+#define DS_KDC_REQUIRED 0x00000400
+#define DS_TIMESERV_REQUIRED 0x00000800
+#define DS_WRITABLE_REQUIRED 0x00001000
+#define DS_GOOD_TIMESERV_PREFERRED 0x00002000
+#define DS_AVOID_SELF 0x00004000
+#define DS_ONLY_LDAP_NEEDED 0x00008000
+#define DS_IS_FLAT_NAME 0x00010000
+#define DS_IS_DNS_NAME 0x00020000
+#define DS_RETURN_DNS_NAME 0x40000000
+#define DS_RETURN_FLAT_NAME 0x80000000
+typedef struct _DOMAIN_CONTROLLER_INFOA {
+	LPSTR DomainControllerName;
+	LPSTR DomainControllerAddress;
+	ULONG DomainControllerAddressType;
+	GUID DomainGuid;
+	LPSTR DomainName;
+	LPSTR DnsForestName;
+	ULONG Flags;
+	LPSTR DcSiteName;
+	LPSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOA,*PDOMAIN_CONTROLLER_INFOA;
+typedef struct _DOMAIN_CONTROLLER_INFOW {
+	LPWSTR DomainControllerName;
+	LPWSTR DomainControllerAddress;
+	ULONG DomainControllerAddressType;
+	GUID DomainGuid;
+	LPWSTR DomainName;
+	LPWSTR DnsForestName;
+	ULONG Flags;
+	LPWSTR DcSiteName;
+	LPWSTR ClientSiteName;
+} DOMAIN_CONTROLLER_INFOW,*PDOMAIN_CONTROLLER_INFOW;
+#define DS_INET_ADDRESS 0x0001
+#define DS_NETBIOS_ADDRESS 0x0002
+#define DS_PDC_FLAG 0x00000001
+#define DS_GC_FLAG 0x00000004
+#define DS_DS_FLAG 0x00000010
+#define DS_KDC_FLAG 0x00000020
+#define DS_TIMESERV_FLAG 0x00000040
+#define DS_WRITABLE_FLAG 0x00000100
+#define DS_DNS_CONTROLLER_FLAG 0x20000000
+#define DS_DNS_DOMAIN_FLAG 0x40000000
+#define DS_DNS_FOREST_FLAG 0x80000000
+typedef struct _DS_DOMAIN_TRUSTSA {
+	LPSTR NetbiosDomainName;
+	LPSTR DnsDomainName;
+	ULONG Flags;
+	ULONG ParentIndex;
+	ULONG TrustType;
+	ULONG TrustAttributes;
+	PSID DomainSid;
+	GUID DomainGuid;
+} DS_DOMAIN_TRUSTSA,*PDS_DOMAIN_TRUSTSA;
+typedef struct _DS_DOMAIN_TRUSTSW {
+	LPWSTR NetbiosDomainName;
+	LPWSTR DnsDomainName;
+	ULONG Flags;
+	ULONG ParentIndex;
+	ULONG TrustType;
+	ULONG TrustAttributes;
+	PSID DomainSid;
+	GUID DomainGuid;
+} DS_DOMAIN_TRUSTSW,*PDS_DOMAIN_TRUSTSW;
+#define DS_DOMAIN_IN_FOREST 0x0001
+#define DS_DOMAIN_DIRECT_OUTBOUND 0x0002
+#define DS_DOMAIN_TREE_ROOT 0x0004
+#define DS_DOMAIN_PRIMARY 0x0008
+#define DS_DOMAIN_NATIVE_MODE 0x0010
+#define DS_DOMAIN_DIRECT_INBOUND 0x0020
+
+DWORD WINAPI DsGetDcNameW(LPCWSTR, LPCWSTR, GUID*, LPCWSTR, ULONG, PDOMAIN_CONTROLLER_INFOW*);
+DWORD WINAPI DsGetDcNameA(LPCSTR, LPCSTR, GUID*, LPCSTR, ULONG, PDOMAIN_CONTROLLER_INFOA*);
+
+#ifdef UNICODE
+typedef DOMAIN_CONTROLLER_INFOW DOMAIN_CONTROLLER_INFO,*PDOMAIN_CONTROLLER_INFO;
+typedef DS_DOMAIN_TRUSTSW DS_DOMAIN_TRUSTS,*PDS_DOMAIN_TRUSTS;
+#define DsGetDcName DsGetDcNameW
+#else
+typedef DOMAIN_CONTROLLER_INFOA DOMAIN_CONTROLLER_INFO,*PDOMAIN_CONTROLLER_INFO;
+typedef DS_DOMAIN_TRUSTSA DS_DOMAIN_TRUSTS,*PDS_DOMAIN_TRUSTS;
+#define DsGetDcName DsGetDcNameA
+#endif
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dshow.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,108 @@
+#ifndef _DSHOW_H
+#define _DSHOW_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#include <strmif.h>
+#include <amaudio.h>
+#include <amvideo.h>
+#include <evcode.h>
+#include <audevcod.h>
+#include <dvdevcod.h>
+#include <errors.h>
+#include <vptype.h>
+#include <ks.h>
+#include <vidcap.h>
+#include <bdatypes.h>
+#include <dvdmedia.h>
+#include <il21dec.h>
+#include <ddraw.h> /* DDSCAPS2, DDPIXELFORMAT */
+#ifndef _WINGDI_H
+#include <wingdi.h> /* BITMAPINFOHEADER */
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+typedef enum _AM_ASPECT_RATIO_MODE {
+	AM_ARMODE_STRETCHED,
+	AM_ARMODE_LETTER_BOX,
+	AM_ARMODE_CROP,
+	AM_ARMODE_STRETCHED_AS_PRIMARY
+} AM_ASPECT_RATIO_MODE;
+typedef enum _AM_WST_DRAWBGMODE {
+	AM_WST_DRAWBGMODE_Opaque,
+	AM_WST_DRAWBGMODE_Transparent
+} AM_WST_DRAWBGMODE,*PAM_WST_DRAWBGMODE;
+typedef enum _AM_WST_LEVEL {
+	AM_WST_LEVEL_1_5 = 0
+} AM_WST_LEVEL,*PAM_WST_LEVEL;
+typedef enum _AM_WST_SERVICE {
+	AM_WST_SERVICE_None = 0,
+	AM_WST_SERVICE_Text,
+	AM_WST_SERVICE_IDS,
+	AM_WST_SERVICE_Invalid
+} AM_WST_SERVICE,*PAM_WST_SERVICE;
+typedef enum _AM_WST_STATE {
+	AM_WST_STATE_Off = 0,
+	AM_WST_STATE_On
+} AM_WST_STATE,*PAM_WST_STATE;
+typedef enum _AM_WST_STYLE {
+	AM_WST_STYLE_None = 0,
+	AM_WST_STYLE_Invers
+} AM_WST_STYLE,*PAM_WST_STYLE;
+typedef enum {
+	AM_EXSEEK_CANSEEK= 1,
+	AM_EXSEEK_CANSCAN = 2,
+	AM_EXSEEK_MARKERSEEK = 4,
+	AM_EXSEEK_SCANWITHOUTCLOCK = 8,
+	AM_EXSEEK_NOSTANDARDREPAINT = 16,
+	AM_EXSEEK_BUFFERING = 32,
+	AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64
+} AMExtendedSeekingCapabilities;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct _AM_WST_PAGE {
+	DWORD dwPageNr;
+	DWORD dwSubPageNr;
+	BYTE *pucPageData;
+} AM_WST_PAGE,*PAM_WST_PAGE;
+typedef struct _tag_AMVABeginFrameInfo{
+	DWORD dwDestSurfaceIndex;
+	LPVOID pInputData;
+	DWORD dwSizeInputData;
+	LPVOID pOutputData;
+	DWORD dwSizeOutputData;
+ } AMVABeginFrameInfo,*LPAMVABeginFrameInfo;
+typedef struct _tag_AMVACompBufferInfo{
+	DWORD dwNumCompBuffers;
+	DWORD dwWidthToCreate;
+	DWORD dwHeightToCreate;
+	DWORD dwBytesToAllocate;
+	DDSCAPS2 ddCompCaps;
+	DDPIXELFORMAT ddPixelFormat;
+} AMVACompBufferInfo,*LPAMVACompBufferInfo;
+typedef struct _tag_AMVAEndFrameInfo{
+	DWORD dwSizeMiscData;
+	LPVOID pMiscData;
+} AMVAEndFrameInfo,*LPAMVAEndFrameInfo;
+typedef struct _tag_AMVAInternalMemInfo{
+	DWORD dwScratchMemAlloc;
+} AMVAInternalMemInfo,*LPAMVAInternalMemInfo;
+typedef struct _tag_AMVAUncompBufferInfo{
+	DWORD dwMinNumSurfaces;
+	DWORD dwMaxNumSurfaces;
+	DDPIXELFORMAT ddUncompPixelFormat;
+} AMVAUncompBufferInfo,*LPAMVAUncompBufferInfo;
+ typedef struct _tag_AMVAUncompDataInfo{
+	DWORD dwUncompWidth;
+	DWORD dwUncompHeight;
+	DDPIXELFORMAT ddUncompPixelFormat;
+} AMVAUncompDataInfo,*LPAMVAUncompDataInfo;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsquery.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,72 @@
+/*
+ * dsquery.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSQUERY_H
+#define _DSQUERY_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- Active Directory Reference - Active Directory Structures - Active Directory Display Structures */
+#if (_WIN32_WINNT >= 0x0500)
+typedef struct {
+	DWORD dwFlags;
+	INT fmt;
+	INT cx;
+	INT idsName;
+	LONG offsetProperty;
+	DWORD dwReserved;
+} DSCOLUMN,*LPDSCOLUMN;
+#define DSCOLUMNPROP_ADSPATH -1
+#define DSCOLUMNPROP_OBJECTCLASS -2
+typedef struct {
+	DWORD cbStruct;
+	LONG cClasses;
+	DWORD offsetClass[1];
+} DSQUERYCLASSLIST,*LPDSQUERYCLASSLIST;
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	LPWSTR pDefaultScope;
+	LPWSTR pDefaultSaveLocation;
+	LPWSTR pUserName;
+	LPWSTR pPassword;
+	LPWSTR pServer;
+} DSQUERYINITPARAMS,*LPDSQUERYINITPARAMS;
+#define DSQPF_NOSAVE 0x00000001
+#define DSQPF_SAVELOCATION 0x00000002
+#define DSQPF_SHOWHIDDENOBJECTS 0x00000004
+#define DSQPF_ENABLEADMINFEATURES 0x00000008
+#define DSQPF_ENABLEADVANCEDFEATURES 0x00000010
+#define DSQPF_HASCREDENTIALS 0x00000020
+#define DSQPF_NOCHOOSECOLUMNS 0x00000040
+typedef struct {
+	DWORD cbStruct;
+	DWORD dwFlags;
+	HINSTANCE hInstance;
+	LONG offsetQuery;
+	LONG iColumns;
+	DWORD dwReserved;
+	DSCOLUMN aColumns[1];
+} DSQUERYPARAMS,*LPDSQUERYPARAMS;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dsrole.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,75 @@
+/*
+ * dsrole.h - Active Directory
+ *
+ * THIS SOFTWARE IS NOT COPYRIGHTED
+ *
+ * This source code is offered for use in the public domain.  You may use,
+ * modify or distribute it freely.
+ *
+ * This code is distributed in the hope that it will be useful but
+ * WITHOUT ANY WARRANTY.  ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
+ * DISCLAIMED.  This includes but is not limited to warranties of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ */
+#ifndef _DSROLE_H
+#define _DSROLE_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0500)
+/*--- Active Directory Reference - Active Directory Enumerations */
+typedef enum {
+	DsRole_RoleStandaloneWorkstation,
+	DsRole_RoleMemberWorkstation,
+	DsRole_RoleStandaloneServer,
+	DsRole_RoleMemberServer,
+	DsRole_RoleBackupDomainController,
+	DsRole_RolePrimaryDomainController
+} DSROLE_MACHINE_ROLE;
+typedef enum {
+	DsRoleOperationIdle,
+	DsRoleOperationActive,
+	DsRoleOperationNeedReboot
+} DSROLE_OPERATION_STATE;
+typedef enum {
+	DsRolePrimaryDomainInfoBasic,
+	DsRoleUpgradeStatus,
+	DsRoleOperationState
+} DSROLE_PRIMARY_DOMAIN_INFO_LEVEL;
+typedef enum {
+	DsRoleServerUnknown,
+	DsRoleServerPrimary,
+	DsRoleServerBackup
+} DSROLE_SERVER_STATE;
+/*--- Active Directory Reference - Active Directory Structures - Directory Service Structures */
+typedef struct {
+	DSROLE_OPERATION_STATE OperationState;
+} DSROLE_OPERATION_STATE_INFO;
+typedef struct _DSROLE_PRIMARY_DOMAIN_INFO_BASIC {
+	DSROLE_MACHINE_ROLE MachineRole;
+	ULONG Flags;
+	LPWSTR DomainNameFlat;
+	LPWSTR DomainNameDns;
+	LPWSTR DomainForestName;
+	GUID DomainGuid;
+} DSROLE_PRIMARY_DOMAIN_INFO_BASIC,*PDSROLE_PRIMARY_DOMAIN_INFO_BASIC;
+#define DSROLE_PRIMARY_DS_RUNNING 0x00000001
+#define DSROLE_PRIMARY_DS_MIXED_MODE 0x00000002
+#define DSROLE_UPGRADE_IN_PROGRESS 0x00000004
+#define DSROLE_PRIMARY_DOMAIN_GUID_PRESENT 0x01000000
+typedef struct _DSROLE_UPGRADE_STATUS_INFO {
+	ULONG OperationState;
+	DSROLE_SERVER_STATE PreviousServerState;
+} DSROLE_UPGRADE_STATUS_INFO,*PDSROLE_UPGRADE_STATUS_INFO;
+#endif /* (_WIN32_WINNT >= 0x0500) */
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dvdevcod.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,76 @@
+#ifndef _DVDEVCOD_H
+#define _DVDEVCOD_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define EC_DVD_ANGLE_CHANGE 0x0106
+#define EC_DVD_ANGLES_AVAILABLE 0x0113
+#define EC_DVD_AUDIO_STREAM_CHANGE 0x0104
+#define EC_DVD_BUTTON_AUTO_ACTIVATED 0x0115
+#define EC_DVD_BUTTON_CHANGE 0x0107
+#define EC_DVD_CHAPTER_AUTOSTOP 0x010E
+#define EC_DVD_CHAPTER_START 0x0103
+#define EC_DVD_CMD_START 0x0116
+#define EC_DVD_CMD_END 0x0117
+#define EC_DVD_CURRENT_HMSF_TIME 0x011A
+#define EC_DVD_CURRENT_TIME 0x010B
+#define EC_DVD_DISC_EJECTED 0x0118
+#define EC_DVD_DISC_INSERTED 0x0119
+#define EC_DVD_DOMAIN_CHANGE 0x0101
+#define EC_DVD_ERROR 0x010C
+#define EC_DVD_KARAOKE_MODE 0x011B
+#define EC_DVD_NO_FP_PGC 0x010F
+#define EC_DVD_PARENTAL_LEVEL_CHANGE 0x0111
+#define EC_DVD_PLAYBACK_RATE_CHANGE 0x0110
+#define EC_DVD_PLAYBACK_STOPPED 0x0112
+#define EC_DVD_PLAYPERIOD_AUTOSTOP 0x0114
+#define EC_DVD_STILL_OFF 0x010A
+#define EC_DVD_STILL_ON 0x0109
+#define EC_DVD_SUBPICTURE_STREAM_CHANGE 0x0105
+#define EC_DVD_TITLE_CHANGE 0x0102
+#define EC_DVD_VALID_UOPS_CHANGE 0x0108
+#define EC_DVD_WARNING 0x010D
+typedef enum _tagDVD_ERROR {
+	DVD_ERROR_Unexpected = 1,
+	DVD_ERROR_CopyProtectFail = 2,   
+	DVD_ERROR_InvalidDVD1_0Disc = 3,
+	DVD_ERROR_InvalidDiscRegion = 4,
+	DVD_ERROR_LowParentalLevel = 5,
+	DVD_ERROR_MacrovisionFail = 6,
+	DVD_ERROR_IncompatibleSystemAndDecoderRegions = 7,
+	DVD_ERROR_IncompatibleDiscAndDecoderRegions = 8
+} DVD_ERROR;
+typedef enum _tagDVD_PB_STOPPED {
+	DVD_PB_STOPPED_Other = 0,
+	DVD_PB_STOPPED_NoBranch = 1,
+	DVD_PB_STOPPED_NoFirstPlayDomain = 2,
+	DVD_PB_STOPPED_StopCommand = 3,
+	DVD_PB_STOPPED_Reset = 4,
+	DVD_PB_STOPPED_DiscEjected = 5,
+	DVD_PB_STOPPED_IllegalNavCommand = 6,
+	DVD_PB_STOPPED_PlayPeriodAutoStop = 7,
+	DVD_PB_STOPPED_PlayChapterAutoStop = 8,
+	DVD_PB_STOPPED_ParentalFailure = 9,
+	DVD_PB_STOPPED_RegionFailure = 10,
+	DVD_PB_STOPPED_MacrovisionFailure = 11,
+	DVD_PB_STOPPED_DiscReadError = 12,
+	DVD_PB_STOPPED_CopyProtectFailure = 13
+} DVD_PB_STOPPED;
+typedef enum _tagDVD_WARNING {
+	DVD_WARNING_InvalidDVD1_0Disc = 1,
+	DVD_WARNING_FormatNotSupported = 2,
+	DVD_WARNING_IllegalNavCommand = 3,
+	DVD_WARNING_Open = 4,
+	DVD_WARNING_Seek = 5,
+	DVD_WARNING_Read = 6
+} DVD_WARNING;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dvdmedia.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,101 @@
+#ifndef _DVDMEDIA_H
+#define _DVDMEDIA_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifndef _STRMIF_H
+#include <strmif.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - DirectShow Structures - AM_SAMPLE2_PROPERTIES Structure */
+#define AM_VIDEO_FLAG_FIELD_MASK 0x0003
+#define AM_VIDEO_FLAG_INTERLEAVED_FRAME 0x0000
+#define AM_VIDEO_FLAG_FIELD1 0x0001
+#define AM_VIDEO_FLAG_FIELD2 0x0002
+#define AM_VIDEO_FLAG_FIELD1FIRST 0x0004
+#define AM_VIDEO_FLAG_WEAVE 0x0008
+#define AM_VIDEO_FLAG_REPEAT_FIELD 0x0040
+/*--- DirectShow Reference - DirectShow Enumerated Types */
+enum AM_MPEG2Level {
+	AM_MPEG2Level_Low = 1,
+	AM_MPEG2Level_Main,
+	AM_MPEG2Level_High1440,
+	AM_MPEG2Level_High
+};
+enum AM_MPEG2Profile {
+	AM_MPEG2Profile_Simple = 1,
+	AM_MPEG2Profile_Main,
+	AM_MPEG2Profile_SNRScalable,
+	AM_MPEG2Profile_SpatiallyScalable,
+	AM_MPEG2Profile_High
+};
+typedef enum {
+	AM_RATE_ChangeRate = 1,
+	AM_RATE_FullDataRateMax = 2,
+	AM_RATE_ReverseDecode = 3,
+	AM_RATE_DecoderPosition = 4,
+	AM_RATE_DecoderVersion = 5
+} AM_PROPERTY_DVD_RATE_CHANGE;
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct tagVIDEOINFOHEADER2 {
+	RECT rcSource;
+	RECT rcTarget;
+	DWORD dwBitRate;
+	DWORD dwBitErrorRate;
+	REFERENCE_TIME AvgTimePerFrame;
+	DWORD dwInterlaceFlags;
+	DWORD dwCopyProtectFlags;
+	DWORD dwPictAspectRatioX; 
+	DWORD dwPictAspectRatioY; 
+	union {
+		DWORD dwControlFlags;
+		DWORD dwReserved1;
+	};
+	DWORD dwReserved2;
+	BITMAPINFOHEADER bmiHeader;
+} VIDEOINFOHEADER2;
+#define AMINTERLACE_IsInterlaced 0x00000001
+#define AMINTERLACE_1FieldPerSample 0x00000002
+#define AMINTERLACE_Field1First 0x00000004
+#define AMINTERLACE_FieldPatField1Only 0x00000000
+#define AMINTERLACE_FieldPatField2Only 0x00000010
+#define AMINTERLACE_FieldPatBothRegular 0x00000020
+#define AMINTERLACE_FieldPatBothIrregular 0x00000030
+#define AMINTERLACE_DisplayModeBobOnly 0x00000000
+#define AMINTERLACE_DisplayModeWeaveOnly 0x00000040
+#define AMINTERLACE_DisplayModeBobOrWeave 0x00000080
+#define AMINTERLACE_FieldPatternMask 0x00000030
+#define AMINTERLACE_DisplayModeMask 0x000000C0
+#define AMCONTROL_USED 0x00000001
+#define AMCONTROL_PAD_TO_4x3 0x00000002
+#define AMCONTROL_PAD_TO_16x9 0x00000004
+#define AMCONTROL_COLORINFO_PRESENT 0x00000008
+typedef struct tagMPEG2VIDEOINFO {
+	VIDEOINFOHEADER2 hdr;
+	DWORD dwStartTimeCode;
+	DWORD cbSequenceHeader;
+	DWORD dwProfile;
+	DWORD dwLevel;
+	DWORD dwFlags;
+	DWORD dwSequenceHeader[1];
+} MPEG2VIDEOINFO;
+#define AMMPEG2_DoPanScan 0x00000001
+#define AMMPEG2_DVDLine21Field1 0x00000002
+#define AMMPEG2_DVDLine21Field2 0x00000004
+#define AMMPEG2_SourceIsLetterboxed 0x00000008
+#define AMMPEG2_FilmCameraMode 0x00000010
+#define AMMPEG2_LetterboxAnalogOut 0x00000020
+#define AMMPEG2_DSS_UserData 0x00000040
+#define AMMPEG2_DVB_UserData 0x00000080
+#define AMMPEG2_27MhzTimebase 0x00000100
+#define AMMPEG2_WidescreenAnalogOut 0x00000200
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dxerr8.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,53 @@
+/*
+
+	dxerr8.h - Header file for the DirectX 8 Error API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _DXERR8_H
+#define _DXERR8_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const char *WINAPI DXGetErrorString8A(HRESULT);
+const WCHAR *WINAPI DXGetErrorString8W(HRESULT);
+const char* WINAPI DXGetErrorDescription8A(HRESULT);
+const WCHAR* WINAPI DXGetErrorDescription8W(HRESULT);
+HRESULT WINAPI DXTraceA(const char*,DWORD,HRESULT,const char*,BOOL);
+HRESULT WINAPI DXTraceW(const char*,DWORD,HRESULT,const WCHAR*,BOOL);
+
+#ifdef UNICODE
+#define DXGetErrorString8 DXGetErrorString8W
+#define DXGetErrorDescription8 DXGetErrorDescription8W
+#define DXTrace DXTraceW
+#else
+#define DXGetErrorString8 DXGetErrorString8A
+#define DXGetErrorDescription8 DXGetErrorDescription8A
+#define DXTrace DXTraceA
+#endif 
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)	DXTrace(__FILE__,(DWORD)__LINE__,0,str,FALSE)
+#define DXTRACE_ERR(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,TRUE)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,FALSE)
+#else
+#define DXTRACE_MSG(str)	(0L)
+#define DXTRACE_ERR(str,hr)	(hr)
+#define DXTRACE_ERR_NOMSGBOX(str,hr)	(hr)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/dxerr9.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,53 @@
+/*
+
+	dxerr9.h - Header file for the DirectX 9 Error API
+
+	Written by Filip Navara <xnavara@volny.cz>
+
+	This library is distributed in the hope that it will be useful,
+	but WITHOUT ANY WARRANTY; without even the implied warranty of
+	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+*/
+
+#ifndef _DXERR9_H
+#define _DXERR9_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+const char *WINAPI DXGetErrorString9A(HRESULT);
+const WCHAR *WINAPI DXGetErrorString9W(HRESULT);
+const char* WINAPI DXGetErrorDescription9A(HRESULT);
+const WCHAR* WINAPI DXGetErrorDescription9W(HRESULT);
+HRESULT WINAPI DXTraceA(const char*,DWORD,HRESULT,const char*,BOOL);
+HRESULT WINAPI DXTraceW(const char*,DWORD,HRESULT,const WCHAR*,BOOL);
+
+#ifdef UNICODE
+#define DXGetErrorString9 DXGetErrorString9W
+#define DXGetErrorDescription9 DXGetErrorDescription9W
+#define DXTrace DXTraceW
+#else
+#define DXGetErrorString9 DXGetErrorString9A
+#define DXGetErrorDescription9 DXGetErrorDescription9A
+#define DXTrace DXTraceA
+#endif 
+
+#if defined(DEBUG) || defined(_DEBUG)
+#define DXTRACE_MSG(str)	DXTrace(__FILE__,(DWORD)__LINE__,0,str,FALSE)
+#define DXTRACE_ERR(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,FALSE)
+#define DXTRACE_ERR_MSGBOX(str,hr)	DXTrace(__FILE__,(DWORD)__LINE__,hr,str,TRUE)
+#else
+#define DXTRACE_MSG(str)	(0L)
+#define DXTRACE_ERR(str,hr)	(hr)
+#define DXTRACE_ERR_MSGBOX(str,hr)	(hr)
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/edevdefs.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,346 @@
+#ifndef _EDEVDEFS_H
+#define _EDEVDEFS_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#define ED_TOP 0x00000001
+#define ED_MIDDLE 0x00000002
+#define ED_BOTTOM 0x00000004
+#define ED_LEFT 0x00000100
+#define ED_CENTER 0x00000200
+#define ED_RIGHT 0x00000400
+#define ED_DEVCAP_CAN_RECORD 0x00001001
+#define ED_DEVCAP_CAN_RECORD_STROBE 0x00001002
+#define ED_DEVCAP_HAS_AUDIO 0x00001003
+#define ED_DEVCAP_HAS_VIDEO  0x00001004
+#define ED_DEVCAP_USES_FILES 0x00001005
+#define ED_DEVCAP_CAN_SAVE 0x00001006
+#define ED_DEVCAP_DEVICE_TYPE 0x00001007
+#define ED_DEVTYPE_VCR 0x00001008
+#define ED_DEVTYPE_LASERDISK 0x00001009
+#define ED_DEVTYPE_ATR 0x0000100A
+#define ED_DEVTYPE_DDR 0x0000100B
+#define ED_DEVTYPE_ROUTER 0x0000100C
+#define ED_DEVTYPE_KEYER 0x0000100D
+#define ED_DEVTYPE_MIXER_VIDEO 0x000010OE
+#define ED_DEVTYPE_DVE 0x000010OF
+#define ED_DEVTYPE_WIPEGEN 0x00001010
+#define ED_DEVTYPE_MIXER_AUDIO 0x00001011
+#define ED_DEVTYPE_CG 0x00001012
+#define ED_DEVTYPE_TBC 0x00001013
+#define ED_DEVTYPE_TCG 0x00001014
+#define ED_DEVTYPE_GPI 0x00001015
+#define ED_DEVTYPE_JOYSTICK 0x00001016
+#define ED_DEVTYPE_KEYBOARD 0x00001017
+#define ED_DEVCAP_EXTERNAL_DEVICE_ID 0x00001018
+#define ED_DEVCAP_TIMECODE_READ 0x00001019
+#define ED_DEVCAP_TIMECODE_WRITE 0x0000101A
+#define ED_DEVCAP_CTLTRK_READ 0x0000101B
+#define ED_DEVCAP_INDEX_READ 0x0000101C
+#define ED_DEVCAP_PREROLL 0x0000101D
+#define ED_DEVCAP_POSTROLL 0x0000101E
+#define ED_DEVCAP_SYNC_ACCURACY 0x0000101F
+#define ED_SYNCACC_PRECISE 0x00001020
+#define ED_SYNCACC_FRAME 0x00001021
+#define ED_SYNCACC_ROUGH 0x00001022
+#define ED_DEVCAP_NORMAL_RATE 0x00001023
+#define ED_RATE_24 0x00001024
+#define ED_RATE_25 0x00001025
+#define ED_RATE_2997 0x00001026
+#define ED_RATE_30 0x00001027
+#define ED_DEVCAP_CAN_PREVIEW 0x00001028
+#define ED_DEVCAP_CAN_MONITOR_SOURCES 0x00001029
+#define ED_DEVCAP_CAN_TEST 0x0000102A
+#define ED_DEVCAP_VIDEO_INPUTS 0x0000102B
+#define ED_DEVCAP_AUDIO_INPUTS 0x0000102C
+#define ED_DEVCAP_NEEDS_CALIBRATING 0x0000102D
+#define ED_DEVCAP_SEEK_TYPE 0x0000102E
+#define ED_SEEK_PERFECT 0x0000102F
+#define ED_SEEK_FAST 0x00001030
+#define ED_SEEK_SLOW 0x00001031
+#define ED_POWER_ON 0x00001032
+#define ED_POWER_OFF 0x00001033
+#define ED_POWER_STANDBY 0x00001034
+#define ED_ACTIVE 0x00001035
+#define ED_INACTIVE 0x00001036
+#define ED_ALL 0x00001037
+#define ED_TEST 0x00001038
+#define ED_TRANSCAP_CAN_EJECT 0x00001064
+#define ED_TRANSCAP_CAN_BUMP_PLAY 0x00001065
+#define ED_TRANSCAP_CAN_PLAY_BACKWARDS 0x00001066
+#define ED_TRANSCAP_CAN_SET_EE 0x00001067
+#define ED_TRANSCAP_CAN_SET_PB 0x00001068
+#define ED_TRANSCAP_CAN_DELAY_VIDEO_IN 0x00001069
+#define ED_TRANSCAP_CAN_DELAY_VIDEO_OUT 0x0000106A
+#define ED_TRANSCAP_CAN_DELAY_AUDIO_IN 0x0000106B
+#define ED_TRANSCAP_CAN_DELAY_AUDIO_OUT 0x0000106C
+#define ED_TRANSCAP_FWD_VARIABLE_MAX 0x0000106D
+#define ED_TRANSCAP_REV_VARIABLE_MAX 0x0000106E
+#define ED_TRANSCAP_NUM_AUDIO_TRACKS 0x0000106F
+#define ED_TRANSCAP_LTC_TRACK 0x00001070
+#define ED_TRANSCAP_NEEDS_TBC 0x00001071
+#define ED_TRANSCAP_NEEDS_CUEING 0x00001072
+#define ED_TRANSCAP_CAN_INSERT 0x00001073
+#define ED_TRANSCAP_CAN_ASSEMBLE 0x00001074
+#define ED_TRANSCAP_FIELD_STEP 0x00001075
+#define ED_TRANSCAP_CLOCK_INC_RATE 0x00001076
+#define ED_TRANSCAP_CAN_DETECT_LENGTH 0x00001077
+#define ED_TRANSCAP_CAN_FREEZE 0x00001078
+#define ED_TRANSCAP_HAS_TUNER 0x00001079
+#define ED_TRANSCAP_HAS_TIMER 0x0000107A
+#define ED_TRANSCAP_HAS_CLOCK 0x0000107B
+#define ED_MEDIA_SPIN_UP 0x00001082
+#define ED_MEDIA_SPIN_DOWN 0x00001083
+#define ED_MEDIA_UNLOAD 0x00001084
+#define ED_MODE_PLAY 0x000010C8
+#define ED_MODE_STOP 0x000010C9
+#define ED_MODE_FREEZE 0x000010CA
+#define ED_MODE_THAW 0x000010CB
+#define ED_MODE_FF 0x000010CC
+#define ED_MODE_REW 0x000010CD
+#define ED_MODE_RECORD 0x000010CE
+#define ED_MODE_RECORD_STROBE 0x000010CF
+#define ED_MODE_STEP 0x000010D0
+#define ED_MODE_STEP_FWD 0x000010D0
+#define ED_MODE_SHUTTLE 0x000010D1
+#define ED_MODE_EDIT_CUE 0x000010D2
+#define ED_MODE_VAR_SPEED 0x000010D3
+#define ED_MODE_PERFORM 0x000010D4
+#define ED_MODE_LINK_ON 0x00001118
+#define ED_MODE_LINK_OFF 0x00001119
+#define ED_TCG_TIMECODE_TYPE 0x00001190
+#define ED_TCG_SMPTE_LTC 0x00001191
+#define ED_TCG_SMPTE_VITC 0x00001192
+#define ED_TCG_MIDI_QF 0x00001193
+#define ED_TCG_MIDI_FULL 0x00001194
+#define ED_TCG_FRAMERATE 0x00001195
+#define ED_TCG_SYNC_SOURCE 0x0000119A
+#define ED_TCG_VIDEO 0x0000119B
+#define ED_TCG_READER 0x0000119C
+#define ED_TCG_FREE 0x0000119D
+#define ED_TCG_REFERENCE_SOURCE 0x0000119E
+#define ED_TCR_SOURCE 0x000011A0
+#define ED_TCR_LTC 0x000011A1
+#define ED_TCR_VITC 0x000011A2
+#define ED_TCR_CT 0x000011A3
+#define ED_TCR_FTC 0x000011A4
+#define ED_TCR_LAST_VALUE 0x000011A5
+#define ED_TCD_SOURCE 0x000011A6
+#define ED_TCR 0x000011A7
+#define ED_TCG 0x000011A8
+#define ED_TCD_SIZE 0x000011A9
+#define ED_SMALL 0x000011AA
+#define ED_MED 0x000011AB
+#define ED_LARGE 0x000011AC
+#define ED_TCD_POSITION 0x000011AD
+#define ED_TCD_INTENSITY 0x000011B4
+#define ED_HIGH 0x000011B5
+#define ED_LOW 0x000011B6
+#define ED_TCD_TRANSPARENCY 0x000011B7
+#define ED_TCD_INVERT 0x000011B8
+#define ED_MODE 0x000011F4
+#define ED_ERROR 0x000011F5
+#define ED_LOCAL 0x000011F6
+#define ED_RECORD_INHIBIT 0x000011F7
+#define ED_SERVO_LOCK 0x000011F8
+#define ED_MEDIA_PRESENT 0x000011F9
+#define ED_MEDIA_LENGTH 0x000011FA
+#define ED_MEDIA_SIZE 0x000011FB
+#define ED_MEDIA_TRACK_COUNT 0x000011FC
+#define ED_MEDIA_TRACK_LENGTH 0x000011FD
+#define ED_MEDIA_SIDE 0x000011FE
+#define ED_MEDIA_TYPE 0x000011FF
+#define ED_MEDIA_VHS 0x00001200
+#define ED_MEDIA_SVHS 0x00001201
+#define ED_MEDIA_HI8 0x00001202
+#define ED_MEDIA_UMATIC 0x00001203
+#define ED_MEDIA_DVC 0x00001204
+#define ED_MEDIA_1_INCH 0x00001205
+#define ED_MEDIA_D1 0x00001206
+#define ED_MEDIA_D2 0x00001207
+#define ED_MEDIA_D3 0x00001208
+#define ED_MEDIA_D5 0x00001209
+#define ED_MEDIA_DBETA 0x0000120A
+#define ED_MEDIA_BETA 0x0000120B
+#define ED_MEDIA_8MM 0x0000120C
+#define ED_MEDIA_DDR 0x0000120D
+#define ED_MEDIA_OTHER 0x0000120E
+#define ED_MEDIA_CLV 0x0000120F
+#define ED_MEDIA_CAV 0x00001210
+#define ED_MEDIA_POSITION 0x00001211
+#define ED_LINK_MODE 0x00001212
+#define ED_TRANSBASIC_TIME_FORMAT 0x0000121C
+#define ED_FORMAT_MILLISECONDS 0x0000121D
+#define ED_FORMAT_FRAMES 0x0000121E
+#define ED_FORMAT_REFERENCE_TIME 0x0000121F
+#define ED_FORMAT_HMSF 0x00001223
+#define ED_FORMAT_TMSF 0x00001224
+#define ED_TRANSBASIC_TIME_REFERENCE 0x00001225
+#define ED_TIMEREF_TIMECODE 0x00001226
+#define ED_TIMEREF_CONTROL_TRACK 0x00001227
+#define ED_TIMEREF_INDEX 0x00001228
+#define ED_TRANSBASIC_SUPERIMPOSE 0x00001229
+#define ED_TRANSBASIC_END_STOP_ACTION 0x0000122A
+#define ED_TRANSBASIC_RECORD_FORMAT 0x0000122B
+#define ED_RECORD_FORMAT_SP 0x0000122C
+#define ED_RECORD_FORMAT_LP 0x0000122D
+#define ED_RECORD_FORMAT_EP 0x0000122E
+#define ED_TRANSBASIC_STEP_COUNT 0x0000122F
+#define ED_TRANSBASIC_STEP_UNIT 0x00001230
+#define ED_STEP_FIELD 0x00001231
+#define ED_STEP_FRAME 0x00001232
+#define ED_STEP_3_2 0x00001233
+#define ED_TRANSBASIC_PREROLL 0x00001234
+#define ED_TRANSBASIC_RECPREROLL 0x00001235
+#define ED_TRANSBASIC_POSTROLL 0x00001236
+#define ED_TRANSBASIC_EDIT_DELAY 0x00001237
+#define ED_TRANSBASIC_PLAYTC_DELAY 0x00001238
+#define ED_TRANSBASIC_RECTC_DELAY 0x00001239
+#define ED_TRANSBASIC_EDIT_FIELD 0x0000123A
+#define ED_TRANSBASIC_FRAME_SERVO 0x0000123B
+#define ED_TRANSBASIC_CF_SERVO 0x0000123C
+#define ED_TRANSBASIC_SERVO_REF 0x0000123D
+#define ED_REF_EXTERNAL 0x0000123E
+#define ED_REF_INPUT 0x0000123F
+#define ED_REF_INTERNAL 0x00001240
+#define ED_REF_AUTO 0x00001241
+#define ED_TRANSBASIC_WARN_GL 0x00001242
+#define ED_TRANSBASIC_SET_TRACKING 0x00001243
+#define ED_TRACKING_PLUS 0x00001244
+#define ED_TRACKING_MINUS 0x00001245
+#define ED_TRACKING_RESET 0x00001246
+#define ED_TRANSBASIC_SET_FREEZE_TIMEOUT 0x00001247
+#define ED_TRANSBASIC_VOLUME_NAME 0x00001248
+#define ED_TRANSBASIC_BALLISTIC_1 0x00001249
+#define ED_TRANSBASIC_BALLISTIC_2 0x0000124A
+#define ED_TRANSBASIC_BALLISTIC_3 0x0000124B
+#define ED_TRANSBASIC_BALLISTIC_4 0x0000124C
+#define ED_TRANSBASIC_BALLISTIC_5 0x0000124D
+#define ED_TRANSBASIC_BALLISTIC_6 0x0000124E
+#define ED_TRANSBASIC_BALLISTIC_7 0x0000124F
+#define ED_TRANSBASIC_BALLISTIC_8 0x00001250
+#define ED_TRANSBASIC_BALLISTIC_9 0x00001251
+#define ED_TRANSBASIC_BALLISTIC_10 0x00001252
+#define ED_TRANSBASIC_BALLISTIC_11 0x00001253
+#define ED_TRANSBASIC_BALLISTIC_12 0x00001254
+#define ED_TRANSBASIC_BALLISTIC_13 0x00001255
+#define ED_TRANSBASIC_BALLISTIC_14 0x00001256
+#define ED_TRANSBASIC_BALLISTIC_15 0x00001257
+#define ED_TRANSBASIC_BALLISTIC_16 0x00001258
+#define ED_TRANSBASIC_BALLISTIC_17 0x00001259
+#define ED_TRANSBASIC_BALLISTIC_18 0x0000125A
+#define ED_TRANSBASIC_BALLISTIC_19 0x0000125B
+#define ED_TRANSBASIC_BALLISTIC_20 0x0000125C
+#define ED_TRANSBASIC_SETCLOCK 0x0000125D
+#define ED_TRANSBASIC_SET_COUNTER_FORMAT 0x0000125E
+#define ED_TRANSBASIC_SET_COUNTER_VALUE 0x0000125F
+#define ED_TRANSBASIC_SETTUNER_CH_UP 0x00001260
+#define ED_TRANSBASIC_SETTUNER_CH_DN 0x00001261
+#define ED_TRANSBASIC_SETTUNER_SK_UP 0x00001262
+#define ED_TRANSBASIC_SETTUNER_SK_DN 0x00001263
+#define ED_TRANSBASIC_SETTUNER_CH 0x00001264
+#define ED_TRANSBASIC_SETTUNER_NUM 0x00001265
+#define ED_TRANSBASIC_SETTIMER_EVENT 0x00001266
+#define ED_TRANSBASIC_SETTIMER_STARTDAY 0x00001267
+#define ED_TRANSBASIC_SETTIMER_STARTTIME 0x00001268
+#define ED_TRANSBASIC_SETTIMER_STOPDAY 0x00001269
+#define ED_TRANSBASIC_SETTIMER_STOPTIME 0x0000126A
+#define ED_TRANSVIDEO_SET_OUTPUT 0x00001276
+#define ED_E2E 0x00001277
+#define ED_PLAYBACK 0x00001278
+#define ED_OFF 0x00001279
+#define ED_TRANSVIDEO_SET_SOURCE 0x0000127A
+#define ED_TRANSAUDIO_ENABLE_OUTPUT 0x00001280
+#define ED_TRANSAUDIO_ENABLE_RECORD 0x00001282
+#define ED_TRANSAUDIO_ENABLE_SELSYNC 0x00001283
+#define ED_TRANSAUDIO_SET_SOURCE 0x00001284
+#define ED_TRANSAUDIO_SET_MONITOR 0x00001285
+#define ED_INVALID 0x0000128C
+#define ED_EXECUTING 0x0000128D
+#define ED_REGISTER 0x0000128E
+#define ED_DELETE 0x0000128F
+#define ED_EDIT_HEVENT 0x00001290
+#define ED_EDIT_TEST 0x00001291
+#define ED_EDIT_IMMEDIATE 0x00001292
+#define ED_EDIT_MODE 0x00001293
+#define ED_EDIT_MODE_ASSEMBLE 0x00001294
+#define ED_EDIT_MODE_INSERT 0x00001295
+#define ED_EDIT_MODE_CRASH_RECORD 0x00001296
+#define ED_EDIT_MODE_BOOKMARK_TIME 0x00001297
+#define ED_EDIT_MODE_BOOKMARK_CHAPTER 0x00001298
+#define ED_EDIT_MASTER 0x0000129A
+#define ED_EDIT_TRACK 0x0000129B
+#define ED_EDIT_SRC_INPOINT 0x0000129C
+#define ED_EDIT_SRC_OUTPOINT 0x0000129D
+#define ED_EDIT_REC_INPOINT 0x0000129E
+#define ED_EDIT_REC_OUTPOINT 0x0000129F
+#define ED_EDIT_REHEARSE_MODE 0x000012A0
+#define ED_EDIT_BVB 0x000012A1
+#define ED_EDIT_VBV 0x000012A2
+#define ED_EDIT_VVV 0x000012A3
+#define ED_EDIT_PERFORM 0x000012A4
+#define ED_EDIT_ABORT 0x000012A5
+#define ED_EDIT_TIMEOUT 0x000012A6
+#define ED_EDIT_SEEK 0x000012A7
+#define ED_EDIT_SEEK_EDIT_IN 0x000012A9
+#define ED_EDIT_SEEK_EDIT_OUT 0x000012AA
+#define ED_EDIT_SEEK_PREROLL 0x000012AB
+#define ED_EDIT_SEEK_PREROLL_CT 0x000012AC
+#define ED_EDIT_SEEK_BOOKMARK 0x000012AD
+#define ED_EDIT_OFFSET 0x000012AE
+#define ED_ERR_DEVICE_NOT_READY 0x000012BC
+#define ED_TRANSCAP_FWD_VARIABLE_MIN 0x00001320
+#define ED_TRANSCAP_REV_VARIABLE_MIN 0x00001321
+#define ED_TRANSCAP_FWD_SHUTTLE_MAX 0x00001322
+#define ED_TRANSCAP_FWD_SHUTTLE_MIN 0x00001323
+#define ED_TRANSCAP_REV_SHUTTLE_MAX 0x00001324
+#define ED_TRANSCAP_REV_SHUTTLE_MIN 0x00001325
+#define ED_TRANSCAP_MULTIPLE_EDITS 0x00001326
+#define ED_TRANSCAP_IS_MASTER 0x00001327
+#define ED_MODE_RECORD_FREEZE 0x00001328
+#define ED_MODE_STEP_REV 0x00001329
+#define ED_MODE_NOTIFY_ENABLE 0x0000132A
+#define ED_MODE_NOTIFY_DISABLE 0x0000132B
+#define ED_MODE_SHOT_SEARCH 0x0000132C
+#define ED_MEDIA_SX 0x0000132D
+#define ED_TRANSCAP_HAS_DT 0x0000132E
+#define ED_EDIT_PREREAD 0x0000132F
+#define ED_AUDIO_1 0x00000001
+#define ED_AUDIO_2 0x00000002
+#define ED_AUDIO_3 0x00000004
+#define ED_AUDIO_4 0x00000008
+#define ED_AUDIO_5 0x00000010
+#define ED_AUDIO_6 0x00000020
+#define ED_AUDIO_7 0x00000040
+#define ED_AUDIO_8 0x00000080
+#define ED_AUDIO_9 0x00000100
+#define ED_AUDIO_10 0x00000200
+#define ED_AUDIO_11 0x00000400
+#define ED_AUDIO_12 0x00000800
+#define ED_AUDIO_13 0x00001000
+#define ED_AUDIO_14 0x00002000
+#define ED_AUDIO_15 0x00004000
+#define ED_AUDIO_16 0x00008000
+#define ED_AUDIO_17 0x00010000
+#define ED_AUDIO_18 0x00020000
+#define ED_AUDIO_19 0x00040000
+#define ED_AUDIO_20 0x00080000
+#define ED_AUDIO_21 0x00100000
+#define ED_AUDIO_22 0x00200000
+#define ED_AUDIO_23 0x00400000
+#define ED_AUDIO_24 0x00800000
+#define ED_AUDIO_ALL 0x10000000
+#define ED_VIDEO 0x02000000
+#define DEV_PORT_SIM 0x00000001
+#define DEV_PORT_COM1 0x00000002
+#define DEV_PORT_COM2 0x00000003
+#define DEV_PORT_COM3 0x00000004
+#define DEV_PORT_COM4 0x00000005
+#define DEV_PORT_DIAQ 0x00000006
+#define DEV_PORT_ARTI 0x00000007
+#define DEV_PORT_1394 0x00000008
+#define DEV_PORT_USB 0x00000009
+#define DEV_PORT_MIN DEV_PORT_SIM
+
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/errno.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,101 @@
+/* 
+ * errno.h
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is a part of the mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within the package.
+ *
+ * Error numbers and access to error reporting.
+ *
+ */
+
+#ifndef _ERRNO_H_
+#define	_ERRNO_H_
+
+/* All the headers include this file. */
+#include <_mingw.h>
+
+/*
+ * Error numbers.
+ * TODO: Can't be sure of some of these assignments, I guessed from the
+ * names given by strerror and the defines in the Cygnus errno.h. A lot
+ * of the names from the Cygnus errno.h are not represented, and a few
+ * of the descriptions returned by strerror do not obviously match
+ * their error naming.
+ */
+#define EPERM		1	/* Operation not permitted */
+#define	ENOFILE		2	/* No such file or directory */
+#define	ENOENT		2
+#define	ESRCH		3	/* No such process */
+#define	EINTR		4	/* Interrupted function call */
+#define	EIO		5	/* Input/output error */
+#define	ENXIO		6	/* No such device or address */
+#define	E2BIG		7	/* Arg list too long */
+#define	ENOEXEC		8	/* Exec format error */
+#define	EBADF		9	/* Bad file descriptor */
+#define	ECHILD		10	/* No child processes */
+#define	EAGAIN		11	/* Resource temporarily unavailable */
+#define	ENOMEM		12	/* Not enough space */
+#define	EACCES		13	/* Permission denied */
+#define	EFAULT		14	/* Bad address */
+/* 15 - Unknown Error */
+#define	EBUSY		16	/* strerror reports "Resource device" */
+#define	EEXIST		17	/* File exists */
+#define	EXDEV		18	/* Improper link (cross-device link?) */
+#define	ENODEV		19	/* No such device */
+#define	ENOTDIR		20	/* Not a directory */
+#define	EISDIR		21	/* Is a directory */
+#define	EINVAL		22	/* Invalid argument */
+#define	ENFILE		23	/* Too many open files in system */
+#define	EMFILE		24	/* Too many open files */
+#define	ENOTTY		25	/* Inappropriate I/O control operation */
+/* 26 - Unknown Error */
+#define	EFBIG		27	/* File too large */
+#define	ENOSPC		28	/* No space left on device */
+#define	ESPIPE		29	/* Invalid seek (seek on a pipe?) */
+#define	EROFS		30	/* Read-only file system */
+#define	EMLINK		31	/* Too many links */
+#define	EPIPE		32	/* Broken pipe */
+#define	EDOM		33	/* Domain error (math functions) */
+#define	ERANGE		34	/* Result too large (possibly too small) */
+/* 35 - Unknown Error */
+#define	EDEADLOCK	36	/* Resource deadlock avoided (non-Cyg) */
+#define	EDEADLK		36
+/* 37 - Unknown Error */
+#define	ENAMETOOLONG	38	/* Filename too long (91 in Cyg?) */
+#define	ENOLCK		39	/* No locks available (46 in Cyg?) */
+#define	ENOSYS		40	/* Function not implemented (88 in Cyg?) */
+#define	ENOTEMPTY	41	/* Directory not empty (90 in Cyg?) */
+#define	EILSEQ		42	/* Illegal byte sequence */
+
+/*
+ * NOTE: ENAMETOOLONG and ENOTEMPTY conflict with definitions in the
+ *       sockets.h header provided with windows32api-0.1.2.
+ *       You should go and put an #if 0 ... #endif around the whole block
+ *       of errors (look at the comment above them).
+ */
+
+#ifndef	RC_INVOKED
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+/*
+ * Definitions of errno. For _doserrno, sys_nerr and * sys_errlist, see
+ * stdlib.h.
+ */
+#ifdef _UWIN
+#undef errno
+extern int errno;
+#else
+_CRTIMP int* __cdecl __MINGW_NOTHROW _errno(void);
+#define	errno		(*_errno())
+#endif
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* Not RC_INVOKED */
+
+#endif	/* Not _ERRNO_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/errorrep.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,40 @@
+#ifndef _ERRORREP_H
+#define _ERRORREP_H
+#if __GNUC__ >= 3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if (_WIN32_WINNT >= 0x0501)
+typedef enum {
+	frrvErr = 3,
+	frrvErrNoDW = 4,
+	frrvErrTimeout = 5,
+	frrvLaunchDebugger = 6,
+	frrvOk = 0,
+	frrvOkHeadless = 7,
+	frrvOkManifest = 1,
+	frrvOkQueued = 2
+} EFaultRepRetVal;
+BOOL WINAPI AddERExcludedApplicationA(LPCSTR);
+BOOL WINAPI AddERExcludedApplicationW(LPCWSTR);
+EFaultRepRetVal WINAPI ReportFault(LPEXCEPTION_POINTERS,DWORD);
+#endif
+
+#ifdef UNICODE
+#if (_WIN32_WINNT >= 0x0501)
+#define AddERExcludedApplication AddERExcludedApplicationW
+#endif
+#else
+#if (_WIN32_WINNT >= 0x0501)
+#define AddERExcludedApplication AddERExcludedApplicationA
+#endif
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/errors.h	Mon Mar 05 05:12:08 2012 +0000
@@ -0,0 +1,169 @@
+#ifndef _ERRORS_H
+#define _ERRORS_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - Constants and GUIDs - Error and Success Codes */
+#define VFW_S_NO_MORE_ITEMS 0x00040103
+#define VFW_S_DUPLICATE_NAME 0x0004022D
+#define VFW_S_STATE_INTERMEDIATE 0x00040237
+#define VFW_S_PARTIAL_RENDER 0x00040242
+#define VFW_S_SOME_DATA_IGNORED 0x00040245
+#define VFW_S_CONNECTIONS_DEFERRED 0x00040246
+#define VFW_S_RESOURCE_NOT_NEEDED 0x00040250
+#define VFW_S_MEDIA_TYPE_IGNORED 0x00040254
+#define VFW_S_VIDEO_NOT_RENDERED 0x00040257
+#define VFW_S_AUDIO_NOT_RENDERED 0x00040258
+#define VFW_S_RPZA 0x0004025A
+#define VFW_S_ESTIMATED 0x00040260
+#define VFW_S_RESERVED 0x00040263
+#define VFW_S_STREAM_OFF 0x00040267
+#define VFW_S_CANT_CUE 0x00040268
+#define VFW_S_NOPREVIEWPIN 0x0004027E
+#define VFW_S_DVD_NON_ONE_SEQUENTIAL 0x00040280
+#define VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE 0x0004028C
+#define VFW_S_DVD_NOT_ACCURATE 0x0004028D
+#define VFW_E_INVALIDMEDIATYPE 0x80040200
+#define VFW_E_INVALIDSUBTYPE 0x80040201
+#define VFW_E_NEED_OWNER 0x80040202
+#define VFW_E_ENUM_OUT_OF_SYNC 0x80040203
+#define VFW_E_ALREADY_CONNECTED 0x80040204
+#define VFW_E_FILTER_ACTIVE 0x80040205
+#define VFW_E_NO_TYPES 0x80040206
+#define VFW_E_NO_ACCEPTABLE_TYPES 0x80040207
+#define VFW_E_INVALID_DIRECTION 0x80040208
+#define VFW_E_NOT_CONNECTED 0x80040209
+#define VFW_E_NO_ALLOCATOR 0x8004020A
+#define VFW_E_RUNTIME_ERROR 0x8004020B
+#define VFW_E_BUFFER_NOTSET 0x8004020C
+#define VFW_E_BUFFER_OVERFLOW 0x8004020D
+#define VFW_E_BADALIGN 0x8004020E
+#define VFW_E_ALREADY_COMMITTED 0x8004020F
+#define VFW_E_BUFFERS_OUTSTANDING 0x80040210
+#define VFW_E_NOT_COMMITTED 0x80040211
+#define VFW_E_SIZENOTSET 0x80040212
+#define VFW_E_NO_CLOCK 0x80040213
+#define VFW_E_NO_SINK 0x80040214
+#define VFW_E_NO_INTERFACE 0x80040215
+#define VFW_E_NOT_FOUND 0x80040216
+#define VFW_E_CANNOT_CONNECT 0x80040217
+#define VFW_E_CANNOT_RENDER 0x80040218
+#define VFW_E_CHANGING_FORMAT 0x80040219
+#define VFW_E_NO_COLOR_KEY_SET 0x8004021A
+#define VFW_E_NOT_OVERLAY_CONNECTION 0x8004021B
+#define VFW_E_NOT_SAMPLE_CONNECTION 0x8004021C
+#define VFW_E_PALETTE_SET 0x8004021D
+#define VFW_E_COLOR_KEY_SET 0x8004021E
+#define VFW_E_NO_COLOR_KEY_FOUND 0x8004021F
+#define VFW_E_NO_PALETTE_AVAILABLE 0x80040220
+#define VFW_E_NO_DISPLAY_PALETTE 0x80040221
+#define VFW_E_TOO_MANY_COLORS 0x80040222
+#define VFW_E_STATE_CHANGED 0x80040223
+#define VFW_E_NOT_STOPPED 0x80040224
+#define VFW_E_NOT_PAUSED 0x80040225
+#define VFW_E_NOT_RUNNING 0x80040226
+#define VFW_E_WRONG_STATE 0x80040227
+#define VFW_E_START_TIME_AFTER_END 0x80040228
+#define VFW_E_INVALID_RECT 0x80040229
+#define VFW_E_TYPE_NOT_ACCEPTED 0x8004022A
+#define VFW_E_SAMPLE_REJECTED 0x8004022B
+#define VFW_E_SAMPLE_REJECTED_EOS 0x8004022C
+#define VFW_E_DUPLICATE_NAME 0x8004022D
+#define VFW_E_TIMEOUT 0x8004022E
+#define VFW_E_INVALID_FILE_FORMAT 0x8004022F
+#define VFW_E_ENUM_OUT_OF_RANGE 0x80040230
+#define VFW_E_CIRCULAR_GRAPH 0x80040231
+#define VFW_E_NOT_ALLOWED_TO_SAVE 0x80040232
+#define VFW_E_TIME_ALREADY_PASSED 0x80040233
+#define VFW_E_ALREADY_CANCELLED 0x80040234
+#define VFW_E_CORRUPT_GRAPH_FILE 0x80040235
+#define VFW_E_ADVISE_ALREADY_SET 0x80040236
+#define VFW_E_NO_MODEX_AVAILABLE 0x80040238
+#define VFW_E_NO_ADVISE_SET 0x80040239
+#define VFW_E_NO_FULLSCREEN 0x8004023A
+#define VFW_E_IN_FULLSCREEN_MODE 0x8004023B
+#define VFW_E_UNKNOWN_FILE_TYPE 0x80040240
+#define VFW_E_CANNOT_LOAD_SOURCE_FILTER 0x80040241
+#define VFW_E_FILE_TOO_SHORT 0x80040243
+#define VFW_E_INVALID_FILE_VERSION 0x80040244
+#define VFW_E_INVALID_CLSID 0x80040247
+#define VFW_E_INVALID_MEDIA_TYPE 0x80040248
+#define VFW_E_SAMPLE_TIME_NOT_SET 0x80040249
+#define VFW_E_MEDIA_TIME_NOT_SET 0x80040251
+#define VFW_E_NO_TIME_FORMAT_SET 0x80040252
+#define VFW_E_MONO_AUDIO_HW 0x80040253
+#define VFW_E_NO_DECOMPRESSOR 0x80040255
+#define VFW_E_NO_AUDIO_HARDWARE 0x80040256
+#define VFW_E_RPZA 0x80040259
+#define VFW_E_PROCESSOR_NOT_SUITABLE 0x8004025B
+#define VFW_E_UNSUPPORTED_AUDIO 0x8004025C
+#define VFW_E_UNSUPPORTED_VIDEO 0x8004025D
+#define VFW_E_MPEG_NOT_CONSTRAINED 0x8004025E
+#define VFW_E_NOT_IN_GRAPH 0x8004025F
+#define VFW_E_NO_TIME_FORMAT 0x80040261
+#define VFW_E_READ_ONLY 0x80040262
+#define VFW_E_BUFFER_UNDERFLOW 0x80040264
+#define VFW_E_UNSUPPORTED_STREAM 0x80040265
+#define VFW_E_NO_TRANSPORT 0x80040266
+#define VFW_E_BAD_VIDEOCD 0x80040269
+#define VFW_S_NO_STOP_TIME 0x80040270
+#define VFW_E_OUT_OF_VIDEO_MEMORY 0x80040271
+#define VFW_E_VP_NEGOTIATION_FAILED 0x80040272
+#define VFW_E_DDRAW_CAPS_NOT_SUITABLE 0x80040273
+#define VFW_E_NO_VP_HARDWARE 0x80040274
+#define VFW_E_NO_CAPTURE_HARDWARE 0x80040275
+#define VFW_E_DVD_OPERATION_INHIBITED 0x80040276
+#define VFW_E_DVD_INVALIDDOMAIN 0x80040277
+#define VFW_E_DVD_NO_BUTTON 0x80040278
+#define VFW_E_DVD_GRAPHNOTREADY 0x80040279
+#define VFW_E_DVD_RENDERFAIL 0x8004027A
+#define VFW_E_DVD_DECNOTENOUGH 0x8004027B
+#define VFW_E_DDRAW_VERSION_NOT_SUITABLE 0x8004027C
+#define VFW_E_COPYPROT_FAILED 0x8004027D
+#define VFW_E_TIME_EXPIRED 0x8004027F
+#define VFW_E_DVD_WRONG_SPEED 0x80040281
+#define VFW_E_DVD_MENU_DOES_NOT_EXIST 0x80040282
+#define VFW_E_DVD_CMD_CANCELLED 0x80040283
+#define VFW_E_DVD_STATE_WRONG_VERSION 0x80040284
+#define VFW_E_DVD_STATE_CORRUPT 0x80040285
+#define VFW_E_DVD_STATE_WRONG_DISC 0x80040286
+#define VFW_E_DVD_INCOMPATIBLE_REGION 0x80040287
+#define VFW_E_DVD_NO_ATTRIBUTES 0x80040288
+#define VFW_E_DVD_NO_GOUP_PGC 0x80040289
+#define VFW_E_DVD_LOW_PARENTAL_LEVEL 0x8004028A
+#define VFW_E_DVD_NOT_IN_KARAOKE_MODE 0x8004028B
+#define VFW_E_FRAME_STEP_UNSUPPORTED 0x8004028E
+#define VFW_E_DVD_STREAM_DISABLED 0x8004028F
+#define VFW_E_DVD_TITLE_UNKNOWN 0x80040290
+#define VFW_E_DVD_INVALID_DISC 0x80040291
+#define VFW_E_DVD_NO_RESUME_INFORMATION 0x80040292
+#define VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD 0x80040293
+#define VFW_E_PIN_ALREADY_BLOCKED 0x80040294
+#define VFW_E_CERTIFICATION_FAILURE 0x80040295
+#define VFW_E_VMR_NOT_IN_MIXER_MODE 0x80040296
+#define VFW_E_VMR_NO_AP_SUPPLIED 0x80040297
+#define VFW_E_VMR_NO_DEINTERLACE_HW 0x80040298
+#define VFW_E_VMR_NO_PROCAMP_HW 0x80040299
+#define VFW_E_DVD_VMR9_INCOMPATIBLEDEC 0x8004029A
+#define VFW_E_NO_COPP_HW 0x8004029B
+#define VFW_E_BAD_KEY 0x800403F2
+/*--- DirectShow Reference - Functions */
+#define MAX_ERROR_TEXT_LEN 160
+/*--- DirectShow Reference - Functions */
+DWORD WINAPI AMGetErrorTextA(HRESULT,CHAR*,DWORD);
+DWORD WINAPI AMGetErrorTextW(HRESULT,WCHAR*,DWORD);
+#ifdef UNICODE
+#define AMGetErrorText AMGetErrorTextW
+#else
+#define AMGetErrorText AMGetErrorTextA
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+#endif