Last commit 05 Mar 2012
Revision 1:8b8f1753c57e, committed 05 Mar 2012
- Comitter:
- Date:
- Mon Mar 05 05:12:08 2012 +0000
- Parent:
- 0:4aefc64457f8
- Child:
- 2:0da19ef27a51
- Commit message:
Changed in this revision
--- /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

