1/* 2 * Copyright (C) 2000 Peter Hunnisett 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation; either 7 * version 2.1 of the License, or (at your option) any later version. 8 * 9 * This library is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * Lesser General Public License for more details. 13 * 14 * You should have received a copy of the GNU Lesser General Public 15 * License along with this library; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 17 */ 18 19#ifndef __WINE_D3DCAPS_H 20#define __WINE_D3DCAPS_H 21 22#include <ddraw.h> 23 24#ifdef __i386__ 25#include <pshpack4.h> 26#endif 27 28typedef struct _D3DTRANSFORMCAPS { 29 DWORD dwSize; 30 DWORD dwCaps; 31} D3DTRANSFORMCAPS, *LPD3DTRANSFORMCAPS; 32 33#define D3DTRANSFORMCAPS_CLIP __MSABI_LONG(0x00000001) 34 35typedef struct _D3DLIGHTINGCAPS { 36 DWORD dwSize; 37 DWORD dwCaps; 38 DWORD dwLightingModel; 39 DWORD dwNumLights; 40} D3DLIGHTINGCAPS, *LPD3DLIGHTINGCAPS; 41 42#define D3DLIGHTINGMODEL_RGB 0x00000001 43#define D3DLIGHTINGMODEL_MONO 0x00000002 44 45#define D3DLIGHTCAPS_POINT 0x00000001 46#define D3DLIGHTCAPS_SPOT 0x00000002 47#define D3DLIGHTCAPS_DIRECTIONAL 0x00000004 48#define D3DLIGHTCAPS_PARALLELPOINT 0x00000008 49#define D3DLIGHTCAPS_GLSPOT 0x00000010 50 51typedef struct _D3dPrimCaps { 52 DWORD dwSize; 53 DWORD dwMiscCaps; 54 DWORD dwRasterCaps; 55 DWORD dwZCmpCaps; 56 DWORD dwSrcBlendCaps; 57 DWORD dwDestBlendCaps; 58 DWORD dwAlphaCmpCaps; 59 DWORD dwShadeCaps; 60 DWORD dwTextureCaps; 61 DWORD dwTextureFilterCaps; 62 DWORD dwTextureBlendCaps; 63 DWORD dwTextureAddressCaps; 64 DWORD dwStippleWidth; 65 DWORD dwStippleHeight; 66} D3DPRIMCAPS, *LPD3DPRIMCAPS; 67 68#define D3DPMISCCAPS_MASKPLANES 0x00000001 69#define D3DPMISCCAPS_MASKZ 0x00000002 70#define D3DPMISCCAPS_LINEPATTERNREP 0x00000004 71#define D3DPMISCCAPS_CONFORMANT 0x00000008 72#define D3DPMISCCAPS_CULLNONE 0x00000010 73#define D3DPMISCCAPS_CULLCW 0x00000020 74#define D3DPMISCCAPS_CULLCCW 0x00000040 75 76#define D3DPRASTERCAPS_DITHER 0x00000001 77#define D3DPRASTERCAPS_ROP2 0x00000002 78#define D3DPRASTERCAPS_XOR 0x00000004 79#define D3DPRASTERCAPS_PAT 0x00000008 80#define D3DPRASTERCAPS_ZTEST 0x00000010 81#define D3DPRASTERCAPS_SUBPIXEL 0x00000020 82#define D3DPRASTERCAPS_SUBPIXELX 0x00000040 83#define D3DPRASTERCAPS_FOGVERTEX 0x00000080 84#define D3DPRASTERCAPS_FOGTABLE 0x00000100 85#define D3DPRASTERCAPS_STIPPLE 0x00000200 86#define D3DPRASTERCAPS_ANTIALIASSORTDEPENDENT 0x00000400 87#define D3DPRASTERCAPS_ANTIALIASSORTINDEPENDENT 0x00000800 88#define D3DPRASTERCAPS_ANTIALIASEDGES 0x00001000 89#define D3DPRASTERCAPS_MIPMAPLODBIAS 0x00002000 90#define D3DPRASTERCAPS_ZBIAS 0x00004000 91#define D3DPRASTERCAPS_ZBUFFERLESSHSR 0x00008000 92#define D3DPRASTERCAPS_FOGRANGE 0x00010000 93#define D3DPRASTERCAPS_ANISOTROPY 0x00020000 94#define D3DPRASTERCAPS_WBUFFER 0x00040000 95#define D3DPRASTERCAPS_TRANSLUCENTSORTINDEPENDENT 0x00080000 96#define D3DPRASTERCAPS_WFOG 0x00100000 97#define D3DPRASTERCAPS_ZFOG 0x00200000 98 99#define D3DPCMPCAPS_NEVER 0x00000001 100#define D3DPCMPCAPS_LESS 0x00000002 101#define D3DPCMPCAPS_EQUAL 0x00000004 102#define D3DPCMPCAPS_LESSEQUAL 0x00000008 103#define D3DPCMPCAPS_GREATER 0x00000010 104#define D3DPCMPCAPS_NOTEQUAL 0x00000020 105#define D3DPCMPCAPS_GREATEREQUAL 0x00000040 106#define D3DPCMPCAPS_ALWAYS 0x00000080 107 108#define D3DPBLENDCAPS_ZERO 0x00000001 109#define D3DPBLENDCAPS_ONE 0x00000002 110#define D3DPBLENDCAPS_SRCCOLOR 0x00000004 111#define D3DPBLENDCAPS_INVSRCCOLOR 0x00000008 112#define D3DPBLENDCAPS_SRCALPHA 0x00000010 113#define D3DPBLENDCAPS_INVSRCALPHA 0x00000020 114#define D3DPBLENDCAPS_DESTALPHA 0x00000040 115#define D3DPBLENDCAPS_INVDESTALPHA 0x00000080 116#define D3DPBLENDCAPS_DESTCOLOR 0x00000100 117#define D3DPBLENDCAPS_INVDESTCOLOR 0x00000200 118#define D3DPBLENDCAPS_SRCALPHASAT 0x00000400 119#define D3DPBLENDCAPS_BOTHSRCALPHA 0x00000800 120#define D3DPBLENDCAPS_BOTHINVSRCALPHA 0x00001000 121 122#define D3DPSHADECAPS_COLORFLATMONO 0x00000001 123#define D3DPSHADECAPS_COLORFLATRGB 0x00000002 124#define D3DPSHADECAPS_COLORGOURAUDMONO 0x00000004 125#define D3DPSHADECAPS_COLORGOURAUDRGB 0x00000008 126#define D3DPSHADECAPS_COLORPHONGMONO 0x00000010 127#define D3DPSHADECAPS_COLORPHONGRGB 0x00000020 128 129#define D3DPSHADECAPS_SPECULARFLATMONO 0x00000040 130#define D3DPSHADECAPS_SPECULARFLATRGB 0x00000080 131#define D3DPSHADECAPS_SPECULARGOURAUDMONO 0x00000100 132#define D3DPSHADECAPS_SPECULARGOURAUDRGB 0x00000200 133#define D3DPSHADECAPS_SPECULARPHONGMONO 0x00000400 134#define D3DPSHADECAPS_SPECULARPHONGRGB 0x00000800 135 136#define D3DPSHADECAPS_ALPHAFLATBLEND 0x00001000 137#define D3DPSHADECAPS_ALPHAFLATSTIPPLED 0x00002000 138#define D3DPSHADECAPS_ALPHAGOURAUDBLEND 0x00004000 139#define D3DPSHADECAPS_ALPHAGOURAUDSTIPPLED 0x00008000 140#define D3DPSHADECAPS_ALPHAPHONGBLEND 0x00010000 141#define D3DPSHADECAPS_ALPHAPHONGSTIPPLED 0x00020000 142 143#define D3DPSHADECAPS_FOGFLAT 0x00040000 144#define D3DPSHADECAPS_FOGGOURAUD 0x00080000 145#define D3DPSHADECAPS_FOGPHONG 0x00100000 146 147#define D3DPTEXTURECAPS_PERSPECTIVE 0x00000001 148#define D3DPTEXTURECAPS_POW2 0x00000002 149#define D3DPTEXTURECAPS_ALPHA 0x00000004 150#define D3DPTEXTURECAPS_TRANSPARENCY 0x00000008 151#define D3DPTEXTURECAPS_BORDER 0x00000010 152#define D3DPTEXTURECAPS_SQUAREONLY 0x00000020 153#define D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE 0x00000040 154#define D3DPTEXTURECAPS_ALPHAPALETTE 0x00000080 155#define D3DPTEXTURECAPS_NONPOW2CONDITIONAL __MSABI_LONG(0x00000100) 156/* yes actually 0x00000200 is unused - or at least unreleased */ 157#define D3DPTEXTURECAPS_PROJECTED 0x00000400 158#define D3DPTEXTURECAPS_CUBEMAP 0x00000800 159#define D3DPTEXTURECAPS_COLORKEYBLEND 0x00001000 160 161#define D3DPTFILTERCAPS_NEAREST 0x00000001 162#define D3DPTFILTERCAPS_LINEAR 0x00000002 163#define D3DPTFILTERCAPS_MIPNEAREST 0x00000004 164#define D3DPTFILTERCAPS_MIPLINEAR 0x00000008 165#define D3DPTFILTERCAPS_LINEARMIPNEAREST 0x00000010 166#define D3DPTFILTERCAPS_LINEARMIPLINEAR 0x00000020 167/* yes - missing numbers */ 168#define D3DPTFILTERCAPS_MINFPOINT 0x00000100 169#define D3DPTFILTERCAPS_MINFLINEAR 0x00000200 170#define D3DPTFILTERCAPS_MINFANISOTROPIC 0x00000400 171/* yes - missing numbers */ 172#define D3DPTFILTERCAPS_MIPFPOINT 0x00010000 173#define D3DPTFILTERCAPS_MIPFLINEAR 0x00020000 174/* yes - missing numbers */ 175#define D3DPTFILTERCAPS_MAGFPOINT 0x01000000 176#define D3DPTFILTERCAPS_MAGFLINEAR 0x02000000 177#define D3DPTFILTERCAPS_MAGFANISOTROPIC 0x04000000 178#define D3DPTFILTERCAPS_MAGFAFLATCUBIC 0x08000000 179#define D3DPTFILTERCAPS_MAGFGAUSSIANCUBIC 0x10000000 180 181#define D3DPTBLENDCAPS_DECAL 0x00000001 182#define D3DPTBLENDCAPS_MODULATE 0x00000002 183#define D3DPTBLENDCAPS_DECALALPHA 0x00000004 184#define D3DPTBLENDCAPS_MODULATEALPHA 0x00000008 185#define D3DPTBLENDCAPS_DECALMASK 0x00000010 186#define D3DPTBLENDCAPS_MODULATEMASK 0x00000020 187#define D3DPTBLENDCAPS_COPY 0x00000040 188#define D3DPTBLENDCAPS_ADD 0x00000080 189 190#define D3DPTADDRESSCAPS_WRAP 0x00000001 191#define D3DPTADDRESSCAPS_MIRROR 0x00000002 192#define D3DPTADDRESSCAPS_CLAMP 0x00000004 193#define D3DPTADDRESSCAPS_BORDER 0x00000008 194#define D3DPTADDRESSCAPS_INDEPENDENTUV 0x00000010 195 196 197typedef struct _D3DDeviceDesc { 198 DWORD dwSize; 199 DWORD dwFlags; 200 D3DCOLORMODEL dcmColorModel; 201 DWORD dwDevCaps; 202 D3DTRANSFORMCAPS dtcTransformCaps; 203 WINBOOL bClipping; 204 D3DLIGHTINGCAPS dlcLightingCaps; 205 D3DPRIMCAPS dpcLineCaps; 206 D3DPRIMCAPS dpcTriCaps; 207 DWORD dwDeviceRenderBitDepth; 208 DWORD dwDeviceZBufferBitDepth; 209 DWORD dwMaxBufferSize; 210 DWORD dwMaxVertexCount; 211 212 DWORD dwMinTextureWidth,dwMinTextureHeight; 213 DWORD dwMaxTextureWidth,dwMaxTextureHeight; 214 DWORD dwMinStippleWidth,dwMaxStippleWidth; 215 DWORD dwMinStippleHeight,dwMaxStippleHeight; 216 217 DWORD dwMaxTextureRepeat; 218 DWORD dwMaxTextureAspectRatio; 219 DWORD dwMaxAnisotropy; 220 221 D3DVALUE dvGuardBandLeft; 222 D3DVALUE dvGuardBandTop; 223 D3DVALUE dvGuardBandRight; 224 D3DVALUE dvGuardBandBottom; 225 226 D3DVALUE dvExtentsAdjust; 227 DWORD dwStencilCaps; 228 229 DWORD dwFVFCaps; 230 DWORD dwTextureOpCaps; 231 WORD wMaxTextureBlendStages; 232 WORD wMaxSimultaneousTextures; 233} D3DDEVICEDESC,*LPD3DDEVICEDESC; 234#define D3DDEVICEDESCSIZE (sizeof(D3DDEVICEDESC)) 235 236typedef struct _D3DDeviceDesc7 { 237 DWORD dwDevCaps; 238 D3DPRIMCAPS dpcLineCaps; 239 D3DPRIMCAPS dpcTriCaps; 240 DWORD dwDeviceRenderBitDepth; 241 DWORD dwDeviceZBufferBitDepth; 242 243 DWORD dwMinTextureWidth, dwMinTextureHeight; 244 DWORD dwMaxTextureWidth, dwMaxTextureHeight; 245 246 DWORD dwMaxTextureRepeat; 247 DWORD dwMaxTextureAspectRatio; 248 DWORD dwMaxAnisotropy; 249 250 D3DVALUE dvGuardBandLeft; 251 D3DVALUE dvGuardBandTop; 252 D3DVALUE dvGuardBandRight; 253 D3DVALUE dvGuardBandBottom; 254 255 D3DVALUE dvExtentsAdjust; 256 DWORD dwStencilCaps; 257 DWORD dwFVFCaps; 258 DWORD dwTextureOpCaps; 259 WORD wMaxTextureBlendStages; 260 WORD wMaxSimultaneousTextures; 261 262 DWORD dwMaxActiveLights; 263 D3DVALUE dvMaxVertexW; 264 GUID deviceGUID; 265 266 WORD wMaxUserClipPlanes; 267 WORD wMaxVertexBlendMatrices; 268 269 DWORD dwVertexProcessingCaps; 270 271 DWORD dwReserved1; 272 DWORD dwReserved2; 273 DWORD dwReserved3; 274 DWORD dwReserved4; 275} D3DDEVICEDESC7, *LPD3DDEVICEDESC7; 276#define D3DDEVICEDESC7SIZE (sizeof(D3DDEVICEDESC7)) 277 278#define D3DDD_COLORMODEL 0x00000001 279#define D3DDD_DEVCAPS 0x00000002 280#define D3DDD_TRANSFORMCAPS 0x00000004 281#define D3DDD_LIGHTINGCAPS 0x00000008 282#define D3DDD_BCLIPPING 0x00000010 283#define D3DDD_LINECAPS 0x00000020 284#define D3DDD_TRICAPS 0x00000040 285#define D3DDD_DEVICERENDERBITDEPTH 0x00000080 286#define D3DDD_DEVICEZBUFFERBITDEPTH 0x00000100 287#define D3DDD_MAXBUFFERSIZE 0x00000200 288#define D3DDD_MAXVERTEXCOUNT 0x00000400 289 290#define D3DDEVCAPS_FLOATTLVERTEX 0x00000001 291#define D3DDEVCAPS_SORTINCREASINGZ 0x00000002 292#define D3DDEVCAPS_SORTDECREASINGZ 0X00000004 293#define D3DDEVCAPS_SORTEXACT 0x00000008 294#define D3DDEVCAPS_EXECUTESYSTEMMEMORY 0x00000010 295#define D3DDEVCAPS_EXECUTEVIDEOMEMORY 0x00000020 296#define D3DDEVCAPS_TLVERTEXSYSTEMMEMORY 0x00000040 297#define D3DDEVCAPS_TLVERTEXVIDEOMEMORY 0x00000080 298#define D3DDEVCAPS_TEXTURESYSTEMMEMORY 0x00000100 299#define D3DDEVCAPS_TEXTUREVIDEOMEMORY 0x00000200 300#define D3DDEVCAPS_DRAWPRIMTLVERTEX 0x00000400 301#define D3DDEVCAPS_CANRENDERAFTERFLIP 0x00000800 302#define D3DDEVCAPS_TEXTURENONLOCALVIDMEM 0x00001000 303#define D3DDEVCAPS_DRAWPRIMITIVES2 0x00002000 304#define D3DDEVCAPS_SEPARATETEXTUREMEMORIES 0x00004000 305#define D3DDEVCAPS_DRAWPRIMITIVES2EX 0x00008000 306#define D3DDEVCAPS_HWTRANSFORMANDLIGHT 0x00010000 307#define D3DDEVCAPS_CANBLTSYSTONONLOCAL 0x00020000 308#define D3DDEVCAPS_HWRASTERIZATION 0x00080000 309 310#define D3DSTENCILCAPS_KEEP 0x00000001 311#define D3DSTENCILCAPS_ZERO 0x00000002 312#define D3DSTENCILCAPS_REPLACE 0x00000004 313#define D3DSTENCILCAPS_INCRSAT 0x00000008 314#define D3DSTENCILCAPS_DECRSAT 0x00000010 315#define D3DSTENCILCAPS_INVERT 0x00000020 316#define D3DSTENCILCAPS_INCR 0x00000040 317#define D3DSTENCILCAPS_DECR 0x00000080 318 319#define D3DTEXOPCAPS_DISABLE 0x00000001 320#define D3DTEXOPCAPS_SELECTARG1 0x00000002 321#define D3DTEXOPCAPS_SELECTARG2 0x00000004 322#define D3DTEXOPCAPS_MODULATE 0x00000008 323#define D3DTEXOPCAPS_MODULATE2X 0x00000010 324#define D3DTEXOPCAPS_MODULATE4X 0x00000020 325#define D3DTEXOPCAPS_ADD 0x00000040 326#define D3DTEXOPCAPS_ADDSIGNED 0x00000080 327#define D3DTEXOPCAPS_ADDSIGNED2X 0x00000100 328#define D3DTEXOPCAPS_SUBTRACT 0x00000200 329#define D3DTEXOPCAPS_ADDSMOOTH 0x00000400 330#define D3DTEXOPCAPS_BLENDDIFFUSEALPHA 0x00000800 331#define D3DTEXOPCAPS_BLENDTEXTUREALPHA 0x00001000 332#define D3DTEXOPCAPS_BLENDFACTORALPHA 0x00002000 333#define D3DTEXOPCAPS_BLENDTEXTUREALPHAPM 0x00004000 334#define D3DTEXOPCAPS_BLENDCURRENTALPHA 0x00008000 335#define D3DTEXOPCAPS_PREMODULATE 0x00010000 336#define D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR 0x00020000 337#define D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA 0x00040000 338#define D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR 0x00080000 339#define D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA 0x00100000 340#define D3DTEXOPCAPS_BUMPENVMAP 0x00200000 341#define D3DTEXOPCAPS_BUMPENVMAPLUMINANCE 0x00400000 342#define D3DTEXOPCAPS_DOTPRODUCT3 0x00800000 343 344#define D3DFVFCAPS_TEXCOORDCOUNTMASK 0x0000FFFF 345#define D3DFVFCAPS_DONOTSTRIPELEMENTS 0x00080000 346 347#define D3DVTXPCAPS_TEXGEN 0x00000001 348#define D3DVTXPCAPS_MATERIALSOURCE7 0x00000002 349#define D3DVTXPCAPS_VERTEXFOG 0x00000004 350#define D3DVTXPCAPS_DIRECTIONALLIGHTS 0x00000008 351#define D3DVTXPCAPS_POSITIONALLIGHTS 0x00000010 352#define D3DVTXPCAPS_LOCALVIEWER 0x00000020 353 354typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK)(GUID *guid, char *description, char *name, 355 D3DDEVICEDESC *hal_desc, D3DDEVICEDESC *hel_desc, void *ctx); 356typedef HRESULT (CALLBACK *LPD3DENUMDEVICESCALLBACK7)(char *description, char *name, D3DDEVICEDESC7 *desc, void *ctx); 357 358#define D3DFDS_COLORMODEL 0x00000001 359#define D3DFDS_GUID 0x00000002 360#define D3DFDS_HARDWARE 0x00000004 361#define D3DFDS_TRIANGLES 0x00000008 362#define D3DFDS_LINES 0x00000010 363#define D3DFDS_MISCCAPS 0x00000020 364#define D3DFDS_RASTERCAPS 0x00000040 365#define D3DFDS_ZCMPCAPS 0x00000080 366#define D3DFDS_ALPHACMPCAPS 0x00000100 367#define D3DFDS_SRCBLENDCAPS 0x00000200 368#define D3DFDS_DSTBLENDCAPS 0x00000400 369#define D3DFDS_SHADECAPS 0x00000800 370#define D3DFDS_TEXTURECAPS 0x00001000 371#define D3DFDS_TEXTUREFILTERCAPS 0x00002000 372#define D3DFDS_TEXTUREBLENDCAPS 0x00004000 373#define D3DFDS_TEXTUREADDRESSCAPS 0x00008000 374 375typedef struct _D3DFINDDEVICESEARCH { 376 DWORD dwSize; 377 DWORD dwFlags; 378 WINBOOL bHardware; 379 D3DCOLORMODEL dcmColorModel; 380 GUID guid; 381 DWORD dwCaps; 382 D3DPRIMCAPS dpcPrimCaps; 383} D3DFINDDEVICESEARCH,*LPD3DFINDDEVICESEARCH; 384 385typedef struct _D3DFINDDEVICERESULT { 386 DWORD dwSize; 387 GUID guid; 388 D3DDEVICEDESC ddHwDesc; 389 D3DDEVICEDESC ddSwDesc; 390} D3DFINDDEVICERESULT,*LPD3DFINDDEVICERESULT; 391 392typedef struct _D3DExecuteBufferDesc { 393 DWORD dwSize; 394 DWORD dwFlags; 395 DWORD dwCaps; 396 DWORD dwBufferSize; 397 void *lpData; 398} D3DEXECUTEBUFFERDESC, *LPD3DEXECUTEBUFFERDESC; 399 400#define D3DDEB_BUFSIZE 0x00000001 401#define D3DDEB_CAPS 0x00000002 402#define D3DDEB_LPDATA 0x00000004 403 404#define D3DDEBCAPS_SYSTEMMEMORY 0x00000001 405#define D3DDEBCAPS_VIDEOMEMORY 0x00000002 406#define D3DDEBCAPS_MEM (D3DDEBCAPS_SYSTEMMEMORY|D3DDEBCAPS_VIDEOMEMORY) /* = 0x3 */ 407 408typedef struct _D3DDEVINFO_TEXTUREMANAGER { 409 WINBOOL bThrashing; 410 DWORD dwApproxBytesDownloaded; 411 DWORD dwNumEvicts; 412 DWORD dwNumVidCreates; 413 DWORD dwNumTexturesUsed; 414 DWORD dwNumUsedTexInVid; 415 DWORD dwWorkingSet; 416 DWORD dwWorkingSetBytes; 417 DWORD dwTotalManaged; 418 DWORD dwTotalBytes; 419 DWORD dwLastPri; 420} D3DDEVINFO_TEXTUREMANAGER, *LPD3DDEVINFO_TEXTUREMANAGER; 421 422typedef struct _D3DDEVINFO_TEXTURING { 423 DWORD dwNumLoads; 424 DWORD dwApproxBytesLoaded; 425 DWORD dwNumPreLoads; 426 DWORD dwNumSet; 427 DWORD dwNumCreates; 428 DWORD dwNumDestroys; 429 DWORD dwNumSetPriorities; 430 DWORD dwNumSetLODs; 431 DWORD dwNumLocks; 432 DWORD dwNumGetDCs; 433} D3DDEVINFO_TEXTURING, *LPD3DDEVINFO_TEXTURING; 434 435#ifdef __i386__ 436#include <poppack.h> 437#endif 438 439#endif 440