diff --git a/DirectX9/ComObject.hs b/DirectX9/ComObject.hs
new file mode 100644
--- /dev/null
+++ b/DirectX9/ComObject.hs
@@ -0,0 +1,74 @@
+{-#  LANGUAGE ForeignFunctionInterface, MultiParamTypeClasses #-}
+module DirectX9.ComObject
+where
+import Control.Exception    ( bracket_ )
+import Foreign.Concurrent   ( addForeignPtrFinalizer )
+import Foreign          ( Ptr, poke, peek , castPtr, ForeignPtr, withForeignPtr
+                        , nullPtr, mallocForeignPtr )
+import System.Win32     ( UINT )
+
+
+---------------------------------------------------------------------------
+-- ComObject
+
+newtype ComObject a = ComObject (ForeignPtr (Ptr a))
+
+comMake :: Ptr a -> IO (ComObject a)
+comMake ptr = do
+    fp <- mallocForeignPtr
+    ptr' <- withForeignPtr fp $ \ptr' ->do
+        poke ptr' ptr
+        return ptr'
+    addForeignPtrFinalizer fp (fin ptr')
+    return $ ComObject fp
+    where
+        fin ptr' = do
+            ptr <- peek ptr'
+            if ptr==nullPtr
+                then return ()
+                else c_Release (castPtr ptr) >> return ()
+
+comUnManage :: ComObject a -> IO (Ptr a)
+comUnManage obj = withCom obj $ \ptr -> do
+    c_AddRef (castPtr ptr)
+    return ptr
+
+comFree :: ComObject a -> IO Int
+comFree (ComObject o) = withForeignPtr o $ \ptr -> do
+    ptr' <- peek ptr
+    if ptr'==nullPtr
+        then return (-1)
+        else do
+            c <- c_Release (castPtr ptr')
+            poke ptr nullPtr
+            return $ fromIntegral c
+
+withCom :: ComObject a -> (Ptr a -> IO b) -> IO b
+withCom (ComObject obj) act = withForeignPtr obj $ \ptr -> do
+    ptr' <- peek ptr
+    if ptr'==nullPtr
+        then act ptr'
+        else bracket_
+            (c_AddRef $ castPtr ptr')
+            (c_Release $ castPtr ptr')
+            (act ptr')
+
+class ComCast base derived where
+    comCast :: ComObject derived -> IO (Maybe (ComObject base))
+    withCastedCom :: ComObject derived -> (Ptr base -> IO a) -> IO a
+    
+    comCast (ComObject obj) = withForeignPtr obj $ \ptr -> do
+        ptr' <- peek ptr
+        if ptr'==nullPtr
+            then return Nothing
+            else do
+                c_AddRef (castPtr ptr')
+                comMake (castPtr ptr') >>= return.Just
+    withCastedCom obj act = withCom obj (act.castPtr)
+        
+
+foreign import ccall unsafe "fake.h AddRef"
+    c_AddRef :: Ptr () -> IO UINT
+foreign import ccall unsafe "fake.h Release"
+    c_Release :: Ptr () -> IO UINT
+
diff --git a/DirectX9/Error.hsc b/DirectX9/Error.hsc
new file mode 100644
--- /dev/null
+++ b/DirectX9/Error.hsc
@@ -0,0 +1,120 @@
+module DirectX9.Error
+where
+import Control.Monad    ( when )
+
+import DirectX9.Types
+
+#include "windows.h"
+#include "fix_decl.h"
+#include "d3d9.h"
+#include "fix_decl_x.h"
+-- #include "d3dx9.h"
+
+
+
+isHrFailed :: HRESULT -> Bool
+isHrFailed i = i<0
+
+isHrSuccess :: [HRESULT] -> HRESULT -> Bool
+isHrSuccess ok res = elem res ok
+
+hrTranslate :: HRESULT -> String
+hrTranslate r = case lookup r errorText of
+    Just x -> x
+    Nothing -> "Unknown HRESULT (" ++ show r ++ ")"
+
+hrFailIf :: (HRESULT -> Bool) -> String -> IO HRESULT -> IO HRESULT
+hrFailIf f c a = do
+    e <- a
+    when (f e) $ fail $ c ++ ": " ++ hrTranslate e
+    return e
+
+hrFail :: String -> IO HRESULT -> IO HRESULT
+hrFail = hrFailIf isHrFailed
+
+hrSuccess :: [HRESULT] -> String -> IO HRESULT -> IO HRESULT
+hrSuccess ok = hrFailIf (isHrSuccess ok)
+
+
+#{enum HRESULT, 
+    , d3D_OK                = D3D_OK
+    , d3DOK_NOAUTOGEN       = D3DOK_NOAUTOGEN
+    , d3DERR_CONFLICTINGRENDERSTATE     = D3DERR_CONFLICTINGRENDERSTATE
+    , d3DERR_CONFLICTINGTEXTUREFILTER   = D3DERR_CONFLICTINGTEXTUREFILTER
+    , d3DERR_CONFLICTINGTEXTUREPALETTE  = D3DERR_CONFLICTINGTEXTUREPALETTE
+    , d3DERR_DEVICELOST     = D3DERR_DEVICELOST
+    , d3DERR_DEVICENOTRESET = D3DERR_DEVICENOTRESET
+    , d3DERR_DRIVERINTERNALERROR        = D3DERR_DRIVERINTERNALERROR
+    , d3DERR_DRIVERINVALIDCALL          = D3DERR_DRIVERINVALIDCALL
+    , d3DERR_INVALIDCALL    = D3DERR_INVALIDCALL
+    , d3DERR_INVALIDDEVICE  = D3DERR_INVALIDDEVICE
+    , d3DERR_MOREDATA       = D3DERR_MOREDATA
+    , d3DERR_NOTAVAILABLE   = D3DERR_NOTAVAILABLE
+    , d3DERR_NOTFOUND       = D3DERR_NOTFOUND
+    , d3DERR_OUTOFVIDEOMEMORY           = D3DERR_OUTOFVIDEOMEMORY
+    , d3DERR_TOOMANYOPERATIONS          = D3DERR_TOOMANYOPERATIONS
+    , d3DERR_UNSUPPORTEDALPHAARG        = D3DERR_UNSUPPORTEDALPHAARG
+    , d3DERR_UNSUPPORTEDALPHAOPERATION  = D3DERR_UNSUPPORTEDALPHAOPERATION
+    , d3DERR_UNSUPPORTEDCOLORARG        = D3DERR_UNSUPPORTEDCOLORARG
+    , d3DERR_UNSUPPORTEDCOLOROPERATION  = D3DERR_UNSUPPORTEDCOLOROPERATION
+    , d3DERR_UNSUPPORTEDFACTORVALUE     = D3DERR_UNSUPPORTEDFACTORVALUE
+    , d3DERR_UNSUPPORTEDTEXTUREFILTER   = D3DERR_UNSUPPORTEDTEXTUREFILTER
+    , d3DERR_WASSTILLDRAWING            = D3DERR_WASSTILLDRAWING
+    , d3DERR_WRONGTEXTUREFORMAT         = D3DERR_WRONGTEXTUREFORMAT
+    , e_FAIL                = E_FAIL
+    , e_INVALIDARG          = E_INVALIDARG
+    , e_NOINTERFACE         = E_NOINTERFACE
+    , e_NOTIMPL             = E_NOTIMPL
+    , e_OUTOFMEMORY         = E_OUTOFMEMORY
+    , s_OK                  = S_OK
+    
+
+    }
+
+--    ,d3DXERR_CANNOTMODIFYINDEXBUFFER    = D3DXERR_CANNOTMODIFYINDEXBUFFER
+--    ,d3DXERR_INVALIDMESH                = D3DXERR_INVALIDMESH
+--    ,d3DXERR_CANNOTATTRSORT             = D3DXERR_CANNOTATTRSORT
+--    ,d3DXERR_SKINNINGNOTSUPPORTED       = D3DXERR_SKINNINGNOTSUPPORTED
+--    ,d3DXERR_TOOMANYINFLUENCES          = D3DXERR_TOOMANYINFLUENCES
+--    ,d3DXERR_INVALIDDATA                = D3DXERR_INVALIDDATA
+--    ,d3DXERR_LOADEDMESHASNODATA         = D3DXERR_LOADEDMESHASNODATA
+--    ,d3DXERR_DUPLICATENAMEDFRAGMENT     = D3DXERR_DUPLICATENAMEDFRAGMENT
+--	,d3DXERR_CANNOTREMOVELASTITEM       = D3DXERR_CANNOTREMOVELASTITEM
+--    , e_INVALIDCALL     =E_INVALIDCALL
+
+
+errorText :: [(HRESULT,String)]
+errorText = [
+    (d3D_OK,"No error occurred."),
+    (d3DOK_NOAUTOGEN,"Autogeneration of MIPMAPs failed for this format"),
+    (d3DERR_CONFLICTINGRENDERSTATE,"The currently set render states cannot be used together."),
+    (d3DERR_CONFLICTINGTEXTUREFILTER,"The current texture filters cannot be used together."),
+    (d3DERR_CONFLICTINGTEXTUREPALETTE,"The current textures cannot be used simultaneously."),
+    (d3DERR_DEVICELOST,"The device has been lost but cannot be reset at this time. Therefore, rendering is not possible."),
+    (d3DERR_DEVICENOTRESET,"The device has been lost but can be reset at this time."),
+    (d3DERR_DRIVERINTERNALERROR,"Internal driver error"),
+    (d3DERR_DRIVERINVALIDCALL,"Not used."),
+    (d3DERR_INVALIDCALL,"Invalid methodcall."),
+    (d3DERR_INVALIDDEVICE,"The requested device type is not valid."),
+    (d3DERR_MOREDATA,"There is more data available than the specified buffer size can hold."),
+    (d3DERR_NOTAVAILABLE,"This device does not support the queried technique."),
+    (d3DERR_NOTFOUND,"The requested item was not found."),
+    (d3DERR_OUTOFVIDEOMEMORY,"Direct3D does not have enough display memory to perform the operation."),
+    (d3DERR_TOOMANYOPERATIONS,"The application is requesting more texture-filtering operations than the device supports."),
+    (d3DERR_UNSUPPORTEDALPHAARG,"The device does not support a specified texture-blending argument for the alpha channel."),
+    (d3DERR_UNSUPPORTEDALPHAOPERATION,"The device does not support a specified texture-blending operation for the alpha channel."),
+    (d3DERR_UNSUPPORTEDCOLORARG,"The device does not support a specified texture-blending argument for color values."),
+    (d3DERR_UNSUPPORTEDCOLOROPERATION,"The device does not support a specified texture-blending operation for color values."),
+    (d3DERR_UNSUPPORTEDFACTORVALUE,"The device does not support the specified texture factor value. Not used; provided only to support older drivers."),
+    (d3DERR_UNSUPPORTEDTEXTUREFILTER,"The device does not support the specified texture filter."),
+    (d3DERR_WASSTILLDRAWING,"The previous blit operation that is transferring information to or from this surface is incomplete."),
+    (d3DERR_WRONGTEXTUREFORMAT,"The pixel format of the texture surface is not valid."),
+    (e_FAIL,"An undetermined error occurred."),
+    (e_INVALIDARG,"An invalid parameter was passed to the returning function."),
+    -- (e_INVALIDCALL,"The method call is invalid. For example, a method's parameter may have an invalid value."),
+    (e_NOINTERFACE,"No object interface is available."),
+    (e_NOTIMPL,"Not implemented."),
+    (e_OUTOFMEMORY, "Not enough memory."),
+    (s_OK, "No error occurred.")
+    ]
+
diff --git a/DirectX9/Types.hs b/DirectX9/Types.hs
new file mode 100644
--- /dev/null
+++ b/DirectX9/Types.hs
@@ -0,0 +1,40 @@
+{-#  LANGUAGE ForeignFunctionInterface #-}
+module DirectX9.Types (
+    module Data.Word,
+    module Graphics.Win32,
+    module System.Win32,
+    module Foreign,
+    module DirectX9.ComObject,
+    HRESULT, HMONITOR, LPCVOID, RGNDATA(..), GUID(..),
+    REFGUID, REFIID, LARGE_INTEGER, PVOID, LPDWORD, LPGUID, SIZE_T
+) where
+import Data.Word        ( Word )
+import Graphics.Win32   ( HDC, HWND, POINT )
+import System.Win32     ( HANDLE, LPVOID, DWORD, UINT, BOOL, INT, FLOAT
+                        , WORD, BYTE, LONG, LPCSTR, LPSTR, TCHAR, LPCTSTR
+                        , LPCWSTR )
+import Foreign          ( Word64, Ptr, Storable, sizeOf, alignment, poke, peek
+                        , nullPtr )
+
+import DirectX9.ComObject
+
+type SIZE_T = Int
+type PVOID = LPVOID
+type LPDWORD=Ptr DWORD
+type HRESULT = Int
+type HMONITOR=HANDLE
+type LPCVOID = LPVOID
+data RGNDATA = RGNDATA
+data GUID = GUID deriving (Show,Eq,Ord)
+type REFGUID = Ptr GUID
+type REFIID = Ptr GUID
+type LPGUID = Ptr GUID
+type LARGE_INTEGER = Word64
+
+
+instance Storable GUID where
+    sizeOf = const 16
+    alignment = const 1
+    poke _ _ = return ()
+    peek _ = return GUID
+
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,23 @@
+Copyright (c) 2006, Esa Ilari Vuokko
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright
+      notice, this list of conditions and the following disclaimer.
+    * Neither the name of the copyright holders nor the names of its
+      contributors may be used to endorse or promote products derived from
+      this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,34 @@
+module Main
+where
+import Distribution.Simple              ( defaultMainWithHooks, simpleUserHooks
+                                        , preConf, postConf )
+import Distribution.PackageDescription  ( HookedBuildInfo, extraLibDirs
+                                        , includeDirs, emptyBuildInfo
+                                        , ccOptions )
+import Distribution.PackageDescription.Parse ( writeHookedBuildInfo )
+import Data.List                        ( isPrefixOf, intersperse )
+import System.Exit  --                    ( ExitSuccess )
+
+main = defaultMainWithHooks simpleUserHooks{preConf=conf, postConf=ok}
+    where
+        ok _ _ _ _ = return ()
+        conf args flags = do
+            let
+                sdk = findSdk args
+                lib = map (++"\\mingw") sdk
+                inc = map (++"\\Include") sdk
+                inc_c = map ("-I"++) inc
+                bi = (Just emptyBuildInfo {extraLibDirs=lib, includeDirs=inc,ccOptions=inc_c}, [])
+            if null sdk
+                then putStrLn "No DirectX9 sdk path specified.  Give --dx-sdk=path\\to\\sdk or write dx.buildinfo"
+                else do
+                    putStrLn $ "Looking for sdk headers in: " ++ (concat $ intersperse ";" inc)
+                    putStrLn $ "Looking for sdk libraries (mingw) in: " ++ (concat $ intersperse ";" lib)
+            writeHookedBuildInfo "dx.buildinfo" bi
+            return bi
+
+        flag = "--dx-sdk="
+        findSdk l = case l of
+            []  -> []
+            i:x | isPrefixOf flag i -> drop (length flag) i : findSdk x
+                | otherwise         -> findSdk x
diff --git a/cbits/iunknown.c b/cbits/iunknown.c
new file mode 100644
--- /dev/null
+++ b/cbits/iunknown.c
@@ -0,0 +1,8 @@
+#define COBJMACROS
+#include "windows.h"
+
+#include "fix_decl.h"
+
+UINT AddRef(IUnknown* object) { return IUnknown_AddRef(object); }
+UINT Release(IUnknown* object) { return IUnknown_Release(object); }
+
diff --git a/dx9base.cabal b/dx9base.cabal
new file mode 100644
--- /dev/null
+++ b/dx9base.cabal
@@ -0,0 +1,42 @@
+name:               dx9base
+version:            0.1
+author:             Esa Ilari Vuokko
+maintainer:         none
+license:            BSD3
+license-file:       LICENSE
+category:           Graphics
+Synopsis:           Backend for a binding to the Microsoft DirectX 9 API.
+Description:        This package provoide ComObject and some error types, to provide DirectX 9 Haskell binding.
+                    We think replace some part by <http://hackage.haskell.org/cgi-bin/hackage-scripts/package/com>,
+                    or code what generated by <http://hackage.haskell.org/package/hdirect>.
+                    .
+                    This version lacks D3DX support and some functionality to build with MinGW's library.
+stability:          alpha
+cabal-version:      >= 1.8
+build-type:         Simple
+extra-source-files:
+   gen/Parser.hs, gen/extract-dx.hs, gen/extract-d3dx.hs
+   gen/d3d_h.h,   gen/d3dx_h.h,      gen/fix_decl_x.h
+   gen/d3d_c.h,   gen/d3dx_c.h,      gen/fix_decl.h
+
+-- source-repository head
+--   type:     darcs
+--   location: http://tamelambda.net/darcs/dx9
+
+library
+ build-depends:      base >= 3 && < 5, Win32
+ exposed-modules:
+    DirectX9.ComObject
+    DirectX9.Types
+    DirectX9.Error
+ c-sources:
+    cbits/iunknown.c
+ include-dirs: ./gen
+ ghc-options:
+    -Wall
+    -fno-warn-name-shadowing
+    -fno-warn-unused-do-bind
+    -fno-warn-orphans
+    -funbox-strict-fields
+ cc-options:
+ ld-options:
diff --git a/gen/Parser.hs b/gen/Parser.hs
new file mode 100644
--- /dev/null
+++ b/gen/Parser.hs
@@ -0,0 +1,359 @@
+module Parser
+
+where
+import Text.ParserCombinators.Parsec
+import Data.List
+import Data.Char
+import Control.Monad
+
+debugParse :: Bool
+debugParse = False
+
+put :: String -> IO ()
+put = if debugParse then putStrLn else const $ return ()
+
+
+identifier = many ok
+    where
+        ok = alphaNum <|> char '_'
+
+number =
+    (try $ do
+        string "0x"
+        n <- many1 hexDigit
+        return ("0x"++n)
+    ) <|> (many1 digit)
+
+run :: Show a => Parser a -> String -> IO a
+run p input
+        = case (parse p "" input) of
+            Left err -> fail $ show err
+            Right x  -> return x
+
+
+---------------------------------------------------------------------------
+-- Types
+
+data Type = Base String | Array String Type | Pointer Type | IO_ Type deriving (Show, Eq)
+
+parseType :: Parser [(String, Type)]
+parseType = do
+    typ <- parseRetType
+    many space
+    nam <- identifier
+    nam' <- many (many space >> char ',' >> many space >> identifier)
+    arr <- many array
+    return $ map
+        (\n -> (n, foldl (\x y -> y x) typ $ map Array arr))
+        (nam:nam')
+    where
+        array = do
+            many space
+            char '['
+            many space
+            c <- option "" identifier
+            many space
+            char ']'
+            return c
+
+parseRetType :: Parser Type
+parseRetType = do
+    many (try $ many space >> modifier)
+    many space
+    typ <- identifier
+    p <- many pointer
+    return $ foldl (\x y -> y x) (Base typ) $ replicate (length p) Pointer
+    where
+        modifier = string "CONST" <|> string "const"
+        pointer = try (many space >> char '*')
+
+
+---------------------------------------------------------------------------
+-- Enums
+
+parseEnum :: String -> Parser [(String,String)]
+parseEnum name = do
+    manyTill anyChar (try start)
+    c <- many1 $ try enumval
+    return $ snd $ foldl gen (0,[]) $ filter ok c
+    where
+        gen (n,b) i@(name, value)
+            | value=="" = (n+1, (name, show n):b)
+            | otherwise = (n, i:b)
+        start = string $ "<pre class=\"syntax\">typedef enum " ++ name ++ "\n{"
+        enumval = do
+            many space
+            option "" $ string ","
+            many space
+            name <- many1 (alphaNum <|> char '_')
+            value <- option "" valuep
+            return (name, value)
+        valuep = do
+            many space
+            char '='
+            many space
+            value <- number <?> "value"
+            return value        
+        ok (n,_) = not $ isSuffixOf "FORCE_DWORD" n
+
+
+readEnum :: String -> String -> IO (String,[(String,String)])
+readEnum path name = do
+    put $ name ++ " from " ++ path ++ "/" ++ name ++ ".htm"
+    values <- readFile (path++"/"++name++".htm") >>= run (parseEnum name)
+    return (name, values)
+
+
+---------------------------------------------------------------------------
+-- interface
+
+parseInterface :: Parser [String]
+parseInterface = do
+    manyTill anyChar (try start)
+    many1 $ try method
+    where
+        start = string "<table><tr><th>Method</th><th>Description</th></tr><tr>"
+        method = do
+            manyTill anyChar $ try $ string "<td><a href=\""
+            manyTill anyChar (string "\">")
+            identifier
+
+
+parseFunc :: Parser String
+parseFunc = do
+    manyTill anyChar (try start)
+    f <- manyTill anyChar $ char ';'
+    return $ clean f
+    where
+        start = string "<pre class=\"syntax\">"
+        clean [] = []
+        clean (x:xs)
+            | x=='<' = clean' xs
+            | x=='\n' = clean xs
+            | otherwise = x:clean xs
+        clean' [] = []
+        clean' (x:xs)
+            | x=='>' = clean xs
+            | otherwise = clean' xs
+
+parseSignature :: Parser (String, String, [String])
+parseSignature = do
+    many space
+    ret <- identifier
+    many space
+    fun <- identifier
+    many space
+    string "("
+    many space
+    p <- many (try param)
+    return (fun, ret, p)
+    where 
+        space_comma = do
+            many space
+            char ',' <|> char ')'
+        param = do
+            many space
+            c <- manyTill anyChar $ try space_comma
+            when (length c==0) $ fail "not long enough"
+            return c
+
+type Interface = (String, String, [(String,Type,[(String,Type)])])
+readInterface :: String -> (String,String,Interface->Interface) -> IO Interface
+readInterface path (name,base,f) = do
+    put $ name ++ " from " ++ path ++ "/" ++ name ++ ".htm"
+    values <- readFile (path++"/"++name++".htm") >>= run parseInterface >>= mapM getFunc
+    return $ f (name, base, values)
+    where
+        getFunc fun = do
+            put $ name ++ " from " ++ path ++ "/" ++ name ++ "__" ++ fun ++ ".htm"
+            s <- readFile (path++"/"++name++"__"++fun++".htm") >>= run parseFunc
+            put s
+            (n, t, p) <- run parseSignature s
+            put t
+            t' <- run parseRetType t
+            p' <- mapM (\x -> put x >> run parseType x) p
+            return (n, t', concat p')
+
+---------------------------------------------------------------------------
+-- structures
+
+parseStruct :: String -> Parser [String]
+parseStruct name = do
+    manyTill anyChar (try start)
+    manyTill field $ try (many space >> char '}')
+    where
+        start = string $ "<pre class=\"syntax\">typedef struct " ++ name ++ " {"
+        field = do
+            many space
+            option ' ' $ char '\n'
+            many space
+            manyTill anyChar $ try (many space >> char ';')
+
+readStruct :: String -> String -> IO (String, [(String,Type)])
+readStruct path name = do
+    put $ name ++ " from " ++ path ++ "/" ++ name ++ ".htm"
+    fields <- readFile (path++"/"++name++".htm") >>= run (parseStruct name)
+    fields' <- mapM (\x -> put x >> run parseType x) fields
+    return (name, concat fields')
+
+---------------------------------------------------------------------------
+-- Printing
+
+c_decl :: [(String, a)] -> String
+c_decl = concatMap p
+    where
+        p (x,_) = "typedef struct " ++ x ++ " " ++ x ++ ";\n"
+
+c_decl3 :: [(String, a, b)] -> String
+c_decl3 = concatMap p
+    where
+        p (x,_,_) = "typedef struct " ++ x ++ " " ++ x ++ ";\n"
+
+c_type :: String -> Type -> String
+c_type name t = arr t
+    where
+        arr (Array s t) = arr t ++ "[" ++ s ++ "]"
+        arr t = ptr t ++ " " ++ name
+        ptr (Pointer t) = ptr t ++ "*"
+        ptr (Base s)
+            | s=="D3DLight9"    = "D3DLIGHT9"
+            | s=="LPD3DXFileSaveData" = "LPD3DXFILESAVEDATA"
+            | s=="LpD3DDeviceXPMESH" = "LPD3DXPMESH"
+            | otherwise         = s
+
+c_fun :: (String, Type, [(String,Type)]) -> String
+c_fun (n,ret,par) =
+    c_type n ret ++ "(" ++ 
+    (concat $ intersperse "," $ map (uncurry c_type) par)
+    ++ ")"
+
+c_def_i :: (String, String, [(String,Type,[(String,Type)])]) -> String
+c_def_i (n, b, f) = concat[
+    "struct vtbl",n," {\n",
+    "struct vtbl",b," base;\n",
+    concat $ intersperse ";\n" $ map fun f,
+    ";\n};\n",
+    "struct ", n, "{ struct vtbl",n," *vtbl; };\n",
+    concatMap fun2 f,
+    "\n"]
+    where
+        fun :: (String, Type, [(String,Type)]) -> String
+        fun (n, t, p) = c_fun ("(__stdcall *"++n++")", t, p)
+        fun2 (n',t,p) = concat $ 
+            [c_type (n++"_"++n') t, "("] 
+            ++ (intersperse "," $ map (uncurry c_type) (("object",Pointer (Base n)):p))
+            ++ [") { return object->vtbl->", n', "(" ]
+            ++ (intersperse "," $ map fst p)
+            ++ ["); }\n"]
+
+c_def_if ::  (String, String, [(String, Type, [(String,Type)])]) -> String
+c_def_if (n,_,f) = concatMap fun f
+    where
+    {-
+        fun (n',t,p) = concat $
+            [c_type ("c_"++n++"_"++n') t, "("]
+            ++ (intersperse "," $ map (uncurry c_type) (("object", Pointer $ Base n):p))
+            ++ [") { return "]
+            ++ [n,"_",n',"("]
+            ++ (intersperse "," $ ("object": map fst p))
+            ++ ["); }\n"]
+            -}
+        fun (n',t,p) = concat $
+                [c_type ("c_"++n++"_"++n') t, "("]
+            ++  (intersperse "," $ map (uncurry c_type) (("object", Pointer $ Base n):p))
+            ++  [") { return object->lpVtbl->", n', "("]
+            ++  (intersperse "," $ ("object":map fst p))
+            ++  ["); }\n"]
+
+c_def_e :: (String, [(String,String)]) -> String
+c_def_e (e, v) = concat [
+    "typedef enum ", e, " ", e, ";\n",
+    "enum ", e, " {\n",
+    concat $ intersperse ",\n" $ map val v,
+    "\n};\n"]
+    where
+        val (n,v) = n ++ " = " ++ v
+    
+c_def_e2 :: (String, a) -> String
+c_def_e2 (e,_) = "typedef DWORD " ++ e ++ ";\n"
+
+h_type :: Type -> String
+h_type t = case t of
+    Pointer (Base s)    -> "Ptr " ++ trans s
+    Array _ (Base s)    -> "Ptr " ++ trans s
+    IO_ (Base s)        -> "IO " ++ trans s
+    Pointer t           -> "Ptr (" ++ h_type t ++ ")"
+    Array _ t           -> "Ptr (" ++ h_type t ++ ")"
+    IO_ t               -> "IO (" ++ h_type t ++ ")"
+    Base s              -> trans s
+    where
+        trans s
+            | s=="void"     = "()"
+            | s=="VOID"     = "()"
+            | s=="float"    = "Float"
+            | s=="char"     = "Char"
+            | s=="int"      = "Int"
+            | s=="D3DLight9" = "D3DLIGHT9"
+            | s=="DOUBLE"   = "Double"
+            | s=="LpD3DDeviceXPMESH" = "(Ptr ID3DXPMesh)"
+            -- | isPrefixOf "LP" s = "(Ptr " ++ (trans $ drop 2 s) ++ ")"
+            | otherwise     = s
+    
+
+h_fun :: Type -> [Type] -> String
+h_fun ret p = concat $ intersperse " -> " $ map h_type (p ++ [ret])
+
+h_def_i :: (String, String, [(String, Type, [(String, Type)])]) -> String
+h_def_i (n,_,f) = concat $ [
+    "data ", n, " = ", n, " deriving (Show)\n"]
+    ++ (intersperse "\n" $ map fun f)
+    ++ ["\n"]
+    ++ pointer
+    ++ ["\n\n"]
+    where
+        pointer = [
+            "type LP", n, " = Ptr ", n, "\n",
+            "type LP", map toUpper (tail n), " = Ptr ", n, "\n"]
+        fun (n', t, p) = 
+            "foreign import ccall unsafe \"fake.h c_" ++n++"_"++n'++"\"\n"
+            ++"  c_"++n++"_"++n'++"::"++ h_fun (IO_ t) ((Pointer (Base n)):(map snd p))
+
+h_def_s :: (String,[(String,Type)]) -> String
+h_def_s (s,v) = concat [
+    "data ", s, " = ", s, "{ ", 
+    concat $ intersperse "," $ map constr v,
+    " } deriving (Show,Eq,Ord)\n",
+    pointer,
+    storable]
+    where
+        typ :: Type -> String
+        typ (Base t) =  "!" ++ h_type (Base t)
+        typ t = "!(" ++ h_type t ++ ")"
+        constr (n,t) = let
+            (x:xs) = (s++"_"++n)
+            n' = (toLower x):xs
+            in n' ++ " :: " ++ typ t
+        pointer = concat [
+            "type LP", s, " = Ptr ", s, "\n"]
+        storable = concat$[
+            "instance Storable ", s, " where\n",
+            " sizeOf _ = "] ++ (intersperse "+" $ map size v) ++ ["\n",
+            " alignment = const 1\n",
+            " poke b (",s," "]++ (intersperse " " $ params) ++[")\n",
+            "  = return b >>= pokeHelp "] ++ (intersperse " >>= pokeHelp " params)
+            ++ [" >> return()\n",
+            " peek b = do\n"] ++ (init $ concatMap peek params)
+            ++ ["  return (",s, " "] ++ (intersperse " " params) ++ [")\n\n"]
+        size (_,t) = "(sizeOf (undefined::("++h_type t++")))"
+        param p = "p" ++ show p
+        params = map param [1..length v]
+        peek p = ["  " ++ p ++ " <- peekByteOff b 0\n","  b <- return $ plusPtr b (sizeOf " ++ p ++ ")\n"]
+
+h_def_e :: [(String,String)] -> (String, [(String, String)]) -> String
+h_def_e types (e,v) = "type " ++ e ++ " = " ++ t ++ "\n" ++ (concatMap print v) ++ "\n"
+    where
+        print (n:n',v) = ((toLower n):n') ++ "::"++e++"\n" ++ ((toLower n):n') ++ "=" ++ v ++ "\n"
+        t = case lookup e types of
+            Just x -> x
+            Nothing -> "DWORD"
+
diff --git a/gen/d3d_c.h b/gen/d3d_c.h
new file mode 100644
--- /dev/null
+++ b/gen/d3d_c.h
@@ -0,0 +1,200 @@
+HRESULT c_IDirect3D9_CheckDepthStencilMatch(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,D3DFORMAT RenderTargetFormat,D3DFORMAT DepthStencilFormat) { return object->lpVtbl->CheckDepthStencilMatch(object,Adapter,DeviceType,AdapterFormat,RenderTargetFormat,DepthStencilFormat); }
+HRESULT c_IDirect3D9_CheckDeviceFormat(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,DWORD Usage,D3DRESOURCETYPE RType,D3DFORMAT CheckFormat) { return object->lpVtbl->CheckDeviceFormat(object,Adapter,DeviceType,AdapterFormat,Usage,RType,CheckFormat); }
+HRESULT c_IDirect3D9_CheckDeviceFormatConversion(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SourceFormat,D3DFORMAT TargetFormat) { return object->lpVtbl->CheckDeviceFormatConversion(object,Adapter,DeviceType,SourceFormat,TargetFormat); }
+HRESULT c_IDirect3D9_CheckDeviceMultiSampleType(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SurfaceFormat,BOOL Windowed,D3DMULTISAMPLE_TYPE MultiSampleType,DWORD* pQualityLevels) { return object->lpVtbl->CheckDeviceMultiSampleType(object,Adapter,DeviceType,SurfaceFormat,Windowed,MultiSampleType,pQualityLevels); }
+HRESULT c_IDirect3D9_CheckDeviceType(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT DisplayFormat,D3DFORMAT BackBufferFormat,BOOL Windowed) { return object->lpVtbl->CheckDeviceType(object,Adapter,DeviceType,DisplayFormat,BackBufferFormat,Windowed); }
+HRESULT c_IDirect3D9_CreateDevice(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice9** ppReturnedDeviceInterface) { return object->lpVtbl->CreateDevice(object,Adapter,DeviceType,hFocusWindow,BehaviorFlags,pPresentationParameters,ppReturnedDeviceInterface); }
+HRESULT c_IDirect3D9_EnumAdapterModes(IDirect3D9* object,UINT Adapter,D3DFORMAT Format,UINT Mode,D3DDISPLAYMODE* pMode) { return object->lpVtbl->EnumAdapterModes(object,Adapter,Format,Mode,pMode); }
+UINT c_IDirect3D9_GetAdapterCount(IDirect3D9* object) { return object->lpVtbl->GetAdapterCount(object); }
+HRESULT c_IDirect3D9_GetAdapterDisplayMode(IDirect3D9* object,UINT Adapter,D3DDISPLAYMODE* pMode) { return object->lpVtbl->GetAdapterDisplayMode(object,Adapter,pMode); }
+HRESULT c_IDirect3D9_GetAdapterIdentifier(IDirect3D9* object,UINT Adapter,DWORD Flags,D3DADAPTER_IDENTIFIER9* pIdentifier) { return object->lpVtbl->GetAdapterIdentifier(object,Adapter,Flags,pIdentifier); }
+UINT c_IDirect3D9_GetAdapterModeCount(IDirect3D9* object,UINT Adapter,D3DFORMAT Format) { return object->lpVtbl->GetAdapterModeCount(object,Adapter,Format); }
+HMONITOR c_IDirect3D9_GetAdapterMonitor(IDirect3D9* object,UINT Adapter) { return object->lpVtbl->GetAdapterMonitor(object,Adapter); }
+HRESULT c_IDirect3D9_GetDeviceCaps(IDirect3D9* object,UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS9* pCaps) { return object->lpVtbl->GetDeviceCaps(object,Adapter,DeviceType,pCaps); }
+HRESULT c_IDirect3D9_RegisterSoftwareDevice(IDirect3D9* object,void* pInitializeFunction) { return object->lpVtbl->RegisterSoftwareDevice(object,pInitializeFunction); }
+HRESULT c_IDirect3DDevice9_BeginScene(IDirect3DDevice9* object) { return object->lpVtbl->BeginScene(object); }
+HRESULT c_IDirect3DDevice9_BeginStateBlock(IDirect3DDevice9* object) { return object->lpVtbl->BeginStateBlock(object); }
+HRESULT c_IDirect3DDevice9_Clear(IDirect3DDevice9* object,DWORD Count,D3DRECT* pRects,DWORD Flags,D3DCOLOR Color,float Z,DWORD Stencil) { return object->lpVtbl->Clear(object,Count,pRects,Flags,Color,Z,Stencil); }
+HRESULT c_IDirect3DDevice9_ColorFill(IDirect3DDevice9* object,IDirect3DSurface9* pSurface,RECT* pRect,D3DCOLOR color) { return object->lpVtbl->ColorFill(object,pSurface,pRect,color); }
+HRESULT c_IDirect3DDevice9_CreateAdditionalSwapChain(IDirect3DDevice9* object,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DSwapChain9** ppSwapChain) { return object->lpVtbl->CreateAdditionalSwapChain(object,pPresentationParameters,ppSwapChain); }
+HRESULT c_IDirect3DDevice9_CreateCubeTexture(IDirect3DDevice9* object,UINT EdgeLength,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DCubeTexture9** ppCubeTexture,HANDLE* pSharedHandle) { return object->lpVtbl->CreateCubeTexture(object,EdgeLength,Levels,Usage,Format,Pool,ppCubeTexture,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateDepthStencilSurface(IDirect3DDevice9* object,UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Discard,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle) { return object->lpVtbl->CreateDepthStencilSurface(object,Width,Height,Format,MultiSample,MultisampleQuality,Discard,ppSurface,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateIndexBuffer(IDirect3DDevice9* object,UINT Length,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DIndexBuffer9** ppIndexBuffer,HANDLE* pSharedHandle) { return object->lpVtbl->CreateIndexBuffer(object,Length,Usage,Format,Pool,ppIndexBuffer,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateOffscreenPlainSurface(IDirect3DDevice9* object,UINT Width,UINT Height,D3DFORMAT Format,DWORD Pool,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle) { return object->lpVtbl->CreateOffscreenPlainSurface(object,Width,Height,Format,Pool,ppSurface,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreatePixelShader(IDirect3DDevice9* object,DWORD* pFunction,IDirect3DPixelShader9** ppShader) { return object->lpVtbl->CreatePixelShader(object,pFunction,ppShader); }
+HRESULT c_IDirect3DDevice9_CreateQuery(IDirect3DDevice9* object,D3DQUERYTYPE Type,IDirect3DQuery9** ppQuery) { return object->lpVtbl->CreateQuery(object,Type,ppQuery); }
+HRESULT c_IDirect3DDevice9_CreateRenderTarget(IDirect3DDevice9* object,UINT Width,UINT Height,D3DFORMAT Format,D3DMULTISAMPLE_TYPE MultiSample,DWORD MultisampleQuality,BOOL Lockable,IDirect3DSurface9** ppSurface,HANDLE* pSharedHandle) { return object->lpVtbl->CreateRenderTarget(object,Width,Height,Format,MultiSample,MultisampleQuality,Lockable,ppSurface,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateStateBlock(IDirect3DDevice9* object,D3DSTATEBLOCKTYPE Type,IDirect3DStateBlock9** ppSB) { return object->lpVtbl->CreateStateBlock(object,Type,ppSB); }
+HRESULT c_IDirect3DDevice9_CreateTexture(IDirect3DDevice9* object,UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture9** ppTexture,HANDLE* pSharedHandle) { return object->lpVtbl->CreateTexture(object,Width,Height,Levels,Usage,Format,Pool,ppTexture,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateVertexBuffer(IDirect3DDevice9* object,UINT Length,DWORD Usage,DWORD FVF,D3DPOOL Pool,IDirect3DVertexBuffer9** ppVertexBuffer,HANDLE* pSharedHandle) { return object->lpVtbl->CreateVertexBuffer(object,Length,Usage,FVF,Pool,ppVertexBuffer,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_CreateVertexDeclaration(IDirect3DDevice9* object,D3DVERTEXELEMENT9* pVertexElements,IDirect3DVertexDeclaration9** ppDecl) { return object->lpVtbl->CreateVertexDeclaration(object,pVertexElements,ppDecl); }
+HRESULT c_IDirect3DDevice9_CreateVertexShader(IDirect3DDevice9* object,DWORD* pFunction,IDirect3DVertexShader9** ppShader) { return object->lpVtbl->CreateVertexShader(object,pFunction,ppShader); }
+HRESULT c_IDirect3DDevice9_CreateVolumeTexture(IDirect3DDevice9* object,UINT Width,UINT Height,UINT Depth,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DVolumeTexture9** ppVolumeTexture,HANDLE* pSharedHandle) { return object->lpVtbl->CreateVolumeTexture(object,Width,Height,Depth,Levels,Usage,Format,Pool,ppVolumeTexture,pSharedHandle); }
+HRESULT c_IDirect3DDevice9_DeletePatch(IDirect3DDevice9* object,UINT Handle) { return object->lpVtbl->DeletePatch(object,Handle); }
+HRESULT c_IDirect3DDevice9_DrawIndexedPrimitive(IDirect3DDevice9* object,D3DPRIMITIVETYPE Type,INT BaseVertexIndex,UINT MinIndex,UINT NumVertices,UINT StartIndex,UINT PrimitiveCount) { return object->lpVtbl->DrawIndexedPrimitive(object,Type,BaseVertexIndex,MinIndex,NumVertices,StartIndex,PrimitiveCount); }
+HRESULT c_IDirect3DDevice9_DrawIndexedPrimitiveUP(IDirect3DDevice9* object,D3DPRIMITIVETYPE PrimitiveType,UINT MinVertexIndex,UINT NumVertices,UINT PrimitiveCount,void* pIndexData,D3DFORMAT IndexDataFormat,void* pVertexStreamZeroData,UINT VertexStreamZeroStride) { return object->lpVtbl->DrawIndexedPrimitiveUP(object,PrimitiveType,MinVertexIndex,NumVertices,PrimitiveCount,pIndexData,IndexDataFormat,pVertexStreamZeroData,VertexStreamZeroStride); }
+HRESULT c_IDirect3DDevice9_DrawPrimitive(IDirect3DDevice9* object,D3DPRIMITIVETYPE PrimitiveType,UINT StartVertex,UINT PrimitiveCount) { return object->lpVtbl->DrawPrimitive(object,PrimitiveType,StartVertex,PrimitiveCount); }
+HRESULT c_IDirect3DDevice9_DrawPrimitiveUP(IDirect3DDevice9* object,D3DPRIMITIVETYPE PrimitiveType,UINT PrimitiveCount,void* pVertexStreamZeroData,UINT VertexStreamZeroStride) { return object->lpVtbl->DrawPrimitiveUP(object,PrimitiveType,PrimitiveCount,pVertexStreamZeroData,VertexStreamZeroStride); }
+HRESULT c_IDirect3DDevice9_DrawRectPatch(IDirect3DDevice9* object,UINT Handle,float* pNumSegs,D3DRECTPATCH_INFO* pRectPatchInfo) { return object->lpVtbl->DrawRectPatch(object,Handle,pNumSegs,pRectPatchInfo); }
+HRESULT c_IDirect3DDevice9_DrawTriPatch(IDirect3DDevice9* object,UINT Handle,float* pNumSegs,D3DTRIPATCH_INFO* pTriPatchInfo) { return object->lpVtbl->DrawTriPatch(object,Handle,pNumSegs,pTriPatchInfo); }
+HRESULT c_IDirect3DDevice9_EndScene(IDirect3DDevice9* object) { return object->lpVtbl->EndScene(object); }
+HRESULT c_IDirect3DDevice9_EndStateBlock(IDirect3DDevice9* object,IDirect3DStateBlock9** ppSB) { return object->lpVtbl->EndStateBlock(object,ppSB); }
+HRESULT c_IDirect3DDevice9_EvictManagedResources(IDirect3DDevice9* object) { return object->lpVtbl->EvictManagedResources(object); }
+UINT c_IDirect3DDevice9_GetAvailableTextureMem(IDirect3DDevice9* object) { return object->lpVtbl->GetAvailableTextureMem(object); }
+HRESULT c_IDirect3DDevice9_GetBackBuffer(IDirect3DDevice9* object,UINT iSwapChain,UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface9** ppBackBuffer) { return object->lpVtbl->GetBackBuffer(object,iSwapChain,BackBuffer,Type,ppBackBuffer); }
+HRESULT c_IDirect3DDevice9_GetClipPlane(IDirect3DDevice9* object,DWORD Index,float* pPlane) { return object->lpVtbl->GetClipPlane(object,Index,pPlane); }
+HRESULT c_IDirect3DDevice9_GetClipStatus(IDirect3DDevice9* object,D3DCLIPSTATUS9* pClipStatus) { return object->lpVtbl->GetClipStatus(object,pClipStatus); }
+HRESULT c_IDirect3DDevice9_GetCreationParameters(IDirect3DDevice9* object,D3DDEVICE_CREATION_PARAMETERS* pParameters) { return object->lpVtbl->GetCreationParameters(object,pParameters); }
+HRESULT c_IDirect3DDevice9_GetCurrentTexturePalette(IDirect3DDevice9* object,UINT* pPaletteNumber) { return object->lpVtbl->GetCurrentTexturePalette(object,pPaletteNumber); }
+HRESULT c_IDirect3DDevice9_GetDepthStencilSurface(IDirect3DDevice9* object,IDirect3DSurface9** ppZStencilSurface) { return object->lpVtbl->GetDepthStencilSurface(object,ppZStencilSurface); }
+HRESULT c_IDirect3DDevice9_GetDeviceCaps(IDirect3DDevice9* object,D3DCAPS9* pCaps) { return object->lpVtbl->GetDeviceCaps(object,pCaps); }
+HRESULT c_IDirect3DDevice9_GetDirect3D(IDirect3DDevice9* object,IDirect3D9** ppD3D9) { return object->lpVtbl->GetDirect3D(object,ppD3D9); }
+HRESULT c_IDirect3DDevice9_GetDisplayMode(IDirect3DDevice9* object,UINT iSwapChain,D3DDISPLAYMODE* pMode) { return object->lpVtbl->GetDisplayMode(object,iSwapChain,pMode); }
+HRESULT c_IDirect3DDevice9_GetFrontBufferData(IDirect3DDevice9* object,UINT iSwapChain,IDirect3DSurface9* pDestSurface) { return object->lpVtbl->GetFrontBufferData(object,iSwapChain,pDestSurface); }
+HRESULT c_IDirect3DDevice9_GetFVF(IDirect3DDevice9* object,DWORD* pFVF) { return object->lpVtbl->GetFVF(object,pFVF); }
+void c_IDirect3DDevice9_GetGammaRamp(IDirect3DDevice9* object,UINT iSwapChain,D3DGAMMARAMP* pRamp) { return object->lpVtbl->GetGammaRamp(object,iSwapChain,pRamp); }
+HRESULT c_IDirect3DDevice9_GetIndices(IDirect3DDevice9* object,IDirect3DIndexBuffer9** ppIndexData) { return object->lpVtbl->GetIndices(object,ppIndexData); }
+HRESULT c_IDirect3DDevice9_GetLight(IDirect3DDevice9* object,DWORD Index,D3DLIGHT9* pLight) { return object->lpVtbl->GetLight(object,Index,pLight); }
+HRESULT c_IDirect3DDevice9_GetLightEnable(IDirect3DDevice9* object,DWORD Index,BOOL* pEnable) { return object->lpVtbl->GetLightEnable(object,Index,pEnable); }
+HRESULT c_IDirect3DDevice9_GetMaterial(IDirect3DDevice9* object,D3DMATERIAL9* pMaterial) { return object->lpVtbl->GetMaterial(object,pMaterial); }
+FLOAT c_IDirect3DDevice9_GetNPatchMode(IDirect3DDevice9* object) { return object->lpVtbl->GetNPatchMode(object); }
+UINT c_IDirect3DDevice9_GetNumberOfSwapChains(IDirect3DDevice9* object) { return object->lpVtbl->GetNumberOfSwapChains(object); }
+HRESULT c_IDirect3DDevice9_GetPaletteEntries(IDirect3DDevice9* object,UINT PaletteNumber,PALETTEENTRY* pEntries) { return object->lpVtbl->GetPaletteEntries(object,PaletteNumber,pEntries); }
+HRESULT c_IDirect3DDevice9_GetPixelShader(IDirect3DDevice9* object,IDirect3DPixelShader9** ppShader) { return object->lpVtbl->GetPixelShader(object,ppShader); }
+HRESULT c_IDirect3DDevice9_GetPixelShaderConstantB(IDirect3DDevice9* object,UINT StartRegister,BOOL* pConstantData,UINT BoolCount) { return object->lpVtbl->GetPixelShaderConstantB(object,StartRegister,pConstantData,BoolCount); }
+HRESULT c_IDirect3DDevice9_GetPixelShaderConstantF(IDirect3DDevice9* object,UINT StartRegister,float* pConstantData,UINT Vector4fCount) { return object->lpVtbl->GetPixelShaderConstantF(object,StartRegister,pConstantData,Vector4fCount); }
+HRESULT c_IDirect3DDevice9_GetPixelShaderConstantI(IDirect3DDevice9* object,UINT StartRegister,int* pConstantData,UINT Vector4iCount) { return object->lpVtbl->GetPixelShaderConstantI(object,StartRegister,pConstantData,Vector4iCount); }
+HRESULT c_IDirect3DDevice9_GetRasterStatus(IDirect3DDevice9* object,UINT iSwapChain,D3DRASTER_STATUS* pRasterStatus) { return object->lpVtbl->GetRasterStatus(object,iSwapChain,pRasterStatus); }
+HRESULT c_IDirect3DDevice9_GetRenderState(IDirect3DDevice9* object,D3DRENDERSTATETYPE State,DWORD* pValue) { return object->lpVtbl->GetRenderState(object,State,pValue); }
+HRESULT c_IDirect3DDevice9_GetRenderTarget(IDirect3DDevice9* object,DWORD RenderTargetIndex,IDirect3DSurface9** ppRenderTarget) { return object->lpVtbl->GetRenderTarget(object,RenderTargetIndex,ppRenderTarget); }
+HRESULT c_IDirect3DDevice9_GetRenderTargetData(IDirect3DDevice9* object,IDirect3DSurface9* pRenderTarget,IDirect3DSurface9* pDestSurface) { return object->lpVtbl->GetRenderTargetData(object,pRenderTarget,pDestSurface); }
+HRESULT c_IDirect3DDevice9_GetSamplerState(IDirect3DDevice9* object,DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD* pValue) { return object->lpVtbl->GetSamplerState(object,Sampler,Type,pValue); }
+HRESULT c_IDirect3DDevice9_GetScissorRect(IDirect3DDevice9* object,RECT* pRect) { return object->lpVtbl->GetScissorRect(object,pRect); }
+BOOL c_IDirect3DDevice9_GetSoftwareVertexProcessing(IDirect3DDevice9* object) { return object->lpVtbl->GetSoftwareVertexProcessing(object); }
+HRESULT c_IDirect3DDevice9_GetStreamSource(IDirect3DDevice9* object,UINT StreamNumber,IDirect3DVertexBuffer9** ppStreamData,UINT* pOffsetInBytes,UINT* pStride) { return object->lpVtbl->GetStreamSource(object,StreamNumber,ppStreamData,pOffsetInBytes,pStride); }
+HRESULT c_IDirect3DDevice9_GetStreamSourceFreq(IDirect3DDevice9* object,UINT StreamNumber,UINT* pDivider) { return object->lpVtbl->GetStreamSourceFreq(object,StreamNumber,pDivider); }
+HRESULT c_IDirect3DDevice9_GetSwapChain(IDirect3DDevice9* object,UINT iSwapChain,IDirect3DSwapChain9** ppSwapChain) { return object->lpVtbl->GetSwapChain(object,iSwapChain,ppSwapChain); }
+HRESULT c_IDirect3DDevice9_GetTexture(IDirect3DDevice9* object,DWORD Stage,IDirect3DBaseTexture9** ppTexture) { return object->lpVtbl->GetTexture(object,Stage,ppTexture); }
+HRESULT c_IDirect3DDevice9_GetTextureStageState(IDirect3DDevice9* object,DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD* pValue) { return object->lpVtbl->GetTextureStageState(object,Stage,Type,pValue); }
+HRESULT c_IDirect3DDevice9_GetTransform(IDirect3DDevice9* object,D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) { return object->lpVtbl->GetTransform(object,State,pMatrix); }
+HRESULT c_IDirect3DDevice9_GetVertexDeclaration(IDirect3DDevice9* object,IDirect3DVertexDeclaration9** ppDecl) { return object->lpVtbl->GetVertexDeclaration(object,ppDecl); }
+HRESULT c_IDirect3DDevice9_GetVertexShader(IDirect3DDevice9* object,IDirect3DVertexShader9** ppShader) { return object->lpVtbl->GetVertexShader(object,ppShader); }
+HRESULT c_IDirect3DDevice9_GetVertexShaderConstantB(IDirect3DDevice9* object,UINT StartRegister,BOOL* pConstantData,UINT BoolCount) { return object->lpVtbl->GetVertexShaderConstantB(object,StartRegister,pConstantData,BoolCount); }
+HRESULT c_IDirect3DDevice9_GetVertexShaderConstantF(IDirect3DDevice9* object,UINT StartRegister,float* pConstantData,UINT Vector4fCount) { return object->lpVtbl->GetVertexShaderConstantF(object,StartRegister,pConstantData,Vector4fCount); }
+HRESULT c_IDirect3DDevice9_GetVertexShaderConstantI(IDirect3DDevice9* object,UINT StartRegister,int* pConstantData,UINT Vector4iCount) { return object->lpVtbl->GetVertexShaderConstantI(object,StartRegister,pConstantData,Vector4iCount); }
+HRESULT c_IDirect3DDevice9_GetViewport(IDirect3DDevice9* object,D3DVIEWPORT9* pViewport) { return object->lpVtbl->GetViewport(object,pViewport); }
+HRESULT c_IDirect3DDevice9_LightEnable(IDirect3DDevice9* object,DWORD LightIndex,BOOL bEnable) { return object->lpVtbl->LightEnable(object,LightIndex,bEnable); }
+HRESULT c_IDirect3DDevice9_MultiplyTransform(IDirect3DDevice9* object,D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) { return object->lpVtbl->MultiplyTransform(object,State,pMatrix); }
+HRESULT c_IDirect3DDevice9_Present(IDirect3DDevice9* object,RECT* pSourceRect,RECT* pDestRect,HWND hDestWindowOverride,RGNDATA* pDirtyRegion) { return object->lpVtbl->Present(object,pSourceRect,pDestRect,hDestWindowOverride,pDirtyRegion); }
+HRESULT c_IDirect3DDevice9_ProcessVertices(IDirect3DDevice9* object,UINT SrcStartIndex,UINT DestIndex,UINT VertexCount,IDirect3DVertexBuffer9* pDestBuffer,IDirect3DVertexDeclaration9* pVertexDecl,DWORD Flags) { return object->lpVtbl->ProcessVertices(object,SrcStartIndex,DestIndex,VertexCount,pDestBuffer,pVertexDecl,Flags); }
+HRESULT c_IDirect3DDevice9_Reset(IDirect3DDevice9* object,D3DPRESENT_PARAMETERS* pPresentationParameters) { return object->lpVtbl->Reset(object,pPresentationParameters); }
+HRESULT c_IDirect3DDevice9_SetClipPlane(IDirect3DDevice9* object,DWORD Index,float* pPlane) { return object->lpVtbl->SetClipPlane(object,Index,pPlane); }
+HRESULT c_IDirect3DDevice9_SetClipStatus(IDirect3DDevice9* object,D3DCLIPSTATUS9* pClipStatus) { return object->lpVtbl->SetClipStatus(object,pClipStatus); }
+HRESULT c_IDirect3DDevice9_SetCurrentTexturePalette(IDirect3DDevice9* object,UINT PaletteNumber) { return object->lpVtbl->SetCurrentTexturePalette(object,PaletteNumber); }
+void c_IDirect3DDevice9_SetCursorPosition(IDirect3DDevice9* object,INT X,INT Y,DWORD Flags) { return object->lpVtbl->SetCursorPosition(object,X,Y,Flags); }
+HRESULT c_IDirect3DDevice9_SetCursorProperties(IDirect3DDevice9* object,UINT XHotSpot,UINT YHotSpot,IDirect3DSurface9* pCursorBitmap) { return object->lpVtbl->SetCursorProperties(object,XHotSpot,YHotSpot,pCursorBitmap); }
+HRESULT c_IDirect3DDevice9_SetDepthStencilSurface(IDirect3DDevice9* object,IDirect3DSurface9* pNewZStencil) { return object->lpVtbl->SetDepthStencilSurface(object,pNewZStencil); }
+HRESULT c_IDirect3DDevice9_SetDialogBoxMode(IDirect3DDevice9* object,BOOL bEnableDialogs) { return object->lpVtbl->SetDialogBoxMode(object,bEnableDialogs); }
+HRESULT c_IDirect3DDevice9_SetFVF(IDirect3DDevice9* object,DWORD FVF) { return object->lpVtbl->SetFVF(object,FVF); }
+void c_IDirect3DDevice9_SetGammaRamp(IDirect3DDevice9* object,UINT iSwapChain,DWORD Flags,D3DGAMMARAMP* pRamp) { return object->lpVtbl->SetGammaRamp(object,iSwapChain,Flags,pRamp); }
+HRESULT c_IDirect3DDevice9_SetIndices(IDirect3DDevice9* object,IDirect3DIndexBuffer9* pIndexData) { return object->lpVtbl->SetIndices(object,pIndexData); }
+HRESULT c_IDirect3DDevice9_SetLight(IDirect3DDevice9* object,DWORD Index,D3DLIGHT9* pLight) { return object->lpVtbl->SetLight(object,Index,pLight); }
+HRESULT c_IDirect3DDevice9_SetMaterial(IDirect3DDevice9* object,D3DMATERIAL9* pMaterial) { return object->lpVtbl->SetMaterial(object,pMaterial); }
+HRESULT c_IDirect3DDevice9_SetNPatchMode(IDirect3DDevice9* object,float nSegments) { return object->lpVtbl->SetNPatchMode(object,nSegments); }
+HRESULT c_IDirect3DDevice9_SetPaletteEntries(IDirect3DDevice9* object,UINT PaletteNumber,PALETTEENTRY* pEntries) { return object->lpVtbl->SetPaletteEntries(object,PaletteNumber,pEntries); }
+HRESULT c_IDirect3DDevice9_SetPixelShader(IDirect3DDevice9* object,IDirect3DPixelShader9* pShader) { return object->lpVtbl->SetPixelShader(object,pShader); }
+HRESULT c_IDirect3DDevice9_SetPixelShaderConstantB(IDirect3DDevice9* object,UINT StartRegister,BOOL* pConstantData,UINT BoolCount) { return object->lpVtbl->SetPixelShaderConstantB(object,StartRegister,pConstantData,BoolCount); }
+HRESULT c_IDirect3DDevice9_SetPixelShaderConstantF(IDirect3DDevice9* object,UINT StartRegister,float* pConstantData,UINT Vector4fCount) { return object->lpVtbl->SetPixelShaderConstantF(object,StartRegister,pConstantData,Vector4fCount); }
+HRESULT c_IDirect3DDevice9_SetPixelShaderConstantI(IDirect3DDevice9* object,UINT StartRegister,int* pConstantData,UINT Vector4iCount) { return object->lpVtbl->SetPixelShaderConstantI(object,StartRegister,pConstantData,Vector4iCount); }
+HRESULT c_IDirect3DDevice9_SetRenderState(IDirect3DDevice9* object,D3DRENDERSTATETYPE State,DWORD Value) { return object->lpVtbl->SetRenderState(object,State,Value); }
+HRESULT c_IDirect3DDevice9_SetRenderTarget(IDirect3DDevice9* object,DWORD RenderTargetIndex,IDirect3DSurface9* pRenderTarget) { return object->lpVtbl->SetRenderTarget(object,RenderTargetIndex,pRenderTarget); }
+HRESULT c_IDirect3DDevice9_SetSamplerState(IDirect3DDevice9* object,DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD Value) { return object->lpVtbl->SetSamplerState(object,Sampler,Type,Value); }
+HRESULT c_IDirect3DDevice9_SetScissorRect(IDirect3DDevice9* object,RECT* pRect) { return object->lpVtbl->SetScissorRect(object,pRect); }
+HRESULT c_IDirect3DDevice9_SetSoftwareVertexProcessing(IDirect3DDevice9* object,BOOL bSoftware) { return object->lpVtbl->SetSoftwareVertexProcessing(object,bSoftware); }
+HRESULT c_IDirect3DDevice9_SetStreamSource(IDirect3DDevice9* object,UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride) { return object->lpVtbl->SetStreamSource(object,StreamNumber,pStreamData,OffsetInBytes,Stride); }
+HRESULT c_IDirect3DDevice9_SetStreamSourceFreq(IDirect3DDevice9* object,UINT StreamNumber,UINT FrequencyParameter) { return object->lpVtbl->SetStreamSourceFreq(object,StreamNumber,FrequencyParameter); }
+HRESULT c_IDirect3DDevice9_SetTexture(IDirect3DDevice9* object,DWORD Sampler,IDirect3DBaseTexture9* pTexture) { return object->lpVtbl->SetTexture(object,Sampler,pTexture); }
+HRESULT c_IDirect3DDevice9_SetTextureStageState(IDirect3DDevice9* object,DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value) { return object->lpVtbl->SetTextureStageState(object,Stage,Type,Value); }
+HRESULT c_IDirect3DDevice9_SetTransform(IDirect3DDevice9* object,D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) { return object->lpVtbl->SetTransform(object,State,pMatrix); }
+HRESULT c_IDirect3DDevice9_SetVertexDeclaration(IDirect3DDevice9* object,IDirect3DVertexDeclaration9* pDecl) { return object->lpVtbl->SetVertexDeclaration(object,pDecl); }
+HRESULT c_IDirect3DDevice9_SetVertexShader(IDirect3DDevice9* object,IDirect3DVertexShader9* pShader) { return object->lpVtbl->SetVertexShader(object,pShader); }
+HRESULT c_IDirect3DDevice9_SetVertexShaderConstantB(IDirect3DDevice9* object,UINT StartRegister,BOOL* pConstantData,UINT BoolCount) { return object->lpVtbl->SetVertexShaderConstantB(object,StartRegister,pConstantData,BoolCount); }
+HRESULT c_IDirect3DDevice9_SetVertexShaderConstantF(IDirect3DDevice9* object,UINT StartRegister,float* pConstantData,UINT Vector4fCount) { return object->lpVtbl->SetVertexShaderConstantF(object,StartRegister,pConstantData,Vector4fCount); }
+HRESULT c_IDirect3DDevice9_SetVertexShaderConstantI(IDirect3DDevice9* object,UINT StartRegister,int* pConstantData,UINT Vector4iCount) { return object->lpVtbl->SetVertexShaderConstantI(object,StartRegister,pConstantData,Vector4iCount); }
+HRESULT c_IDirect3DDevice9_SetViewport(IDirect3DDevice9* object,D3DVIEWPORT9* pViewport) { return object->lpVtbl->SetViewport(object,pViewport); }
+BOOL c_IDirect3DDevice9_ShowCursor(IDirect3DDevice9* object,BOOL bShow) { return object->lpVtbl->ShowCursor(object,bShow); }
+HRESULT c_IDirect3DDevice9_StretchRect(IDirect3DDevice9* object,IDirect3DSurface9* pSourceSurface,RECT* pSourceRect,IDirect3DSurface9* pDestSurface,RECT* pDestRect,D3DTEXTUREFILTERTYPE Filter) { return object->lpVtbl->StretchRect(object,pSourceSurface,pSourceRect,pDestSurface,pDestRect,Filter); }
+HRESULT c_IDirect3DDevice9_TestCooperativeLevel(IDirect3DDevice9* object) { return object->lpVtbl->TestCooperativeLevel(object); }
+HRESULT c_IDirect3DDevice9_UpdateSurface(IDirect3DDevice9* object,IDirect3DSurface9* pSourceSurface,RECT* pSourceRect,IDirect3DSurface9* pDestinationSurface,POINT* pDestinationPoint) { return object->lpVtbl->UpdateSurface(object,pSourceSurface,pSourceRect,pDestinationSurface,pDestinationPoint); }
+HRESULT c_IDirect3DDevice9_UpdateTexture(IDirect3DDevice9* object,IDirect3DBaseTexture9* pSourceTexture,IDirect3DBaseTexture9* pDestinationTexture) { return object->lpVtbl->UpdateTexture(object,pSourceTexture,pDestinationTexture); }
+HRESULT c_IDirect3DDevice9_ValidateDevice(IDirect3DDevice9* object,DWORD* pNumPasses) { return object->lpVtbl->ValidateDevice(object,pNumPasses); }
+HRESULT c_IDirect3DPixelShader9_GetDevice(IDirect3DPixelShader9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DPixelShader9_GetFunction(IDirect3DPixelShader9* object,void* pData,UINT* pSizeOfData) { return object->lpVtbl->GetFunction(object,pData,pSizeOfData); }
+HRESULT c_IDirect3DQuery9_GetData(IDirect3DQuery9* object,void* pData,DWORD dwSize,DWORD dwGetDataFlags) { return object->lpVtbl->GetData(object,pData,dwSize,dwGetDataFlags); }
+DWORD c_IDirect3DQuery9_GetDataSize(IDirect3DQuery9* object) { return object->lpVtbl->GetDataSize(object); }
+HRESULT c_IDirect3DQuery9_GetDevice(IDirect3DQuery9* object,IDirect3DDevice9** pDevice) { return object->lpVtbl->GetDevice(object,pDevice); }
+D3DQUERYTYPE c_IDirect3DQuery9_GetType(IDirect3DQuery9* object) { return object->lpVtbl->GetType(object); }
+HRESULT c_IDirect3DQuery9_Issue(IDirect3DQuery9* object,DWORD dwIssueFlags) { return object->lpVtbl->Issue(object,dwIssueFlags); }
+HRESULT c_IDirect3DStateBlock9_Apply(IDirect3DStateBlock9* object) { return object->lpVtbl->Apply(object); }
+HRESULT c_IDirect3DStateBlock9_Capture(IDirect3DStateBlock9* object) { return object->lpVtbl->Capture(object); }
+HRESULT c_IDirect3DStateBlock9_GetDevice(IDirect3DStateBlock9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DSwapChain9_GetBackBuffer(IDirect3DSwapChain9* object,UINT BackBuffer,D3DBACKBUFFER_TYPE Type,IDirect3DSurface9** ppBackBuffer) { return object->lpVtbl->GetBackBuffer(object,BackBuffer,Type,ppBackBuffer); }
+HRESULT c_IDirect3DSwapChain9_GetDevice(IDirect3DSwapChain9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DSwapChain9_GetDisplayMode(IDirect3DSwapChain9* object,D3DDISPLAYMODE* pMode) { return object->lpVtbl->GetDisplayMode(object,pMode); }
+HRESULT c_IDirect3DSwapChain9_GetFrontBufferData(IDirect3DSwapChain9* object,IDirect3DSurface9* pDestSurface) { return object->lpVtbl->GetFrontBufferData(object,pDestSurface); }
+HRESULT c_IDirect3DSwapChain9_GetPresentParameters(IDirect3DSwapChain9* object,D3DPRESENT_PARAMETERS* pPresentationParameters) { return object->lpVtbl->GetPresentParameters(object,pPresentationParameters); }
+HRESULT c_IDirect3DSwapChain9_GetRasterStatus(IDirect3DSwapChain9* object,D3DRASTER_STATUS* pRasterStatus) { return object->lpVtbl->GetRasterStatus(object,pRasterStatus); }
+HRESULT c_IDirect3DSwapChain9_Present(IDirect3DSwapChain9* object,RECT* pSourceRect,RECT* pDestRect,HWND hDestWindowOverride,RGNDATA* pDirtyRegion,DWORD dwFlags) { return object->lpVtbl->Present(object,pSourceRect,pDestRect,hDestWindowOverride,pDirtyRegion,dwFlags); }
+HRESULT c_IDirect3DVertexDeclaration9_GetDeclaration(IDirect3DVertexDeclaration9* object,D3DVERTEXELEMENT9* pDecl,UINT* pNumElements) { return object->lpVtbl->GetDeclaration(object,pDecl,pNumElements); }
+HRESULT c_IDirect3DVertexDeclaration9_GetDevice(IDirect3DVertexDeclaration9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DVertexShader9_GetDevice(IDirect3DVertexShader9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DVertexShader9_GetFunction(IDirect3DVertexShader9* object,void* pData,UINT* pSizeOfData) { return object->lpVtbl->GetFunction(object,pData,pSizeOfData); }
+HRESULT c_IDirect3DResource9_FreePrivateData(IDirect3DResource9* object,REFGUID refguid) { return object->lpVtbl->FreePrivateData(object,refguid); }
+HRESULT c_IDirect3DResource9_GetDevice(IDirect3DResource9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+DWORD c_IDirect3DResource9_GetPriority(IDirect3DResource9* object) { return object->lpVtbl->GetPriority(object); }
+HRESULT c_IDirect3DResource9_GetPrivateData(IDirect3DResource9* object,REFGUID refguid,void* pData,DWORD* pSizeOfData) { return object->lpVtbl->GetPrivateData(object,refguid,pData,pSizeOfData); }
+D3DRESOURCETYPE c_IDirect3DResource9_GetType(IDirect3DResource9* object) { return object->lpVtbl->GetType(object); }
+void c_IDirect3DResource9_PreLoad(IDirect3DResource9* object) { return object->lpVtbl->PreLoad(object); }
+DWORD c_IDirect3DResource9_SetPriority(IDirect3DResource9* object,DWORD PriorityNew) { return object->lpVtbl->SetPriority(object,PriorityNew); }
+HRESULT c_IDirect3DResource9_SetPrivateData(IDirect3DResource9* object,REFGUID refguid,void* pData,DWORD SizeOfData,DWORD Flags) { return object->lpVtbl->SetPrivateData(object,refguid,pData,SizeOfData,Flags); }
+VOID c_IDirect3DBaseTexture9_GenerateMipSubLevels(IDirect3DBaseTexture9* object) { return object->lpVtbl->GenerateMipSubLevels(object); }
+D3DTEXTUREFILTERTYPE c_IDirect3DBaseTexture9_GetAutoGenFilterType(IDirect3DBaseTexture9* object) { return object->lpVtbl->GetAutoGenFilterType(object); }
+DWORD c_IDirect3DBaseTexture9_GetLevelCount(IDirect3DBaseTexture9* object) { return object->lpVtbl->GetLevelCount(object); }
+DWORD c_IDirect3DBaseTexture9_GetLOD(IDirect3DBaseTexture9* object) { return object->lpVtbl->GetLOD(object); }
+HRESULT c_IDirect3DBaseTexture9_SetAutoGenFilterType(IDirect3DBaseTexture9* object,D3DTEXTUREFILTERTYPE FilterType) { return object->lpVtbl->SetAutoGenFilterType(object,FilterType); }
+DWORD c_IDirect3DBaseTexture9_SetLOD(IDirect3DBaseTexture9* object,DWORD LODNew) { return object->lpVtbl->SetLOD(object,LODNew); }
+HRESULT c_IDirect3DCubeTexture9_AddDirtyRect(IDirect3DCubeTexture9* object,D3DCUBEMAP_FACES FaceType,RECT* pDirtyRect) { return object->lpVtbl->AddDirtyRect(object,FaceType,pDirtyRect); }
+HRESULT c_IDirect3DCubeTexture9_GetCubeMapSurface(IDirect3DCubeTexture9* object,D3DCUBEMAP_FACES FaceType,UINT Level,IDirect3DSurface9** ppCubeMapSurface) { return object->lpVtbl->GetCubeMapSurface(object,FaceType,Level,ppCubeMapSurface); }
+HRESULT c_IDirect3DCubeTexture9_GetLevelDesc(IDirect3DCubeTexture9* object,UINT Level,D3DSURFACE_DESC* pDesc) { return object->lpVtbl->GetLevelDesc(object,Level,pDesc); }
+HRESULT c_IDirect3DCubeTexture9_LockRect(IDirect3DCubeTexture9* object,D3DCUBEMAP_FACES FaceType,UINT Level,D3DLOCKED_RECT* pLockedRect,RECT* pRect,DWORD Flags) { return object->lpVtbl->LockRect(object,FaceType,Level,pLockedRect,pRect,Flags); }
+HRESULT c_IDirect3DCubeTexture9_UnlockRect(IDirect3DCubeTexture9* object,D3DCUBEMAP_FACES FaceType,UINT Level) { return object->lpVtbl->UnlockRect(object,FaceType,Level); }
+HRESULT c_IDirect3DVolumeTexture9_AddDirtyBox(IDirect3DVolumeTexture9* object,D3DBOX* pDirtyBox) { return object->lpVtbl->AddDirtyBox(object,pDirtyBox); }
+HRESULT c_IDirect3DVolumeTexture9_GetLevelDesc(IDirect3DVolumeTexture9* object,UINT Level,D3DVOLUME_DESC* pDesc) { return object->lpVtbl->GetLevelDesc(object,Level,pDesc); }
+HRESULT c_IDirect3DVolumeTexture9_GetVolumeLevel(IDirect3DVolumeTexture9* object,UINT Level,IDirect3DVolume9** ppVolumeLevel) { return object->lpVtbl->GetVolumeLevel(object,Level,ppVolumeLevel); }
+HRESULT c_IDirect3DVolumeTexture9_LockBox(IDirect3DVolumeTexture9* object,UINT Level,D3DLOCKED_BOX* pLockedVolume,D3DBOX* pBox,DWORD Flags) { return object->lpVtbl->LockBox(object,Level,pLockedVolume,pBox,Flags); }
+HRESULT c_IDirect3DVolumeTexture9_UnlockBox(IDirect3DVolumeTexture9* object,UINT Level) { return object->lpVtbl->UnlockBox(object,Level); }
+HRESULT c_IDirect3DTexture9_AddDirtyRect(IDirect3DTexture9* object,RECT* pDirtyRect) { return object->lpVtbl->AddDirtyRect(object,pDirtyRect); }
+HRESULT c_IDirect3DTexture9_GetLevelDesc(IDirect3DTexture9* object,UINT Level,D3DSURFACE_DESC* pDesc) { return object->lpVtbl->GetLevelDesc(object,Level,pDesc); }
+HRESULT c_IDirect3DTexture9_GetSurfaceLevel(IDirect3DTexture9* object,UINT Level,IDirect3DSurface9** ppSurfaceLevel) { return object->lpVtbl->GetSurfaceLevel(object,Level,ppSurfaceLevel); }
+HRESULT c_IDirect3DTexture9_LockRect(IDirect3DTexture9* object,UINT Level,D3DLOCKED_RECT* pLockedRect,RECT* pRect,DWORD Flags) { return object->lpVtbl->LockRect(object,Level,pLockedRect,pRect,Flags); }
+HRESULT c_IDirect3DTexture9_UnlockRect(IDirect3DTexture9* object,UINT Level) { return object->lpVtbl->UnlockRect(object,Level); }
+HRESULT c_IDirect3DIndexBuffer9_GetDesc(IDirect3DIndexBuffer9* object,D3DINDEXBUFFER_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_IDirect3DIndexBuffer9_Lock(IDirect3DIndexBuffer9* object,UINT OffsetToLock,UINT SizeToLock,VOID** ppbData,DWORD Flags) { return object->lpVtbl->Lock(object,OffsetToLock,SizeToLock,ppbData,Flags); }
+HRESULT c_IDirect3DIndexBuffer9_Unlock(IDirect3DIndexBuffer9* object) { return object->lpVtbl->Unlock(object); }
+HRESULT c_IDirect3DSurface9_GetContainer(IDirect3DSurface9* object,REFIID riid,void** ppContainer) { return object->lpVtbl->GetContainer(object,riid,ppContainer); }
+HRESULT c_IDirect3DSurface9_GetDC(IDirect3DSurface9* object,HDC* phdc) { return object->lpVtbl->GetDC(object,phdc); }
+HRESULT c_IDirect3DSurface9_GetDesc(IDirect3DSurface9* object,D3DSURFACE_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_IDirect3DSurface9_LockRect(IDirect3DSurface9* object,D3DLOCKED_RECT* pLockedRect,RECT* pRect,DWORD Flags) { return object->lpVtbl->LockRect(object,pLockedRect,pRect,Flags); }
+HRESULT c_IDirect3DSurface9_ReleaseDC(IDirect3DSurface9* object,HDC hdc) { return object->lpVtbl->ReleaseDC(object,hdc); }
+HRESULT c_IDirect3DSurface9_UnlockRect(IDirect3DSurface9* object) { return object->lpVtbl->UnlockRect(object); }
+HRESULT c_IDirect3DVertexBuffer9_GetDesc(IDirect3DVertexBuffer9* object,D3DVERTEXBUFFER_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_IDirect3DVertexBuffer9_Lock(IDirect3DVertexBuffer9* object,UINT OffsetToLock,UINT SizeToLock,VOID** ppbData,DWORD Flags) { return object->lpVtbl->Lock(object,OffsetToLock,SizeToLock,ppbData,Flags); }
+HRESULT c_IDirect3DVertexBuffer9_Unlock(IDirect3DVertexBuffer9* object) { return object->lpVtbl->Unlock(object); }
+HRESULT c_IDirect3DVolume9_FreePrivateData(IDirect3DVolume9* object,REFGUID refguid) { return object->lpVtbl->FreePrivateData(object,refguid); }
+HRESULT c_IDirect3DVolume9_GetContainer(IDirect3DVolume9* object,REFIID riid,void** ppContainer) { return object->lpVtbl->GetContainer(object,riid,ppContainer); }
+HRESULT c_IDirect3DVolume9_GetDesc(IDirect3DVolume9* object,D3DVOLUME_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_IDirect3DVolume9_GetDevice(IDirect3DVolume9* object,IDirect3DDevice9** ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_IDirect3DVolume9_GetPrivateData(IDirect3DVolume9* object,REFGUID refguid,void* pData,DWORD* pSizeOfData) { return object->lpVtbl->GetPrivateData(object,refguid,pData,pSizeOfData); }
+HRESULT c_IDirect3DVolume9_LockBox(IDirect3DVolume9* object,D3DLOCKED_BOX* pLockedVolume,D3DBOX* pBox,DWORD Flags) { return object->lpVtbl->LockBox(object,pLockedVolume,pBox,Flags); }
+HRESULT c_IDirect3DVolume9_SetPrivateData(IDirect3DVolume9* object,REFGUID refguid,void* pData,DWORD SizeOfData,DWORD Flags) { return object->lpVtbl->SetPrivateData(object,refguid,pData,SizeOfData,Flags); }
+HRESULT c_IDirect3DVolume9_UnlockBox(IDirect3DVolume9* object) { return object->lpVtbl->UnlockBox(object); }
diff --git a/gen/d3d_h.h b/gen/d3d_h.h
new file mode 100644
--- /dev/null
+++ b/gen/d3d_h.h
@@ -0,0 +1,2121 @@
+data D3DADAPTER_IDENTIFIER9 = D3DADAPTER_IDENTIFIER9{ d3DADAPTER_IDENTIFIER9_Driver :: !(Ptr Char),d3DADAPTER_IDENTIFIER9_Description :: !(Ptr Char),d3DADAPTER_IDENTIFIER9_DeviceName :: !(Ptr Char),d3DADAPTER_IDENTIFIER9_DriverVersion :: !LARGE_INTEGER,d3DADAPTER_IDENTIFIER9_DriverVersionLowPart :: !DWORD,d3DADAPTER_IDENTIFIER9_DriverVersionHighPart :: !DWORD,d3DADAPTER_IDENTIFIER9_VendorId :: !DWORD,d3DADAPTER_IDENTIFIER9_DeviceId :: !DWORD,d3DADAPTER_IDENTIFIER9_SubSysId :: !DWORD,d3DADAPTER_IDENTIFIER9_Revision :: !DWORD,d3DADAPTER_IDENTIFIER9_DeviceIdentifier :: !GUID,d3DADAPTER_IDENTIFIER9_WHQLLevel :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DADAPTER_IDENTIFIER9 = Ptr D3DADAPTER_IDENTIFIER9
+instance Storable D3DADAPTER_IDENTIFIER9 where
+ sizeOf _ = (sizeOf (undefined::(Ptr Char)))+(sizeOf (undefined::(Ptr Char)))+(sizeOf (undefined::(Ptr Char)))+(sizeOf (undefined::(LARGE_INTEGER)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(GUID)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DADAPTER_IDENTIFIER9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >>= pokeHelp p12 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p11)
+  p12 <- peekByteOff b 0
+  return (D3DADAPTER_IDENTIFIER9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12)
+
+data D3DBOX = D3DBOX{ d3DBOX_Left :: !UINT,d3DBOX_Top :: !UINT,d3DBOX_Right :: !UINT,d3DBOX_Bottom :: !UINT,d3DBOX_Front :: !UINT,d3DBOX_Back :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DBOX = Ptr D3DBOX
+instance Storable D3DBOX where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DBOX p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DBOX p1 p2 p3 p4 p5 p6)
+
+data D3DCAPS9 = D3DCAPS9{ d3DCAPS9_DeviceType :: !D3DDEVTYPE,d3DCAPS9_AdapterOrdinal :: !UINT,d3DCAPS9_Caps :: !DWORD,d3DCAPS9_Caps2 :: !DWORD,d3DCAPS9_Caps3 :: !DWORD,d3DCAPS9_PresentationIntervals :: !DWORD,d3DCAPS9_CursorCaps :: !DWORD,d3DCAPS9_DevCaps :: !DWORD,d3DCAPS9_PrimitiveMiscCaps :: !DWORD,d3DCAPS9_RasterCaps :: !DWORD,d3DCAPS9_ZCmpCaps :: !DWORD,d3DCAPS9_SrcBlendCaps :: !DWORD,d3DCAPS9_DestBlendCaps :: !DWORD,d3DCAPS9_AlphaCmpCaps :: !DWORD,d3DCAPS9_ShadeCaps :: !DWORD,d3DCAPS9_TextureCaps :: !DWORD,d3DCAPS9_TextureFilterCaps :: !DWORD,d3DCAPS9_CubeTextureFilterCaps :: !DWORD,d3DCAPS9_VolumeTextureFilterCaps :: !DWORD,d3DCAPS9_TextureAddressCaps :: !DWORD,d3DCAPS9_VolumeTextureAddressCaps :: !DWORD,d3DCAPS9_LineCaps :: !DWORD,d3DCAPS9_MaxTextureWidth :: !DWORD,d3DCAPS9_MaxTextureHeight :: !DWORD,d3DCAPS9_MaxVolumeExtent :: !DWORD,d3DCAPS9_MaxTextureRepeat :: !DWORD,d3DCAPS9_MaxTextureAspectRatio :: !DWORD,d3DCAPS9_MaxAnisotropy :: !DWORD,d3DCAPS9_MaxVertexW :: !Float,d3DCAPS9_GuardBandLeft :: !Float,d3DCAPS9_GuardBandTop :: !Float,d3DCAPS9_GuardBandRight :: !Float,d3DCAPS9_GuardBandBottom :: !Float,d3DCAPS9_ExtentsAdjust :: !Float,d3DCAPS9_StencilCaps :: !DWORD,d3DCAPS9_FVFCaps :: !DWORD,d3DCAPS9_TextureOpCaps :: !DWORD,d3DCAPS9_MaxTextureBlendStages :: !DWORD,d3DCAPS9_MaxSimultaneousTextures :: !DWORD,d3DCAPS9_VertexProcessingCaps :: !DWORD,d3DCAPS9_MaxActiveLights :: !DWORD,d3DCAPS9_MaxUserClipPlanes :: !DWORD,d3DCAPS9_MaxVertexBlendMatrices :: !DWORD,d3DCAPS9_MaxVertexBlendMatrixIndex :: !DWORD,d3DCAPS9_MaxPointSize :: !Float,d3DCAPS9_MaxPrimitiveCount :: !DWORD,d3DCAPS9_MaxVertexIndex :: !DWORD,d3DCAPS9_MaxStreams :: !DWORD,d3DCAPS9_MaxStreamStride :: !DWORD,d3DCAPS9_VertexShaderVersion :: !DWORD,d3DCAPS9_MaxVertexShaderConst :: !DWORD,d3DCAPS9_PixelShaderVersion :: !DWORD,d3DCAPS9_PixelShader1xMaxValue :: !Float,d3DCAPS9_DevCaps2 :: !DWORD,d3DCAPS9_MaxNpatchTessellationLevel :: !Float,d3DCAPS9_MinAntialiasedLineWidth :: !Float,d3DCAPS9_MaxAntialiasedLineWidth :: !Float,d3DCAPS9_MasterAdapterOrdinal :: !UINT,d3DCAPS9_AdapterOrdinalInGroup :: !UINT,d3DCAPS9_NumberOfAdaptersInGroup :: !UINT,d3DCAPS9_DeclTypes :: !DWORD,d3DCAPS9_NumSimultaneousRTs :: !DWORD,d3DCAPS9_StretchRectFilterCaps :: !DWORD,d3DCAPS9_VS20Caps :: !D3DVSHADERCAPS2_0,d3DCAPS9_D3DPSHADERCAPS2_0 :: !D3DPSHADERCAPS2_0,d3DCAPS9_VertexTextureFilterCaps :: !DWORD,d3DCAPS9_MaxVShaderInstructionsExecuted :: !DWORD,d3DCAPS9_MaxPShaderInstructionsExecuted :: !DWORD,d3DCAPS9_MaxVertexShader30InstructionSlots :: !DWORD,d3DCAPS9_MaxPixelShader30InstructionSlots :: !DWORD,d3DCAPS9_Reserved2 :: !DWORD,d3DCAPS9_Reserved3 :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DCAPS9 = Ptr D3DCAPS9
+instance Storable D3DCAPS9 where
+ sizeOf _ = (sizeOf (undefined::(D3DDEVTYPE)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DVSHADERCAPS2_0)))+(sizeOf (undefined::(D3DPSHADERCAPS2_0)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DCAPS9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 p33 p34 p35 p36 p37 p38 p39 p40 p41 p42 p43 p44 p45 p46 p47 p48 p49 p50 p51 p52 p53 p54 p55 p56 p57 p58 p59 p60 p61 p62 p63 p64 p65 p66 p67 p68 p69 p70 p71 p72)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >>= pokeHelp p12 >>= pokeHelp p13 >>= pokeHelp p14 >>= pokeHelp p15 >>= pokeHelp p16 >>= pokeHelp p17 >>= pokeHelp p18 >>= pokeHelp p19 >>= pokeHelp p20 >>= pokeHelp p21 >>= pokeHelp p22 >>= pokeHelp p23 >>= pokeHelp p24 >>= pokeHelp p25 >>= pokeHelp p26 >>= pokeHelp p27 >>= pokeHelp p28 >>= pokeHelp p29 >>= pokeHelp p30 >>= pokeHelp p31 >>= pokeHelp p32 >>= pokeHelp p33 >>= pokeHelp p34 >>= pokeHelp p35 >>= pokeHelp p36 >>= pokeHelp p37 >>= pokeHelp p38 >>= pokeHelp p39 >>= pokeHelp p40 >>= pokeHelp p41 >>= pokeHelp p42 >>= pokeHelp p43 >>= pokeHelp p44 >>= pokeHelp p45 >>= pokeHelp p46 >>= pokeHelp p47 >>= pokeHelp p48 >>= pokeHelp p49 >>= pokeHelp p50 >>= pokeHelp p51 >>= pokeHelp p52 >>= pokeHelp p53 >>= pokeHelp p54 >>= pokeHelp p55 >>= pokeHelp p56 >>= pokeHelp p57 >>= pokeHelp p58 >>= pokeHelp p59 >>= pokeHelp p60 >>= pokeHelp p61 >>= pokeHelp p62 >>= pokeHelp p63 >>= pokeHelp p64 >>= pokeHelp p65 >>= pokeHelp p66 >>= pokeHelp p67 >>= pokeHelp p68 >>= pokeHelp p69 >>= pokeHelp p70 >>= pokeHelp p71 >>= pokeHelp p72 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p11)
+  p12 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p12)
+  p13 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p13)
+  p14 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p14)
+  p15 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p15)
+  p16 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p16)
+  p17 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p17)
+  p18 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p18)
+  p19 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p19)
+  p20 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p20)
+  p21 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p21)
+  p22 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p22)
+  p23 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p23)
+  p24 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p24)
+  p25 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p25)
+  p26 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p26)
+  p27 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p27)
+  p28 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p28)
+  p29 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p29)
+  p30 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p30)
+  p31 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p31)
+  p32 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p32)
+  p33 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p33)
+  p34 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p34)
+  p35 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p35)
+  p36 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p36)
+  p37 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p37)
+  p38 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p38)
+  p39 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p39)
+  p40 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p40)
+  p41 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p41)
+  p42 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p42)
+  p43 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p43)
+  p44 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p44)
+  p45 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p45)
+  p46 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p46)
+  p47 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p47)
+  p48 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p48)
+  p49 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p49)
+  p50 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p50)
+  p51 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p51)
+  p52 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p52)
+  p53 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p53)
+  p54 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p54)
+  p55 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p55)
+  p56 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p56)
+  p57 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p57)
+  p58 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p58)
+  p59 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p59)
+  p60 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p60)
+  p61 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p61)
+  p62 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p62)
+  p63 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p63)
+  p64 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p64)
+  p65 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p65)
+  p66 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p66)
+  p67 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p67)
+  p68 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p68)
+  p69 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p69)
+  p70 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p70)
+  p71 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p71)
+  p72 <- peekByteOff b 0
+  return (D3DCAPS9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 p33 p34 p35 p36 p37 p38 p39 p40 p41 p42 p43 p44 p45 p46 p47 p48 p49 p50 p51 p52 p53 p54 p55 p56 p57 p58 p59 p60 p61 p62 p63 p64 p65 p66 p67 p68 p69 p70 p71 p72)
+
+data D3DCLIPSTATUS9 = D3DCLIPSTATUS9{ d3DCLIPSTATUS9_ClipUnion :: !DWORD,d3DCLIPSTATUS9_ClipIntersection :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DCLIPSTATUS9 = Ptr D3DCLIPSTATUS9
+instance Storable D3DCLIPSTATUS9 where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DCLIPSTATUS9 p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DCLIPSTATUS9 p1 p2)
+
+data D3DCOLORVALUE = D3DCOLORVALUE{ d3DCOLORVALUE_r :: !Float,d3DCOLORVALUE_g :: !Float,d3DCOLORVALUE_b :: !Float,d3DCOLORVALUE_a :: !Float } deriving (Show,Eq,Ord)
+type LPD3DCOLORVALUE = Ptr D3DCOLORVALUE
+instance Storable D3DCOLORVALUE where
+ sizeOf _ = (sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))
+ alignment = const 1
+ poke b (D3DCOLORVALUE p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DCOLORVALUE p1 p2 p3 p4)
+
+data D3DDEVICE_CREATION_PARAMETERS = D3DDEVICE_CREATION_PARAMETERS{ d3DDEVICE_CREATION_PARAMETERS_AdapterOrdinal :: !UINT,d3DDEVICE_CREATION_PARAMETERS_DeviceType :: !D3DDEVTYPE,d3DDEVICE_CREATION_PARAMETERS_hFocusWindow :: !HWND,d3DDEVICE_CREATION_PARAMETERS_BehaviorFlags :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DDEVICE_CREATION_PARAMETERS = Ptr D3DDEVICE_CREATION_PARAMETERS
+instance Storable D3DDEVICE_CREATION_PARAMETERS where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DDEVTYPE)))+(sizeOf (undefined::(HWND)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DDEVICE_CREATION_PARAMETERS p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DDEVICE_CREATION_PARAMETERS p1 p2 p3 p4)
+
+data D3DDEVINFO_D3D9BANDWIDTHTIMINGS = D3DDEVINFO_D3D9BANDWIDTHTIMINGS{ d3DDEVINFO_D3D9BANDWIDTHTIMINGS_MaxBandwidthUtilized :: !FLOAT,d3DDEVINFO_D3D9BANDWIDTHTIMINGS_FrontEndUploadMemoryUtilizedPercent :: !FLOAT,d3DDEVINFO_D3D9BANDWIDTHTIMINGS_VertexRateUtilizedPercent :: !FLOAT,d3DDEVINFO_D3D9BANDWIDTHTIMINGS_TriangleSetupRateUtilizedPercent :: !FLOAT,d3DDEVINFO_D3D9BANDWIDTHTIMINGS_FillRateUtilizedPercent :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_D3D9BANDWIDTHTIMINGS = Ptr D3DDEVINFO_D3D9BANDWIDTHTIMINGS
+instance Storable D3DDEVINFO_D3D9BANDWIDTHTIMINGS where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DDEVINFO_D3D9BANDWIDTHTIMINGS p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DDEVINFO_D3D9BANDWIDTHTIMINGS p1 p2 p3 p4 p5)
+
+data D3DDEVINFO_D3D9CACHEUTILIZATION = D3DDEVINFO_D3D9CACHEUTILIZATION{ d3DDEVINFO_D3D9CACHEUTILIZATION_TextureCacheHitRate :: !FLOAT,d3DDEVINFO_D3D9CACHEUTILIZATION_PostTransformVertexCacheHitRate :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_D3D9CACHEUTILIZATION = Ptr D3DDEVINFO_D3D9CACHEUTILIZATION
+instance Storable D3DDEVINFO_D3D9CACHEUTILIZATION where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DDEVINFO_D3D9CACHEUTILIZATION p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DDEVINFO_D3D9CACHEUTILIZATION p1 p2)
+
+data D3DDEVINFO_D3D9INTERFACETIMINGS = D3DDEVINFO_D3D9INTERFACETIMINGS{ d3DDEVINFO_D3D9INTERFACETIMINGS_WaitingForGPUToUseApplicationResourceTimePercent :: !FLOAT,d3DDEVINFO_D3D9INTERFACETIMINGS_WaitingForGPUToAcceptMoreCommandsTimePercent :: !FLOAT,d3DDEVINFO_D3D9INTERFACETIMINGS_WaitingForGPUToStayWithinLatencyTimePercent :: !FLOAT,d3DDEVINFO_D3D9INTERFACETIMINGS_WaitingForGPUExclusiveResourceTimePercent :: !FLOAT,d3DDEVINFO_D3D9INTERFACETIMINGS_WaitingForGPUOtherTimePercent :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_D3D9INTERFACETIMINGS = Ptr D3DDEVINFO_D3D9INTERFACETIMINGS
+instance Storable D3DDEVINFO_D3D9INTERFACETIMINGS where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DDEVINFO_D3D9INTERFACETIMINGS p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DDEVINFO_D3D9INTERFACETIMINGS p1 p2 p3 p4 p5)
+
+data D3DDEVINFO_D3D9PIPELINETIMINGS = D3DDEVINFO_D3D9PIPELINETIMINGS{ d3DDEVINFO_D3D9PIPELINETIMINGS_VertexProcessingTimePercent :: !FLOAT,d3DDEVINFO_D3D9PIPELINETIMINGS_PixelProcessingTimePercent :: !FLOAT,d3DDEVINFO_D3D9PIPELINETIMINGS_OtherGPUProcessingTimePercent :: !FLOAT,d3DDEVINFO_D3D9PIPELINETIMINGS_GPUIdleTimePercent :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_D3D9PIPELINETIMINGS = Ptr D3DDEVINFO_D3D9PIPELINETIMINGS
+instance Storable D3DDEVINFO_D3D9PIPELINETIMINGS where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DDEVINFO_D3D9PIPELINETIMINGS p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DDEVINFO_D3D9PIPELINETIMINGS p1 p2 p3 p4)
+
+data D3DDEVINFO_D3D9STAGETIMINGS = D3DDEVINFO_D3D9STAGETIMINGS{ d3DDEVINFO_D3D9STAGETIMINGS_MemoryProcessingPercent :: !FLOAT,d3DDEVINFO_D3D9STAGETIMINGS_ComputationProcessingPercent :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_D3D9STAGETIMINGS = Ptr D3DDEVINFO_D3D9STAGETIMINGS
+instance Storable D3DDEVINFO_D3D9STAGETIMINGS where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DDEVINFO_D3D9STAGETIMINGS p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DDEVINFO_D3D9STAGETIMINGS p1 p2)
+
+data D3DDEVINFO_ResourceManager = D3DDEVINFO_ResourceManager{ d3DDEVINFO_ResourceManager_stats :: !(Ptr D3DRESOURCESTATS) } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_ResourceManager = Ptr D3DDEVINFO_ResourceManager
+instance Storable D3DDEVINFO_ResourceManager where
+ sizeOf _ = (sizeOf (undefined::(Ptr D3DRESOURCESTATS)))
+ alignment = const 1
+ poke b (D3DDEVINFO_ResourceManager p1)
+  = return b >>= pokeHelp p1 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  return (D3DDEVINFO_ResourceManager p1)
+
+data D3DDEVINFO_VCACHE = D3DDEVINFO_VCACHE{ d3DDEVINFO_VCACHE_Pattern :: !DWORD,d3DDEVINFO_VCACHE_OptMethod :: !DWORD,d3DDEVINFO_VCACHE_CacheSize :: !DWORD,d3DDEVINFO_VCACHE_MagicNumber :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DDEVINFO_VCACHE = Ptr D3DDEVINFO_VCACHE
+instance Storable D3DDEVINFO_VCACHE where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DDEVINFO_VCACHE p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DDEVINFO_VCACHE p1 p2 p3 p4)
+
+data D3DDISPLAYMODE = D3DDISPLAYMODE{ d3DDISPLAYMODE_Width :: !UINT,d3DDISPLAYMODE_Height :: !UINT,d3DDISPLAYMODE_RefreshRate :: !UINT,d3DDISPLAYMODE_Format :: !D3DFORMAT } deriving (Show,Eq,Ord)
+type LPD3DDISPLAYMODE = Ptr D3DDISPLAYMODE
+instance Storable D3DDISPLAYMODE where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DFORMAT)))
+ alignment = const 1
+ poke b (D3DDISPLAYMODE p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DDISPLAYMODE p1 p2 p3 p4)
+
+data D3DGAMMARAMP = D3DGAMMARAMP{ d3DGAMMARAMP_red :: !(Ptr WORD),d3DGAMMARAMP_green :: !(Ptr WORD),d3DGAMMARAMP_blue :: !(Ptr WORD) } deriving (Show,Eq,Ord)
+type LPD3DGAMMARAMP = Ptr D3DGAMMARAMP
+instance Storable D3DGAMMARAMP where
+ sizeOf _ = (sizeOf (undefined::(Ptr WORD)))+(sizeOf (undefined::(Ptr WORD)))+(sizeOf (undefined::(Ptr WORD)))
+ alignment = const 1
+ poke b (D3DGAMMARAMP p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DGAMMARAMP p1 p2 p3)
+
+data D3DINDEXBUFFER_DESC = D3DINDEXBUFFER_DESC{ d3DINDEXBUFFER_DESC_Format :: !D3DFORMAT,d3DINDEXBUFFER_DESC_Type :: !D3DRESOURCETYPE,d3DINDEXBUFFER_DESC_Usage :: !DWORD,d3DINDEXBUFFER_DESC_Pool :: !D3DPOOL,d3DINDEXBUFFER_DESC_Size :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DINDEXBUFFER_DESC = Ptr D3DINDEXBUFFER_DESC
+instance Storable D3DINDEXBUFFER_DESC where
+ sizeOf _ = (sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(D3DRESOURCETYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DPOOL)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DINDEXBUFFER_DESC p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DINDEXBUFFER_DESC p1 p2 p3 p4 p5)
+
+data D3DLIGHT9 = D3DLIGHT9{ d3DLIGHT9_Type :: !D3DLIGHTTYPE,d3DLIGHT9_Diffuse :: !D3DCOLORVALUE,d3DLIGHT9_Specular :: !D3DCOLORVALUE,d3DLIGHT9_Ambient :: !D3DCOLORVALUE,d3DLIGHT9_Position :: !D3DVECTOR,d3DLIGHT9_Direction :: !D3DVECTOR,d3DLIGHT9_Range :: !Float,d3DLIGHT9_Falloff :: !Float,d3DLIGHT9_Attenuation0 :: !Float,d3DLIGHT9_Attenuation1 :: !Float,d3DLIGHT9_Attenuation2 :: !Float,d3DLIGHT9_Theta :: !Float,d3DLIGHT9_Phi :: !Float } deriving (Show,Eq,Ord)
+type LPD3DLIGHT9 = Ptr D3DLIGHT9
+instance Storable D3DLIGHT9 where
+ sizeOf _ = (sizeOf (undefined::(D3DLIGHTTYPE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DVECTOR)))+(sizeOf (undefined::(D3DVECTOR)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))
+ alignment = const 1
+ poke b (D3DLIGHT9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >>= pokeHelp p12 >>= pokeHelp p13 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p11)
+  p12 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p12)
+  p13 <- peekByteOff b 0
+  return (D3DLIGHT9 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13)
+
+data D3DLOCKED_BOX = D3DLOCKED_BOX{ d3DLOCKED_BOX_RowPitch :: !Int,d3DLOCKED_BOX_SlicePitch :: !Int,d3DLOCKED_BOX_pBits :: !(Ptr ()) } deriving (Show,Eq,Ord)
+type LPD3DLOCKED_BOX = Ptr D3DLOCKED_BOX
+instance Storable D3DLOCKED_BOX where
+ sizeOf _ = (sizeOf (undefined::(Int)))+(sizeOf (undefined::(Int)))+(sizeOf (undefined::(Ptr ())))
+ alignment = const 1
+ poke b (D3DLOCKED_BOX p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DLOCKED_BOX p1 p2 p3)
+
+data D3DLOCKED_RECT = D3DLOCKED_RECT{ d3DLOCKED_RECT_Pitch :: !INT,d3DLOCKED_RECT_pBits :: !(Ptr ()) } deriving (Show,Eq,Ord)
+type LPD3DLOCKED_RECT = Ptr D3DLOCKED_RECT
+instance Storable D3DLOCKED_RECT where
+ sizeOf _ = (sizeOf (undefined::(INT)))+(sizeOf (undefined::(Ptr ())))
+ alignment = const 1
+ poke b (D3DLOCKED_RECT p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DLOCKED_RECT p1 p2)
+
+data D3DMATERIAL9 = D3DMATERIAL9{ d3DMATERIAL9_Diffuse :: !D3DCOLORVALUE,d3DMATERIAL9_Ambient :: !D3DCOLORVALUE,d3DMATERIAL9_Specular :: !D3DCOLORVALUE,d3DMATERIAL9_Emissive :: !D3DCOLORVALUE,d3DMATERIAL9_Power :: !Float } deriving (Show,Eq,Ord)
+type LPD3DMATERIAL9 = Ptr D3DMATERIAL9
+instance Storable D3DMATERIAL9 where
+ sizeOf _ = (sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(Float)))
+ alignment = const 1
+ poke b (D3DMATERIAL9 p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DMATERIAL9 p1 p2 p3 p4 p5)
+
+data D3DPRESENT_PARAMETERS = D3DPRESENT_PARAMETERS{ d3DPRESENT_PARAMETERS_BackBufferWidth :: !UINT,d3DPRESENT_PARAMETERS_BackBufferHeight :: !UINT,d3DPRESENT_PARAMETERS_BackBufferFormat :: !D3DFORMAT,d3DPRESENT_PARAMETERS_BackBufferCount :: !UINT,d3DPRESENT_PARAMETERS_MultiSampleType :: !D3DMULTISAMPLE_TYPE,d3DPRESENT_PARAMETERS_MultiSampleQuality :: !DWORD,d3DPRESENT_PARAMETERS_SwapEffect :: !D3DSWAPEFFECT,d3DPRESENT_PARAMETERS_hDeviceWindow :: !HWND,d3DPRESENT_PARAMETERS_Windowed :: !BOOL,d3DPRESENT_PARAMETERS_EnableAutoDepthStencil :: !BOOL,d3DPRESENT_PARAMETERS_AutoDepthStencilFormat :: !D3DFORMAT,d3DPRESENT_PARAMETERS_Flags :: !DWORD,d3DPRESENT_PARAMETERS_FullScreen_RefreshRateInHz :: !UINT,d3DPRESENT_PARAMETERS_PresentationInterval :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DPRESENT_PARAMETERS = Ptr D3DPRESENT_PARAMETERS
+instance Storable D3DPRESENT_PARAMETERS where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DMULTISAMPLE_TYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DSWAPEFFECT)))+(sizeOf (undefined::(HWND)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DPRESENT_PARAMETERS p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >>= pokeHelp p12 >>= pokeHelp p13 >>= pokeHelp p14 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p11)
+  p12 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p12)
+  p13 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p13)
+  p14 <- peekByteOff b 0
+  return (D3DPRESENT_PARAMETERS p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14)
+
+data D3DPSHADERCAPS2_0 = D3DPSHADERCAPS2_0{ d3DPSHADERCAPS2_0_Caps :: !DWORD,d3DPSHADERCAPS2_0_DynamicFlowControlDepth :: !INT,d3DPSHADERCAPS2_0_NumTemps :: !INT,d3DPSHADERCAPS2_0_StaticFlowControlDepth :: !INT,d3DPSHADERCAPS2_0_NumInstructionSlots :: !INT } deriving (Show,Eq,Ord)
+type LPD3DPSHADERCAPS2_0 = Ptr D3DPSHADERCAPS2_0
+instance Storable D3DPSHADERCAPS2_0 where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(INT)))+(sizeOf (undefined::(INT)))+(sizeOf (undefined::(INT)))+(sizeOf (undefined::(INT)))
+ alignment = const 1
+ poke b (D3DPSHADERCAPS2_0 p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DPSHADERCAPS2_0 p1 p2 p3 p4 p5)
+
+data D3DRANGE = D3DRANGE{ d3DRANGE_Offset :: !UINT,d3DRANGE_Size :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DRANGE = Ptr D3DRANGE
+instance Storable D3DRANGE where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DRANGE p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DRANGE p1 p2)
+
+data D3DRASTER_STATUS = D3DRASTER_STATUS{ d3DRASTER_STATUS_InVBlank :: !BOOL,d3DRASTER_STATUS_ScanLine :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DRASTER_STATUS = Ptr D3DRASTER_STATUS
+instance Storable D3DRASTER_STATUS where
+ sizeOf _ = (sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DRASTER_STATUS p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DRASTER_STATUS p1 p2)
+
+data D3DRECT = D3DRECT{ d3DRECT_x1 :: !LONG,d3DRECT_y1 :: !LONG,d3DRECT_x2 :: !LONG,d3DRECT_y2 :: !LONG } deriving (Show,Eq,Ord)
+type LPD3DRECT = Ptr D3DRECT
+instance Storable D3DRECT where
+ sizeOf _ = (sizeOf (undefined::(LONG)))+(sizeOf (undefined::(LONG)))+(sizeOf (undefined::(LONG)))+(sizeOf (undefined::(LONG)))
+ alignment = const 1
+ poke b (D3DRECT p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DRECT p1 p2 p3 p4)
+
+data D3DRECTPATCH_INFO = D3DRECTPATCH_INFO{ d3DRECTPATCH_INFO_StartVertexOffsetWidth :: !UINT,d3DRECTPATCH_INFO_StartVertexOffsetHeight :: !UINT,d3DRECTPATCH_INFO_Width :: !UINT,d3DRECTPATCH_INFO_Height :: !UINT,d3DRECTPATCH_INFO_Stride :: !UINT,d3DRECTPATCH_INFO_Basis :: !D3DBASISTYPE,d3DRECTPATCH_INFO_Degree :: !D3DDEGREETYPE } deriving (Show,Eq,Ord)
+type LPD3DRECTPATCH_INFO = Ptr D3DRECTPATCH_INFO
+instance Storable D3DRECTPATCH_INFO where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DBASISTYPE)))+(sizeOf (undefined::(D3DDEGREETYPE)))
+ alignment = const 1
+ poke b (D3DRECTPATCH_INFO p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DRECTPATCH_INFO p1 p2 p3 p4 p5 p6 p7)
+
+data D3DRESOURCESTATS = D3DRESOURCESTATS{ d3DRESOURCESTATS_bThrashing :: !BOOL,d3DRESOURCESTATS_ApproxBytesDownloaded :: !DWORD,d3DRESOURCESTATS_NumEvicts :: !DWORD,d3DRESOURCESTATS_NumVidCreates :: !DWORD,d3DRESOURCESTATS_LastPri :: !DWORD,d3DRESOURCESTATS_NumUsed :: !DWORD,d3DRESOURCESTATS_NumUsedInVidMem :: !DWORD,d3DRESOURCESTATS_WorkingSet :: !DWORD,d3DRESOURCESTATS_WorkingSetBytes :: !DWORD,d3DRESOURCESTATS_TotalManaged :: !DWORD,d3DRESOURCESTATS_TotalBytes :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DRESOURCESTATS = Ptr D3DRESOURCESTATS
+instance Storable D3DRESOURCESTATS where
+ sizeOf _ = (sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DRESOURCESTATS p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  return (D3DRESOURCESTATS p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11)
+
+data D3DSURFACE_DESC = D3DSURFACE_DESC{ d3DSURFACE_DESC_Format :: !D3DFORMAT,d3DSURFACE_DESC_Type :: !D3DRESOURCETYPE,d3DSURFACE_DESC_Usage :: !DWORD,d3DSURFACE_DESC_Pool :: !D3DPOOL,d3DSURFACE_DESC_MultiSampleType :: !D3DMULTISAMPLE_TYPE,d3DSURFACE_DESC_MultiSampleQuality :: !DWORD,d3DSURFACE_DESC_Width :: !UINT,d3DSURFACE_DESC_Height :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DSURFACE_DESC = Ptr D3DSURFACE_DESC
+instance Storable D3DSURFACE_DESC where
+ sizeOf _ = (sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(D3DRESOURCETYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DPOOL)))+(sizeOf (undefined::(D3DMULTISAMPLE_TYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DSURFACE_DESC p1 p2 p3 p4 p5 p6 p7 p8)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  return (D3DSURFACE_DESC p1 p2 p3 p4 p5 p6 p7 p8)
+
+data D3DTRIPATCH_INFO = D3DTRIPATCH_INFO{ d3DTRIPATCH_INFO_StartVertexOffset :: !UINT,d3DTRIPATCH_INFO_NumVertices :: !UINT,d3DTRIPATCH_INFO_Basis :: !D3DBASISTYPE,d3DTRIPATCH_INFO_Degree :: !D3DDEGREETYPE } deriving (Show,Eq,Ord)
+type LPD3DTRIPATCH_INFO = Ptr D3DTRIPATCH_INFO
+instance Storable D3DTRIPATCH_INFO where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DBASISTYPE)))+(sizeOf (undefined::(D3DDEGREETYPE)))
+ alignment = const 1
+ poke b (D3DTRIPATCH_INFO p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DTRIPATCH_INFO p1 p2 p3 p4)
+
+data D3DVECTOR = D3DVECTOR{ d3DVECTOR_x :: !Float,d3DVECTOR_y :: !Float,d3DVECTOR_z :: !Float } deriving (Show,Eq,Ord)
+type LPD3DVECTOR = Ptr D3DVECTOR
+instance Storable D3DVECTOR where
+ sizeOf _ = (sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))
+ alignment = const 1
+ poke b (D3DVECTOR p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DVECTOR p1 p2 p3)
+
+data D3DVERTEXBUFFER_DESC = D3DVERTEXBUFFER_DESC{ d3DVERTEXBUFFER_DESC_Format :: !D3DFORMAT,d3DVERTEXBUFFER_DESC_Type :: !D3DRESOURCETYPE,d3DVERTEXBUFFER_DESC_Usage :: !DWORD,d3DVERTEXBUFFER_DESC_Pool :: !D3DPOOL,d3DVERTEXBUFFER_DESC_Size :: !UINT,d3DVERTEXBUFFER_DESC_FVF :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DVERTEXBUFFER_DESC = Ptr D3DVERTEXBUFFER_DESC
+instance Storable D3DVERTEXBUFFER_DESC where
+ sizeOf _ = (sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(D3DRESOURCETYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DPOOL)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DVERTEXBUFFER_DESC p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DVERTEXBUFFER_DESC p1 p2 p3 p4 p5 p6)
+
+data D3DVERTEXELEMENT9 = D3DVERTEXELEMENT9{ d3DVERTEXELEMENT9_Stream :: !WORD,d3DVERTEXELEMENT9_Offset :: !WORD,d3DVERTEXELEMENT9_Type :: !BYTE,d3DVERTEXELEMENT9_Method :: !BYTE,d3DVERTEXELEMENT9_Usage :: !BYTE,d3DVERTEXELEMENT9_UsageIndex :: !BYTE } deriving (Show,Eq,Ord)
+type LPD3DVERTEXELEMENT9 = Ptr D3DVERTEXELEMENT9
+instance Storable D3DVERTEXELEMENT9 where
+ sizeOf _ = (sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))
+ alignment = const 1
+ poke b (D3DVERTEXELEMENT9 p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DVERTEXELEMENT9 p1 p2 p3 p4 p5 p6)
+
+data D3DVIEWPORT9 = D3DVIEWPORT9{ d3DVIEWPORT9_X :: !DWORD,d3DVIEWPORT9_Y :: !DWORD,d3DVIEWPORT9_Width :: !DWORD,d3DVIEWPORT9_Height :: !DWORD,d3DVIEWPORT9_MinZ :: !Float,d3DVIEWPORT9_MaxZ :: !Float } deriving (Show,Eq,Ord)
+type LPD3DVIEWPORT9 = Ptr D3DVIEWPORT9
+instance Storable D3DVIEWPORT9 where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Float)))+(sizeOf (undefined::(Float)))
+ alignment = const 1
+ poke b (D3DVIEWPORT9 p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DVIEWPORT9 p1 p2 p3 p4 p5 p6)
+
+data D3DVOLUME_DESC = D3DVOLUME_DESC{ d3DVOLUME_DESC_Format :: !D3DFORMAT,d3DVOLUME_DESC_Type :: !D3DRESOURCETYPE,d3DVOLUME_DESC_Usage :: !DWORD,d3DVOLUME_DESC_Pool :: !D3DPOOL,d3DVOLUME_DESC_Width :: !UINT,d3DVOLUME_DESC_Height :: !UINT,d3DVOLUME_DESC_Depth :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DVOLUME_DESC = Ptr D3DVOLUME_DESC
+instance Storable D3DVOLUME_DESC where
+ sizeOf _ = (sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(D3DRESOURCETYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(D3DPOOL)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DVOLUME_DESC p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DVOLUME_DESC p1 p2 p3 p4 p5 p6 p7)
+
+data D3DVSHADERCAPS2_0 = D3DVSHADERCAPS2_0{ d3DVSHADERCAPS2_0_Caps :: !DWORD,d3DVSHADERCAPS2_0_DynamicFlowControlDepth :: !INT,d3DVSHADERCAPS2_0_NumTemps :: !INT,d3DVSHADERCAPS2_0_StaticFlowControlDepth :: !INT } deriving (Show,Eq,Ord)
+type LPD3DVSHADERCAPS2_0 = Ptr D3DVSHADERCAPS2_0
+instance Storable D3DVSHADERCAPS2_0 where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(INT)))+(sizeOf (undefined::(INT)))+(sizeOf (undefined::(INT)))
+ alignment = const 1
+ poke b (D3DVSHADERCAPS2_0 p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DVSHADERCAPS2_0 p1 p2 p3 p4)
+
+data PALETTEENTRY = PALETTEENTRY{ pALETTEENTRY_peRed :: !BYTE,pALETTEENTRY_peGreen :: !BYTE,pALETTEENTRY_peBlue :: !BYTE,pALETTEENTRY_peFlags :: !BYTE } deriving (Show,Eq,Ord)
+type LPPALETTEENTRY = Ptr PALETTEENTRY
+instance Storable PALETTEENTRY where
+ sizeOf _ = (sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))
+ alignment = const 1
+ poke b (PALETTEENTRY p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (PALETTEENTRY p1 p2 p3 p4)
+
+data IDirect3D9 = IDirect3D9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3D9_CheckDepthStencilMatch"
+  c_IDirect3D9_CheckDepthStencilMatch::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> D3DFORMAT -> D3DFORMAT -> D3DFORMAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_CheckDeviceFormat"
+  c_IDirect3D9_CheckDeviceFormat::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> D3DFORMAT -> DWORD -> D3DRESOURCETYPE -> D3DFORMAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_CheckDeviceFormatConversion"
+  c_IDirect3D9_CheckDeviceFormatConversion::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> D3DFORMAT -> D3DFORMAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_CheckDeviceMultiSampleType"
+  c_IDirect3D9_CheckDeviceMultiSampleType::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> D3DFORMAT -> BOOL -> D3DMULTISAMPLE_TYPE -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_CheckDeviceType"
+  c_IDirect3D9_CheckDeviceType::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> D3DFORMAT -> D3DFORMAT -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_CreateDevice"
+  c_IDirect3D9_CreateDevice::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> HWND -> DWORD -> Ptr D3DPRESENT_PARAMETERS -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_EnumAdapterModes"
+  c_IDirect3D9_EnumAdapterModes::Ptr IDirect3D9 -> UINT -> D3DFORMAT -> UINT -> Ptr D3DDISPLAYMODE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetAdapterCount"
+  c_IDirect3D9_GetAdapterCount::Ptr IDirect3D9 -> IO UINT
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetAdapterDisplayMode"
+  c_IDirect3D9_GetAdapterDisplayMode::Ptr IDirect3D9 -> UINT -> Ptr D3DDISPLAYMODE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetAdapterIdentifier"
+  c_IDirect3D9_GetAdapterIdentifier::Ptr IDirect3D9 -> UINT -> DWORD -> Ptr D3DADAPTER_IDENTIFIER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetAdapterModeCount"
+  c_IDirect3D9_GetAdapterModeCount::Ptr IDirect3D9 -> UINT -> D3DFORMAT -> IO UINT
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetAdapterMonitor"
+  c_IDirect3D9_GetAdapterMonitor::Ptr IDirect3D9 -> UINT -> IO HMONITOR
+foreign import ccall unsafe "fake.h c_IDirect3D9_GetDeviceCaps"
+  c_IDirect3D9_GetDeviceCaps::Ptr IDirect3D9 -> UINT -> D3DDEVTYPE -> Ptr D3DCAPS9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3D9_RegisterSoftwareDevice"
+  c_IDirect3D9_RegisterSoftwareDevice::Ptr IDirect3D9 -> Ptr () -> IO HRESULT
+type LPIDirect3D9 = Ptr IDirect3D9
+type LPDIRECT3D9 = Ptr IDirect3D9
+
+
+data IDirect3DDevice9 = IDirect3DDevice9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_BeginScene"
+  c_IDirect3DDevice9_BeginScene::Ptr IDirect3DDevice9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_BeginStateBlock"
+  c_IDirect3DDevice9_BeginStateBlock::Ptr IDirect3DDevice9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_Clear"
+  c_IDirect3DDevice9_Clear::Ptr IDirect3DDevice9 -> DWORD -> Ptr D3DRECT -> DWORD -> D3DCOLOR -> Float -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_ColorFill"
+  c_IDirect3DDevice9_ColorFill::Ptr IDirect3DDevice9 -> Ptr IDirect3DSurface9 -> Ptr RECT -> D3DCOLOR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateAdditionalSwapChain"
+  c_IDirect3DDevice9_CreateAdditionalSwapChain::Ptr IDirect3DDevice9 -> Ptr D3DPRESENT_PARAMETERS -> Ptr (Ptr IDirect3DSwapChain9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateCubeTexture"
+  c_IDirect3DDevice9_CreateCubeTexture::Ptr IDirect3DDevice9 -> UINT -> UINT -> DWORD -> D3DFORMAT -> D3DPOOL -> Ptr (Ptr IDirect3DCubeTexture9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateDepthStencilSurface"
+  c_IDirect3DDevice9_CreateDepthStencilSurface::Ptr IDirect3DDevice9 -> UINT -> UINT -> D3DFORMAT -> D3DMULTISAMPLE_TYPE -> DWORD -> BOOL -> Ptr (Ptr IDirect3DSurface9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateIndexBuffer"
+  c_IDirect3DDevice9_CreateIndexBuffer::Ptr IDirect3DDevice9 -> UINT -> DWORD -> D3DFORMAT -> D3DPOOL -> Ptr (Ptr IDirect3DIndexBuffer9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateOffscreenPlainSurface"
+  c_IDirect3DDevice9_CreateOffscreenPlainSurface::Ptr IDirect3DDevice9 -> UINT -> UINT -> D3DFORMAT -> DWORD -> Ptr (Ptr IDirect3DSurface9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreatePixelShader"
+  c_IDirect3DDevice9_CreatePixelShader::Ptr IDirect3DDevice9 -> Ptr DWORD -> Ptr (Ptr IDirect3DPixelShader9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateQuery"
+  c_IDirect3DDevice9_CreateQuery::Ptr IDirect3DDevice9 -> D3DQUERYTYPE -> Ptr (Ptr IDirect3DQuery9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateRenderTarget"
+  c_IDirect3DDevice9_CreateRenderTarget::Ptr IDirect3DDevice9 -> UINT -> UINT -> D3DFORMAT -> D3DMULTISAMPLE_TYPE -> DWORD -> BOOL -> Ptr (Ptr IDirect3DSurface9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateStateBlock"
+  c_IDirect3DDevice9_CreateStateBlock::Ptr IDirect3DDevice9 -> D3DSTATEBLOCKTYPE -> Ptr (Ptr IDirect3DStateBlock9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateTexture"
+  c_IDirect3DDevice9_CreateTexture::Ptr IDirect3DDevice9 -> UINT -> UINT -> UINT -> DWORD -> D3DFORMAT -> D3DPOOL -> Ptr (Ptr IDirect3DTexture9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateVertexBuffer"
+  c_IDirect3DDevice9_CreateVertexBuffer::Ptr IDirect3DDevice9 -> UINT -> DWORD -> DWORD -> D3DPOOL -> Ptr (Ptr IDirect3DVertexBuffer9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateVertexDeclaration"
+  c_IDirect3DDevice9_CreateVertexDeclaration::Ptr IDirect3DDevice9 -> Ptr D3DVERTEXELEMENT9 -> Ptr (Ptr IDirect3DVertexDeclaration9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateVertexShader"
+  c_IDirect3DDevice9_CreateVertexShader::Ptr IDirect3DDevice9 -> Ptr DWORD -> Ptr (Ptr IDirect3DVertexShader9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_CreateVolumeTexture"
+  c_IDirect3DDevice9_CreateVolumeTexture::Ptr IDirect3DDevice9 -> UINT -> UINT -> UINT -> UINT -> DWORD -> D3DFORMAT -> D3DPOOL -> Ptr (Ptr IDirect3DVolumeTexture9) -> Ptr HANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DeletePatch"
+  c_IDirect3DDevice9_DeletePatch::Ptr IDirect3DDevice9 -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawIndexedPrimitive"
+  c_IDirect3DDevice9_DrawIndexedPrimitive::Ptr IDirect3DDevice9 -> D3DPRIMITIVETYPE -> INT -> UINT -> UINT -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawIndexedPrimitiveUP"
+  c_IDirect3DDevice9_DrawIndexedPrimitiveUP::Ptr IDirect3DDevice9 -> D3DPRIMITIVETYPE -> UINT -> UINT -> UINT -> Ptr () -> D3DFORMAT -> Ptr () -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawPrimitive"
+  c_IDirect3DDevice9_DrawPrimitive::Ptr IDirect3DDevice9 -> D3DPRIMITIVETYPE -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawPrimitiveUP"
+  c_IDirect3DDevice9_DrawPrimitiveUP::Ptr IDirect3DDevice9 -> D3DPRIMITIVETYPE -> UINT -> Ptr () -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawRectPatch"
+  c_IDirect3DDevice9_DrawRectPatch::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> Ptr D3DRECTPATCH_INFO -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_DrawTriPatch"
+  c_IDirect3DDevice9_DrawTriPatch::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> Ptr D3DTRIPATCH_INFO -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_EndScene"
+  c_IDirect3DDevice9_EndScene::Ptr IDirect3DDevice9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_EndStateBlock"
+  c_IDirect3DDevice9_EndStateBlock::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DStateBlock9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_EvictManagedResources"
+  c_IDirect3DDevice9_EvictManagedResources::Ptr IDirect3DDevice9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetAvailableTextureMem"
+  c_IDirect3DDevice9_GetAvailableTextureMem::Ptr IDirect3DDevice9 -> IO UINT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetBackBuffer"
+  c_IDirect3DDevice9_GetBackBuffer::Ptr IDirect3DDevice9 -> UINT -> UINT -> D3DBACKBUFFER_TYPE -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetClipPlane"
+  c_IDirect3DDevice9_GetClipPlane::Ptr IDirect3DDevice9 -> DWORD -> Ptr Float -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetClipStatus"
+  c_IDirect3DDevice9_GetClipStatus::Ptr IDirect3DDevice9 -> Ptr D3DCLIPSTATUS9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetCreationParameters"
+  c_IDirect3DDevice9_GetCreationParameters::Ptr IDirect3DDevice9 -> Ptr D3DDEVICE_CREATION_PARAMETERS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetCurrentTexturePalette"
+  c_IDirect3DDevice9_GetCurrentTexturePalette::Ptr IDirect3DDevice9 -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetDepthStencilSurface"
+  c_IDirect3DDevice9_GetDepthStencilSurface::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetDeviceCaps"
+  c_IDirect3DDevice9_GetDeviceCaps::Ptr IDirect3DDevice9 -> Ptr D3DCAPS9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetDirect3D"
+  c_IDirect3DDevice9_GetDirect3D::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3D9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetDisplayMode"
+  c_IDirect3DDevice9_GetDisplayMode::Ptr IDirect3DDevice9 -> UINT -> Ptr D3DDISPLAYMODE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetFrontBufferData"
+  c_IDirect3DDevice9_GetFrontBufferData::Ptr IDirect3DDevice9 -> UINT -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetFVF"
+  c_IDirect3DDevice9_GetFVF::Ptr IDirect3DDevice9 -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetGammaRamp"
+  c_IDirect3DDevice9_GetGammaRamp::Ptr IDirect3DDevice9 -> UINT -> Ptr D3DGAMMARAMP -> IO ()
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetIndices"
+  c_IDirect3DDevice9_GetIndices::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DIndexBuffer9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetLight"
+  c_IDirect3DDevice9_GetLight::Ptr IDirect3DDevice9 -> DWORD -> Ptr D3DLIGHT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetLightEnable"
+  c_IDirect3DDevice9_GetLightEnable::Ptr IDirect3DDevice9 -> DWORD -> Ptr BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetMaterial"
+  c_IDirect3DDevice9_GetMaterial::Ptr IDirect3DDevice9 -> Ptr D3DMATERIAL9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetNPatchMode"
+  c_IDirect3DDevice9_GetNPatchMode::Ptr IDirect3DDevice9 -> IO FLOAT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetNumberOfSwapChains"
+  c_IDirect3DDevice9_GetNumberOfSwapChains::Ptr IDirect3DDevice9 -> IO UINT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetPaletteEntries"
+  c_IDirect3DDevice9_GetPaletteEntries::Ptr IDirect3DDevice9 -> UINT -> Ptr PALETTEENTRY -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetPixelShader"
+  c_IDirect3DDevice9_GetPixelShader::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DPixelShader9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetPixelShaderConstantB"
+  c_IDirect3DDevice9_GetPixelShaderConstantB::Ptr IDirect3DDevice9 -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetPixelShaderConstantF"
+  c_IDirect3DDevice9_GetPixelShaderConstantF::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetPixelShaderConstantI"
+  c_IDirect3DDevice9_GetPixelShaderConstantI::Ptr IDirect3DDevice9 -> UINT -> Ptr Int -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetRasterStatus"
+  c_IDirect3DDevice9_GetRasterStatus::Ptr IDirect3DDevice9 -> UINT -> Ptr D3DRASTER_STATUS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetRenderState"
+  c_IDirect3DDevice9_GetRenderState::Ptr IDirect3DDevice9 -> D3DRENDERSTATETYPE -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetRenderTarget"
+  c_IDirect3DDevice9_GetRenderTarget::Ptr IDirect3DDevice9 -> DWORD -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetRenderTargetData"
+  c_IDirect3DDevice9_GetRenderTargetData::Ptr IDirect3DDevice9 -> Ptr IDirect3DSurface9 -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetSamplerState"
+  c_IDirect3DDevice9_GetSamplerState::Ptr IDirect3DDevice9 -> DWORD -> D3DSAMPLERSTATETYPE -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetScissorRect"
+  c_IDirect3DDevice9_GetScissorRect::Ptr IDirect3DDevice9 -> Ptr RECT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetSoftwareVertexProcessing"
+  c_IDirect3DDevice9_GetSoftwareVertexProcessing::Ptr IDirect3DDevice9 -> IO BOOL
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetStreamSource"
+  c_IDirect3DDevice9_GetStreamSource::Ptr IDirect3DDevice9 -> UINT -> Ptr (Ptr IDirect3DVertexBuffer9) -> Ptr UINT -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetStreamSourceFreq"
+  c_IDirect3DDevice9_GetStreamSourceFreq::Ptr IDirect3DDevice9 -> UINT -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetSwapChain"
+  c_IDirect3DDevice9_GetSwapChain::Ptr IDirect3DDevice9 -> UINT -> Ptr (Ptr IDirect3DSwapChain9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetTexture"
+  c_IDirect3DDevice9_GetTexture::Ptr IDirect3DDevice9 -> DWORD -> Ptr (Ptr IDirect3DBaseTexture9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetTextureStageState"
+  c_IDirect3DDevice9_GetTextureStageState::Ptr IDirect3DDevice9 -> DWORD -> D3DTEXTURESTAGESTATETYPE -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetTransform"
+  c_IDirect3DDevice9_GetTransform::Ptr IDirect3DDevice9 -> D3DTRANSFORMSTATETYPE -> Ptr D3DMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetVertexDeclaration"
+  c_IDirect3DDevice9_GetVertexDeclaration::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DVertexDeclaration9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetVertexShader"
+  c_IDirect3DDevice9_GetVertexShader::Ptr IDirect3DDevice9 -> Ptr (Ptr IDirect3DVertexShader9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetVertexShaderConstantB"
+  c_IDirect3DDevice9_GetVertexShaderConstantB::Ptr IDirect3DDevice9 -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetVertexShaderConstantF"
+  c_IDirect3DDevice9_GetVertexShaderConstantF::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetVertexShaderConstantI"
+  c_IDirect3DDevice9_GetVertexShaderConstantI::Ptr IDirect3DDevice9 -> UINT -> Ptr Int -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_GetViewport"
+  c_IDirect3DDevice9_GetViewport::Ptr IDirect3DDevice9 -> Ptr D3DVIEWPORT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_LightEnable"
+  c_IDirect3DDevice9_LightEnable::Ptr IDirect3DDevice9 -> DWORD -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_MultiplyTransform"
+  c_IDirect3DDevice9_MultiplyTransform::Ptr IDirect3DDevice9 -> D3DTRANSFORMSTATETYPE -> Ptr D3DMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_Present"
+  c_IDirect3DDevice9_Present::Ptr IDirect3DDevice9 -> Ptr RECT -> Ptr RECT -> HWND -> Ptr RGNDATA -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_ProcessVertices"
+  c_IDirect3DDevice9_ProcessVertices::Ptr IDirect3DDevice9 -> UINT -> UINT -> UINT -> Ptr IDirect3DVertexBuffer9 -> Ptr IDirect3DVertexDeclaration9 -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_Reset"
+  c_IDirect3DDevice9_Reset::Ptr IDirect3DDevice9 -> Ptr D3DPRESENT_PARAMETERS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetClipPlane"
+  c_IDirect3DDevice9_SetClipPlane::Ptr IDirect3DDevice9 -> DWORD -> Ptr Float -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetClipStatus"
+  c_IDirect3DDevice9_SetClipStatus::Ptr IDirect3DDevice9 -> Ptr D3DCLIPSTATUS9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetCurrentTexturePalette"
+  c_IDirect3DDevice9_SetCurrentTexturePalette::Ptr IDirect3DDevice9 -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetCursorPosition"
+  c_IDirect3DDevice9_SetCursorPosition::Ptr IDirect3DDevice9 -> INT -> INT -> DWORD -> IO ()
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetCursorProperties"
+  c_IDirect3DDevice9_SetCursorProperties::Ptr IDirect3DDevice9 -> UINT -> UINT -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetDepthStencilSurface"
+  c_IDirect3DDevice9_SetDepthStencilSurface::Ptr IDirect3DDevice9 -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetDialogBoxMode"
+  c_IDirect3DDevice9_SetDialogBoxMode::Ptr IDirect3DDevice9 -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetFVF"
+  c_IDirect3DDevice9_SetFVF::Ptr IDirect3DDevice9 -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetGammaRamp"
+  c_IDirect3DDevice9_SetGammaRamp::Ptr IDirect3DDevice9 -> UINT -> DWORD -> Ptr D3DGAMMARAMP -> IO ()
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetIndices"
+  c_IDirect3DDevice9_SetIndices::Ptr IDirect3DDevice9 -> Ptr IDirect3DIndexBuffer9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetLight"
+  c_IDirect3DDevice9_SetLight::Ptr IDirect3DDevice9 -> DWORD -> Ptr D3DLIGHT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetMaterial"
+  c_IDirect3DDevice9_SetMaterial::Ptr IDirect3DDevice9 -> Ptr D3DMATERIAL9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetNPatchMode"
+  c_IDirect3DDevice9_SetNPatchMode::Ptr IDirect3DDevice9 -> Float -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetPaletteEntries"
+  c_IDirect3DDevice9_SetPaletteEntries::Ptr IDirect3DDevice9 -> UINT -> Ptr PALETTEENTRY -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetPixelShader"
+  c_IDirect3DDevice9_SetPixelShader::Ptr IDirect3DDevice9 -> Ptr IDirect3DPixelShader9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetPixelShaderConstantB"
+  c_IDirect3DDevice9_SetPixelShaderConstantB::Ptr IDirect3DDevice9 -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetPixelShaderConstantF"
+  c_IDirect3DDevice9_SetPixelShaderConstantF::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetPixelShaderConstantI"
+  c_IDirect3DDevice9_SetPixelShaderConstantI::Ptr IDirect3DDevice9 -> UINT -> Ptr Int -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetRenderState"
+  c_IDirect3DDevice9_SetRenderState::Ptr IDirect3DDevice9 -> D3DRENDERSTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetRenderTarget"
+  c_IDirect3DDevice9_SetRenderTarget::Ptr IDirect3DDevice9 -> DWORD -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetSamplerState"
+  c_IDirect3DDevice9_SetSamplerState::Ptr IDirect3DDevice9 -> DWORD -> D3DSAMPLERSTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetScissorRect"
+  c_IDirect3DDevice9_SetScissorRect::Ptr IDirect3DDevice9 -> Ptr RECT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetSoftwareVertexProcessing"
+  c_IDirect3DDevice9_SetSoftwareVertexProcessing::Ptr IDirect3DDevice9 -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetStreamSource"
+  c_IDirect3DDevice9_SetStreamSource::Ptr IDirect3DDevice9 -> UINT -> Ptr IDirect3DVertexBuffer9 -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetStreamSourceFreq"
+  c_IDirect3DDevice9_SetStreamSourceFreq::Ptr IDirect3DDevice9 -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetTexture"
+  c_IDirect3DDevice9_SetTexture::Ptr IDirect3DDevice9 -> DWORD -> Ptr IDirect3DBaseTexture9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetTextureStageState"
+  c_IDirect3DDevice9_SetTextureStageState::Ptr IDirect3DDevice9 -> DWORD -> D3DTEXTURESTAGESTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetTransform"
+  c_IDirect3DDevice9_SetTransform::Ptr IDirect3DDevice9 -> D3DTRANSFORMSTATETYPE -> Ptr D3DMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetVertexDeclaration"
+  c_IDirect3DDevice9_SetVertexDeclaration::Ptr IDirect3DDevice9 -> Ptr IDirect3DVertexDeclaration9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetVertexShader"
+  c_IDirect3DDevice9_SetVertexShader::Ptr IDirect3DDevice9 -> Ptr IDirect3DVertexShader9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetVertexShaderConstantB"
+  c_IDirect3DDevice9_SetVertexShaderConstantB::Ptr IDirect3DDevice9 -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetVertexShaderConstantF"
+  c_IDirect3DDevice9_SetVertexShaderConstantF::Ptr IDirect3DDevice9 -> UINT -> Ptr Float -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetVertexShaderConstantI"
+  c_IDirect3DDevice9_SetVertexShaderConstantI::Ptr IDirect3DDevice9 -> UINT -> Ptr Int -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_SetViewport"
+  c_IDirect3DDevice9_SetViewport::Ptr IDirect3DDevice9 -> Ptr D3DVIEWPORT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_ShowCursor"
+  c_IDirect3DDevice9_ShowCursor::Ptr IDirect3DDevice9 -> BOOL -> IO BOOL
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_StretchRect"
+  c_IDirect3DDevice9_StretchRect::Ptr IDirect3DDevice9 -> Ptr IDirect3DSurface9 -> Ptr RECT -> Ptr IDirect3DSurface9 -> Ptr RECT -> D3DTEXTUREFILTERTYPE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_TestCooperativeLevel"
+  c_IDirect3DDevice9_TestCooperativeLevel::Ptr IDirect3DDevice9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_UpdateSurface"
+  c_IDirect3DDevice9_UpdateSurface::Ptr IDirect3DDevice9 -> Ptr IDirect3DSurface9 -> Ptr RECT -> Ptr IDirect3DSurface9 -> Ptr POINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_UpdateTexture"
+  c_IDirect3DDevice9_UpdateTexture::Ptr IDirect3DDevice9 -> Ptr IDirect3DBaseTexture9 -> Ptr IDirect3DBaseTexture9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DDevice9_ValidateDevice"
+  c_IDirect3DDevice9_ValidateDevice::Ptr IDirect3DDevice9 -> Ptr DWORD -> IO HRESULT
+type LPIDirect3DDevice9 = Ptr IDirect3DDevice9
+type LPDIRECT3DDEVICE9 = Ptr IDirect3DDevice9
+
+
+data IDirect3DPixelShader9 = IDirect3DPixelShader9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DPixelShader9_GetDevice"
+  c_IDirect3DPixelShader9_GetDevice::Ptr IDirect3DPixelShader9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DPixelShader9_GetFunction"
+  c_IDirect3DPixelShader9_GetFunction::Ptr IDirect3DPixelShader9 -> Ptr () -> Ptr UINT -> IO HRESULT
+type LPIDirect3DPixelShader9 = Ptr IDirect3DPixelShader9
+type LPDIRECT3DPIXELSHADER9 = Ptr IDirect3DPixelShader9
+
+
+data IDirect3DQuery9 = IDirect3DQuery9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DQuery9_GetData"
+  c_IDirect3DQuery9_GetData::Ptr IDirect3DQuery9 -> Ptr () -> DWORD -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DQuery9_GetDataSize"
+  c_IDirect3DQuery9_GetDataSize::Ptr IDirect3DQuery9 -> IO DWORD
+foreign import ccall unsafe "fake.h c_IDirect3DQuery9_GetDevice"
+  c_IDirect3DQuery9_GetDevice::Ptr IDirect3DQuery9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DQuery9_GetType"
+  c_IDirect3DQuery9_GetType::Ptr IDirect3DQuery9 -> IO D3DQUERYTYPE
+foreign import ccall unsafe "fake.h c_IDirect3DQuery9_Issue"
+  c_IDirect3DQuery9_Issue::Ptr IDirect3DQuery9 -> DWORD -> IO HRESULT
+type LPIDirect3DQuery9 = Ptr IDirect3DQuery9
+type LPDIRECT3DQUERY9 = Ptr IDirect3DQuery9
+
+
+data IDirect3DStateBlock9 = IDirect3DStateBlock9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DStateBlock9_Apply"
+  c_IDirect3DStateBlock9_Apply::Ptr IDirect3DStateBlock9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DStateBlock9_Capture"
+  c_IDirect3DStateBlock9_Capture::Ptr IDirect3DStateBlock9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DStateBlock9_GetDevice"
+  c_IDirect3DStateBlock9_GetDevice::Ptr IDirect3DStateBlock9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+type LPIDirect3DStateBlock9 = Ptr IDirect3DStateBlock9
+type LPDIRECT3DSTATEBLOCK9 = Ptr IDirect3DStateBlock9
+
+
+data IDirect3DSwapChain9 = IDirect3DSwapChain9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetBackBuffer"
+  c_IDirect3DSwapChain9_GetBackBuffer::Ptr IDirect3DSwapChain9 -> UINT -> D3DBACKBUFFER_TYPE -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetDevice"
+  c_IDirect3DSwapChain9_GetDevice::Ptr IDirect3DSwapChain9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetDisplayMode"
+  c_IDirect3DSwapChain9_GetDisplayMode::Ptr IDirect3DSwapChain9 -> Ptr D3DDISPLAYMODE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetFrontBufferData"
+  c_IDirect3DSwapChain9_GetFrontBufferData::Ptr IDirect3DSwapChain9 -> Ptr IDirect3DSurface9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetPresentParameters"
+  c_IDirect3DSwapChain9_GetPresentParameters::Ptr IDirect3DSwapChain9 -> Ptr D3DPRESENT_PARAMETERS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_GetRasterStatus"
+  c_IDirect3DSwapChain9_GetRasterStatus::Ptr IDirect3DSwapChain9 -> Ptr D3DRASTER_STATUS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSwapChain9_Present"
+  c_IDirect3DSwapChain9_Present::Ptr IDirect3DSwapChain9 -> Ptr RECT -> Ptr RECT -> HWND -> Ptr RGNDATA -> DWORD -> IO HRESULT
+type LPIDirect3DSwapChain9 = Ptr IDirect3DSwapChain9
+type LPDIRECT3DSWAPCHAIN9 = Ptr IDirect3DSwapChain9
+
+
+data IDirect3DVertexDeclaration9 = IDirect3DVertexDeclaration9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DVertexDeclaration9_GetDeclaration"
+  c_IDirect3DVertexDeclaration9_GetDeclaration::Ptr IDirect3DVertexDeclaration9 -> Ptr D3DVERTEXELEMENT9 -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVertexDeclaration9_GetDevice"
+  c_IDirect3DVertexDeclaration9_GetDevice::Ptr IDirect3DVertexDeclaration9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+type LPIDirect3DVertexDeclaration9 = Ptr IDirect3DVertexDeclaration9
+type LPDIRECT3DVERTEXDECLARATION9 = Ptr IDirect3DVertexDeclaration9
+
+
+data IDirect3DVertexShader9 = IDirect3DVertexShader9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DVertexShader9_GetDevice"
+  c_IDirect3DVertexShader9_GetDevice::Ptr IDirect3DVertexShader9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVertexShader9_GetFunction"
+  c_IDirect3DVertexShader9_GetFunction::Ptr IDirect3DVertexShader9 -> Ptr () -> Ptr UINT -> IO HRESULT
+type LPIDirect3DVertexShader9 = Ptr IDirect3DVertexShader9
+type LPDIRECT3DVERTEXSHADER9 = Ptr IDirect3DVertexShader9
+
+
+data IDirect3DResource9 = IDirect3DResource9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_FreePrivateData"
+  c_IDirect3DResource9_FreePrivateData::Ptr IDirect3DResource9 -> REFGUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_GetDevice"
+  c_IDirect3DResource9_GetDevice::Ptr IDirect3DResource9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_GetPriority"
+  c_IDirect3DResource9_GetPriority::Ptr IDirect3DResource9 -> IO DWORD
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_GetPrivateData"
+  c_IDirect3DResource9_GetPrivateData::Ptr IDirect3DResource9 -> REFGUID -> Ptr () -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_GetType"
+  c_IDirect3DResource9_GetType::Ptr IDirect3DResource9 -> IO D3DRESOURCETYPE
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_PreLoad"
+  c_IDirect3DResource9_PreLoad::Ptr IDirect3DResource9 -> IO ()
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_SetPriority"
+  c_IDirect3DResource9_SetPriority::Ptr IDirect3DResource9 -> DWORD -> IO DWORD
+foreign import ccall unsafe "fake.h c_IDirect3DResource9_SetPrivateData"
+  c_IDirect3DResource9_SetPrivateData::Ptr IDirect3DResource9 -> REFGUID -> Ptr () -> DWORD -> DWORD -> IO HRESULT
+type LPIDirect3DResource9 = Ptr IDirect3DResource9
+type LPDIRECT3DRESOURCE9 = Ptr IDirect3DResource9
+
+
+data IDirect3DBaseTexture9 = IDirect3DBaseTexture9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_GenerateMipSubLevels"
+  c_IDirect3DBaseTexture9_GenerateMipSubLevels::Ptr IDirect3DBaseTexture9 -> IO ()
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_GetAutoGenFilterType"
+  c_IDirect3DBaseTexture9_GetAutoGenFilterType::Ptr IDirect3DBaseTexture9 -> IO D3DTEXTUREFILTERTYPE
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_GetLevelCount"
+  c_IDirect3DBaseTexture9_GetLevelCount::Ptr IDirect3DBaseTexture9 -> IO DWORD
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_GetLOD"
+  c_IDirect3DBaseTexture9_GetLOD::Ptr IDirect3DBaseTexture9 -> IO DWORD
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_SetAutoGenFilterType"
+  c_IDirect3DBaseTexture9_SetAutoGenFilterType::Ptr IDirect3DBaseTexture9 -> D3DTEXTUREFILTERTYPE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DBaseTexture9_SetLOD"
+  c_IDirect3DBaseTexture9_SetLOD::Ptr IDirect3DBaseTexture9 -> DWORD -> IO DWORD
+type LPIDirect3DBaseTexture9 = Ptr IDirect3DBaseTexture9
+type LPDIRECT3DBASETEXTURE9 = Ptr IDirect3DBaseTexture9
+
+
+data IDirect3DCubeTexture9 = IDirect3DCubeTexture9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DCubeTexture9_AddDirtyRect"
+  c_IDirect3DCubeTexture9_AddDirtyRect::Ptr IDirect3DCubeTexture9 -> D3DCUBEMAP_FACES -> Ptr RECT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DCubeTexture9_GetCubeMapSurface"
+  c_IDirect3DCubeTexture9_GetCubeMapSurface::Ptr IDirect3DCubeTexture9 -> D3DCUBEMAP_FACES -> UINT -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DCubeTexture9_GetLevelDesc"
+  c_IDirect3DCubeTexture9_GetLevelDesc::Ptr IDirect3DCubeTexture9 -> UINT -> Ptr D3DSURFACE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DCubeTexture9_LockRect"
+  c_IDirect3DCubeTexture9_LockRect::Ptr IDirect3DCubeTexture9 -> D3DCUBEMAP_FACES -> UINT -> Ptr D3DLOCKED_RECT -> Ptr RECT -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DCubeTexture9_UnlockRect"
+  c_IDirect3DCubeTexture9_UnlockRect::Ptr IDirect3DCubeTexture9 -> D3DCUBEMAP_FACES -> UINT -> IO HRESULT
+type LPIDirect3DCubeTexture9 = Ptr IDirect3DCubeTexture9
+type LPDIRECT3DCUBETEXTURE9 = Ptr IDirect3DCubeTexture9
+
+
+data IDirect3DVolumeTexture9 = IDirect3DVolumeTexture9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DVolumeTexture9_AddDirtyBox"
+  c_IDirect3DVolumeTexture9_AddDirtyBox::Ptr IDirect3DVolumeTexture9 -> Ptr D3DBOX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolumeTexture9_GetLevelDesc"
+  c_IDirect3DVolumeTexture9_GetLevelDesc::Ptr IDirect3DVolumeTexture9 -> UINT -> Ptr D3DVOLUME_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolumeTexture9_GetVolumeLevel"
+  c_IDirect3DVolumeTexture9_GetVolumeLevel::Ptr IDirect3DVolumeTexture9 -> UINT -> Ptr (Ptr IDirect3DVolume9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolumeTexture9_LockBox"
+  c_IDirect3DVolumeTexture9_LockBox::Ptr IDirect3DVolumeTexture9 -> UINT -> Ptr D3DLOCKED_BOX -> Ptr D3DBOX -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolumeTexture9_UnlockBox"
+  c_IDirect3DVolumeTexture9_UnlockBox::Ptr IDirect3DVolumeTexture9 -> UINT -> IO HRESULT
+type LPIDirect3DVolumeTexture9 = Ptr IDirect3DVolumeTexture9
+type LPDIRECT3DVOLUMETEXTURE9 = Ptr IDirect3DVolumeTexture9
+
+
+data IDirect3DTexture9 = IDirect3DTexture9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DTexture9_AddDirtyRect"
+  c_IDirect3DTexture9_AddDirtyRect::Ptr IDirect3DTexture9 -> Ptr RECT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DTexture9_GetLevelDesc"
+  c_IDirect3DTexture9_GetLevelDesc::Ptr IDirect3DTexture9 -> UINT -> Ptr D3DSURFACE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DTexture9_GetSurfaceLevel"
+  c_IDirect3DTexture9_GetSurfaceLevel::Ptr IDirect3DTexture9 -> UINT -> Ptr (Ptr IDirect3DSurface9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DTexture9_LockRect"
+  c_IDirect3DTexture9_LockRect::Ptr IDirect3DTexture9 -> UINT -> Ptr D3DLOCKED_RECT -> Ptr RECT -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DTexture9_UnlockRect"
+  c_IDirect3DTexture9_UnlockRect::Ptr IDirect3DTexture9 -> UINT -> IO HRESULT
+type LPIDirect3DTexture9 = Ptr IDirect3DTexture9
+type LPDIRECT3DTEXTURE9 = Ptr IDirect3DTexture9
+
+
+data IDirect3DIndexBuffer9 = IDirect3DIndexBuffer9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DIndexBuffer9_GetDesc"
+  c_IDirect3DIndexBuffer9_GetDesc::Ptr IDirect3DIndexBuffer9 -> Ptr D3DINDEXBUFFER_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DIndexBuffer9_Lock"
+  c_IDirect3DIndexBuffer9_Lock::Ptr IDirect3DIndexBuffer9 -> UINT -> UINT -> Ptr (Ptr ()) -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DIndexBuffer9_Unlock"
+  c_IDirect3DIndexBuffer9_Unlock::Ptr IDirect3DIndexBuffer9 -> IO HRESULT
+type LPIDirect3DIndexBuffer9 = Ptr IDirect3DIndexBuffer9
+type LPDIRECT3DINDEXBUFFER9 = Ptr IDirect3DIndexBuffer9
+
+
+data IDirect3DSurface9 = IDirect3DSurface9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_GetContainer"
+  c_IDirect3DSurface9_GetContainer::Ptr IDirect3DSurface9 -> REFIID -> Ptr (Ptr ()) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_GetDC"
+  c_IDirect3DSurface9_GetDC::Ptr IDirect3DSurface9 -> Ptr HDC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_GetDesc"
+  c_IDirect3DSurface9_GetDesc::Ptr IDirect3DSurface9 -> Ptr D3DSURFACE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_LockRect"
+  c_IDirect3DSurface9_LockRect::Ptr IDirect3DSurface9 -> Ptr D3DLOCKED_RECT -> Ptr RECT -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_ReleaseDC"
+  c_IDirect3DSurface9_ReleaseDC::Ptr IDirect3DSurface9 -> HDC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DSurface9_UnlockRect"
+  c_IDirect3DSurface9_UnlockRect::Ptr IDirect3DSurface9 -> IO HRESULT
+type LPIDirect3DSurface9 = Ptr IDirect3DSurface9
+type LPDIRECT3DSURFACE9 = Ptr IDirect3DSurface9
+
+
+data IDirect3DVertexBuffer9 = IDirect3DVertexBuffer9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DVertexBuffer9_GetDesc"
+  c_IDirect3DVertexBuffer9_GetDesc::Ptr IDirect3DVertexBuffer9 -> Ptr D3DVERTEXBUFFER_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVertexBuffer9_Lock"
+  c_IDirect3DVertexBuffer9_Lock::Ptr IDirect3DVertexBuffer9 -> UINT -> UINT -> Ptr (Ptr ()) -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVertexBuffer9_Unlock"
+  c_IDirect3DVertexBuffer9_Unlock::Ptr IDirect3DVertexBuffer9 -> IO HRESULT
+type LPIDirect3DVertexBuffer9 = Ptr IDirect3DVertexBuffer9
+type LPDIRECT3DVERTEXBUFFER9 = Ptr IDirect3DVertexBuffer9
+
+
+data IDirect3DVolume9 = IDirect3DVolume9 deriving (Show)
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_FreePrivateData"
+  c_IDirect3DVolume9_FreePrivateData::Ptr IDirect3DVolume9 -> REFGUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_GetContainer"
+  c_IDirect3DVolume9_GetContainer::Ptr IDirect3DVolume9 -> REFIID -> Ptr (Ptr ()) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_GetDesc"
+  c_IDirect3DVolume9_GetDesc::Ptr IDirect3DVolume9 -> Ptr D3DVOLUME_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_GetDevice"
+  c_IDirect3DVolume9_GetDevice::Ptr IDirect3DVolume9 -> Ptr (Ptr IDirect3DDevice9) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_GetPrivateData"
+  c_IDirect3DVolume9_GetPrivateData::Ptr IDirect3DVolume9 -> REFGUID -> Ptr () -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_LockBox"
+  c_IDirect3DVolume9_LockBox::Ptr IDirect3DVolume9 -> Ptr D3DLOCKED_BOX -> Ptr D3DBOX -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_SetPrivateData"
+  c_IDirect3DVolume9_SetPrivateData::Ptr IDirect3DVolume9 -> REFGUID -> Ptr () -> DWORD -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_IDirect3DVolume9_UnlockBox"
+  c_IDirect3DVolume9_UnlockBox::Ptr IDirect3DVolume9 -> IO HRESULT
+type LPIDirect3DVolume9 = Ptr IDirect3DVolume9
+type LPDIRECT3DVOLUME9 = Ptr IDirect3DVolume9
+
+
+type D3DBACKBUFFER_TYPE = DWORD
+d3DBACKBUFFER_TYPE_RIGHT::D3DBACKBUFFER_TYPE
+d3DBACKBUFFER_TYPE_RIGHT=2
+d3DBACKBUFFER_TYPE_LEFT::D3DBACKBUFFER_TYPE
+d3DBACKBUFFER_TYPE_LEFT=1
+d3DBACKBUFFER_TYPE_MONO::D3DBACKBUFFER_TYPE
+d3DBACKBUFFER_TYPE_MONO=0
+
+type D3DBASISTYPE = DWORD
+d3DBASIS_CATMULL_ROM::D3DBASISTYPE
+d3DBASIS_CATMULL_ROM=2
+d3DBASIS_BSPLINE::D3DBASISTYPE
+d3DBASIS_BSPLINE=1
+d3DBASIS_BEZIER::D3DBASISTYPE
+d3DBASIS_BEZIER=0
+
+type D3DBLEND = DWORD
+d3DBLEND_INVBLENDFACTOR::D3DBLEND
+d3DBLEND_INVBLENDFACTOR=15
+d3DBLEND_BLENDFACTOR::D3DBLEND
+d3DBLEND_BLENDFACTOR=14
+d3DBLEND_BOTHINVSRCALPHA::D3DBLEND
+d3DBLEND_BOTHINVSRCALPHA=13
+d3DBLEND_BOTHSRCALPHA::D3DBLEND
+d3DBLEND_BOTHSRCALPHA=12
+d3DBLEND_SRCALPHASAT::D3DBLEND
+d3DBLEND_SRCALPHASAT=11
+d3DBLEND_INVDESTCOLOR::D3DBLEND
+d3DBLEND_INVDESTCOLOR=10
+d3DBLEND_DESTCOLOR::D3DBLEND
+d3DBLEND_DESTCOLOR=9
+d3DBLEND_INVDESTALPHA::D3DBLEND
+d3DBLEND_INVDESTALPHA=8
+d3DBLEND_DESTALPHA::D3DBLEND
+d3DBLEND_DESTALPHA=7
+d3DBLEND_INVSRCALPHA::D3DBLEND
+d3DBLEND_INVSRCALPHA=6
+d3DBLEND_SRCALPHA::D3DBLEND
+d3DBLEND_SRCALPHA=5
+d3DBLEND_INVSRCCOLOR::D3DBLEND
+d3DBLEND_INVSRCCOLOR=4
+d3DBLEND_SRCCOLOR::D3DBLEND
+d3DBLEND_SRCCOLOR=3
+d3DBLEND_ONE::D3DBLEND
+d3DBLEND_ONE=2
+d3DBLEND_ZERO::D3DBLEND
+d3DBLEND_ZERO=1
+
+type D3DBLENDOP = DWORD
+d3DBLENDOP_MAX::D3DBLENDOP
+d3DBLENDOP_MAX=5
+d3DBLENDOP_MIN::D3DBLENDOP
+d3DBLENDOP_MIN=4
+d3DBLENDOP_REVSUBTRACT::D3DBLENDOP
+d3DBLENDOP_REVSUBTRACT=3
+d3DBLENDOP_SUBTRACT::D3DBLENDOP
+d3DBLENDOP_SUBTRACT=2
+d3DBLENDOP_ADD::D3DBLENDOP
+d3DBLENDOP_ADD=1
+
+type D3DCMPFUNC = DWORD
+d3DCMP_ALWAYS::D3DCMPFUNC
+d3DCMP_ALWAYS=8
+d3DCMP_GREATEREQUAL::D3DCMPFUNC
+d3DCMP_GREATEREQUAL=7
+d3DCMP_NOTEQUAL::D3DCMPFUNC
+d3DCMP_NOTEQUAL=6
+d3DCMP_GREATER::D3DCMPFUNC
+d3DCMP_GREATER=5
+d3DCMP_LESSEQUAL::D3DCMPFUNC
+d3DCMP_LESSEQUAL=4
+d3DCMP_EQUAL::D3DCMPFUNC
+d3DCMP_EQUAL=3
+d3DCMP_LESS::D3DCMPFUNC
+d3DCMP_LESS=2
+d3DCMP_NEVER::D3DCMPFUNC
+d3DCMP_NEVER=1
+
+type D3DCUBEMAP_FACES = DWORD
+d3DCUBEMAP_FACE_NEGATIVE_Z::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_NEGATIVE_Z=5
+d3DCUBEMAP_FACE_POSITIVE_Z::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_POSITIVE_Z=4
+d3DCUBEMAP_FACE_NEGATIVE_Y::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_NEGATIVE_Y=3
+d3DCUBEMAP_FACE_POSITIVE_Y::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_POSITIVE_Y=2
+d3DCUBEMAP_FACE_NEGATIVE_X::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_NEGATIVE_X=1
+d3DCUBEMAP_FACE_POSITIVE_X::D3DCUBEMAP_FACES
+d3DCUBEMAP_FACE_POSITIVE_X=0
+
+type D3DCULL = DWORD
+d3DCULL_CCW::D3DCULL
+d3DCULL_CCW=3
+d3DCULL_CW::D3DCULL
+d3DCULL_CW=2
+d3DCULL_NONE::D3DCULL
+d3DCULL_NONE=1
+
+type D3DDEBUGMONITORTOKENS = DWORD
+d3DDMT_DISABLE::D3DDEBUGMONITORTOKENS
+d3DDMT_DISABLE=1
+d3DDMT_ENABLE::D3DDEBUGMONITORTOKENS
+d3DDMT_ENABLE=0
+
+type D3DDECLMETHOD = BYTE
+d3DDECLMETHOD_LOOKUPPRESAMPLED::D3DDECLMETHOD
+d3DDECLMETHOD_LOOKUPPRESAMPLED=6
+d3DDECLMETHOD_LOOKUP::D3DDECLMETHOD
+d3DDECLMETHOD_LOOKUP=5
+d3DDECLMETHOD_UV::D3DDECLMETHOD
+d3DDECLMETHOD_UV=4
+d3DDECLMETHOD_CROSSUV::D3DDECLMETHOD
+d3DDECLMETHOD_CROSSUV=3
+d3DDECLMETHOD_PARTIALV::D3DDECLMETHOD
+d3DDECLMETHOD_PARTIALV=2
+d3DDECLMETHOD_PARTIALU::D3DDECLMETHOD
+d3DDECLMETHOD_PARTIALU=1
+d3DDECLMETHOD_DEFAULT::D3DDECLMETHOD
+d3DDECLMETHOD_DEFAULT=0
+
+type D3DDECLTYPE = BYTE
+d3DDECLTYPE_UNUSED::D3DDECLTYPE
+d3DDECLTYPE_UNUSED=17
+d3DDECLTYPE_FLOAT16_4::D3DDECLTYPE
+d3DDECLTYPE_FLOAT16_4=16
+d3DDECLTYPE_FLOAT16_2::D3DDECLTYPE
+d3DDECLTYPE_FLOAT16_2=15
+d3DDECLTYPE_DEC3N::D3DDECLTYPE
+d3DDECLTYPE_DEC3N=14
+d3DDECLTYPE_UDEC3::D3DDECLTYPE
+d3DDECLTYPE_UDEC3=13
+d3DDECLTYPE_USHORT4N::D3DDECLTYPE
+d3DDECLTYPE_USHORT4N=12
+d3DDECLTYPE_USHORT2N::D3DDECLTYPE
+d3DDECLTYPE_USHORT2N=11
+d3DDECLTYPE_SHORT4N::D3DDECLTYPE
+d3DDECLTYPE_SHORT4N=10
+d3DDECLTYPE_SHORT2N::D3DDECLTYPE
+d3DDECLTYPE_SHORT2N=9
+d3DDECLTYPE_UBYTE4N::D3DDECLTYPE
+d3DDECLTYPE_UBYTE4N=8
+d3DDECLTYPE_SHORT4::D3DDECLTYPE
+d3DDECLTYPE_SHORT4=7
+d3DDECLTYPE_SHORT2::D3DDECLTYPE
+d3DDECLTYPE_SHORT2=6
+d3DDECLTYPE_UBYTE4::D3DDECLTYPE
+d3DDECLTYPE_UBYTE4=5
+d3DDECLTYPE_D3DCOLOR::D3DDECLTYPE
+d3DDECLTYPE_D3DCOLOR=4
+d3DDECLTYPE_FLOAT4::D3DDECLTYPE
+d3DDECLTYPE_FLOAT4=3
+d3DDECLTYPE_FLOAT3::D3DDECLTYPE
+d3DDECLTYPE_FLOAT3=2
+d3DDECLTYPE_FLOAT2::D3DDECLTYPE
+d3DDECLTYPE_FLOAT2=1
+d3DDECLTYPE_FLOAT1::D3DDECLTYPE
+d3DDECLTYPE_FLOAT1=0
+
+type D3DDECLUSAGE = BYTE
+d3DDECLUSAGE_SAMPLE::D3DDECLUSAGE
+d3DDECLUSAGE_SAMPLE=13
+d3DDECLUSAGE_DEPTH::D3DDECLUSAGE
+d3DDECLUSAGE_DEPTH=12
+d3DDECLUSAGE_FOG::D3DDECLUSAGE
+d3DDECLUSAGE_FOG=11
+d3DDECLUSAGE_COLOR::D3DDECLUSAGE
+d3DDECLUSAGE_COLOR=10
+d3DDECLUSAGE_POSITIONT::D3DDECLUSAGE
+d3DDECLUSAGE_POSITIONT=9
+d3DDECLUSAGE_TESSFACTOR::D3DDECLUSAGE
+d3DDECLUSAGE_TESSFACTOR=8
+d3DDECLUSAGE_BINORMAL::D3DDECLUSAGE
+d3DDECLUSAGE_BINORMAL=7
+d3DDECLUSAGE_TANGENT::D3DDECLUSAGE
+d3DDECLUSAGE_TANGENT=6
+d3DDECLUSAGE_TEXCOORD::D3DDECLUSAGE
+d3DDECLUSAGE_TEXCOORD=5
+d3DDECLUSAGE_PSIZE::D3DDECLUSAGE
+d3DDECLUSAGE_PSIZE=4
+d3DDECLUSAGE_NORMAL::D3DDECLUSAGE
+d3DDECLUSAGE_NORMAL=3
+d3DDECLUSAGE_BLENDINDICES::D3DDECLUSAGE
+d3DDECLUSAGE_BLENDINDICES=2
+d3DDECLUSAGE_BLENDWEIGHT::D3DDECLUSAGE
+d3DDECLUSAGE_BLENDWEIGHT=1
+d3DDECLUSAGE_POSITION::D3DDECLUSAGE
+d3DDECLUSAGE_POSITION=0
+
+type D3DDEGREETYPE = DWORD
+d3DDEGREE_QUINTIC::D3DDEGREETYPE
+d3DDEGREE_QUINTIC=5
+d3DDEGREE_CUBIC::D3DDEGREETYPE
+d3DDEGREE_CUBIC=3
+d3DDEGREE_QUADRATIC::D3DDEGREETYPE
+d3DDEGREE_QUADRATIC=2
+d3DDEGREE_LINEAR::D3DDEGREETYPE
+d3DDEGREE_LINEAR=1
+
+type D3DDEVTYPE = DWORD
+d3DDEVTYPE_SW::D3DDEVTYPE
+d3DDEVTYPE_SW=3
+d3DDEVTYPE_REF::D3DDEVTYPE
+d3DDEVTYPE_REF=2
+d3DDEVTYPE_NULLREF::D3DDEVTYPE
+d3DDEVTYPE_NULLREF=4
+d3DDEVTYPE_HAL::D3DDEVTYPE
+d3DDEVTYPE_HAL=1
+
+type D3DFILLMODE = DWORD
+d3DFILL_SOLID::D3DFILLMODE
+d3DFILL_SOLID=3
+d3DFILL_WIREFRAME::D3DFILLMODE
+d3DFILL_WIREFRAME=2
+d3DFILL_POINT::D3DFILLMODE
+d3DFILL_POINT=1
+
+type D3DFOGMODE = DWORD
+d3DFOG_LINEAR::D3DFOGMODE
+d3DFOG_LINEAR=3
+d3DFOG_EXP2::D3DFOGMODE
+d3DFOG_EXP2=2
+d3DFOG_EXP::D3DFOGMODE
+d3DFOG_EXP=1
+d3DFOG_NONE::D3DFOGMODE
+d3DFOG_NONE=0
+
+type D3DLIGHTTYPE = DWORD
+d3DLIGHT_DIRECTIONAL::D3DLIGHTTYPE
+d3DLIGHT_DIRECTIONAL=3
+d3DLIGHT_SPOT::D3DLIGHTTYPE
+d3DLIGHT_SPOT=2
+d3DLIGHT_POINT::D3DLIGHTTYPE
+d3DLIGHT_POINT=1
+
+type D3DMATERIALCOLORSOURCE = DWORD
+d3DMCS_COLOR2::D3DMATERIALCOLORSOURCE
+d3DMCS_COLOR2=2
+d3DMCS_COLOR1::D3DMATERIALCOLORSOURCE
+d3DMCS_COLOR1=1
+d3DMCS_MATERIAL::D3DMATERIALCOLORSOURCE
+d3DMCS_MATERIAL=0
+
+type D3DMULTISAMPLE_TYPE = DWORD
+d3DMULTISAMPLE_16_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_16_SAMPLES=16
+d3DMULTISAMPLE_15_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_15_SAMPLES=15
+d3DMULTISAMPLE_14_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_14_SAMPLES=14
+d3DMULTISAMPLE_13_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_13_SAMPLES=13
+d3DMULTISAMPLE_12_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_12_SAMPLES=12
+d3DMULTISAMPLE_11_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_11_SAMPLES=11
+d3DMULTISAMPLE_10_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_10_SAMPLES=10
+d3DMULTISAMPLE_9__SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_9__SAMPLES=9
+d3DMULTISAMPLE_8_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_8_SAMPLES=8
+d3DMULTISAMPLE_7_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_7_SAMPLES=7
+d3DMULTISAMPLE_6_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_6_SAMPLES=6
+d3DMULTISAMPLE_5_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_5_SAMPLES=5
+d3DMULTISAMPLE_4_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_4_SAMPLES=4
+d3DMULTISAMPLE_3_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_3_SAMPLES=3
+d3DMULTISAMPLE_2_SAMPLES::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_2_SAMPLES=2
+d3DMULTISAMPLE_NONMASKABLE::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_NONMASKABLE=1
+d3DMULTISAMPLE_NONE::D3DMULTISAMPLE_TYPE
+d3DMULTISAMPLE_NONE=0
+
+type D3DPATCHEDGESTYLE = DWORD
+d3DPATCHEDGE_CONTINUOUS::D3DPATCHEDGESTYLE
+d3DPATCHEDGE_CONTINUOUS=1
+d3DPATCHEDGE_DISCRETE::D3DPATCHEDGESTYLE
+d3DPATCHEDGE_DISCRETE=0
+
+type D3DPOOL = DWORD
+d3DPOOL_SCRATCH::D3DPOOL
+d3DPOOL_SCRATCH=3
+d3DPOOL_SYSTEMMEM::D3DPOOL
+d3DPOOL_SYSTEMMEM=2
+d3DPOOL_MANAGED::D3DPOOL
+d3DPOOL_MANAGED=1
+d3DPOOL_DEFAULT::D3DPOOL
+d3DPOOL_DEFAULT=0
+
+type D3DPRIMITIVETYPE = DWORD
+d3DPT_TRIANGLEFAN::D3DPRIMITIVETYPE
+d3DPT_TRIANGLEFAN=6
+d3DPT_TRIANGLESTRIP::D3DPRIMITIVETYPE
+d3DPT_TRIANGLESTRIP=5
+d3DPT_TRIANGLELIST::D3DPRIMITIVETYPE
+d3DPT_TRIANGLELIST=4
+d3DPT_LINESTRIP::D3DPRIMITIVETYPE
+d3DPT_LINESTRIP=3
+d3DPT_LINELIST::D3DPRIMITIVETYPE
+d3DPT_LINELIST=2
+d3DPT_POINTLIST::D3DPRIMITIVETYPE
+d3DPT_POINTLIST=1
+
+type D3DQUERYTYPE = DWORD
+d3DQUERYTYPE_CACHEUTILIZATION::D3DQUERYTYPE
+d3DQUERYTYPE_CACHEUTILIZATION=18
+d3DQUERYTYPE_BANDWIDTHTIMINGS::D3DQUERYTYPE
+d3DQUERYTYPE_BANDWIDTHTIMINGS=17
+d3DQUERYTYPE_PIXELTIMINGS::D3DQUERYTYPE
+d3DQUERYTYPE_PIXELTIMINGS=16
+d3DQUERYTYPE_VERTEXTIMINGS::D3DQUERYTYPE
+d3DQUERYTYPE_VERTEXTIMINGS=15
+d3DQUERYTYPE_INTERFACETIMINGS::D3DQUERYTYPE
+d3DQUERYTYPE_INTERFACETIMINGS=14
+d3DQUERYTYPE_PIPELINETIMINGS::D3DQUERYTYPE
+d3DQUERYTYPE_PIPELINETIMINGS=13
+d3DQUERYTYPE_TIMESTAMPFREQ::D3DQUERYTYPE
+d3DQUERYTYPE_TIMESTAMPFREQ=12
+d3DQUERYTYPE_TIMESTAMPDISJOINT::D3DQUERYTYPE
+d3DQUERYTYPE_TIMESTAMPDISJOINT=11
+d3DQUERYTYPE_TIMESTAMP::D3DQUERYTYPE
+d3DQUERYTYPE_TIMESTAMP=10
+d3DQUERYTYPE_OCCLUSION::D3DQUERYTYPE
+d3DQUERYTYPE_OCCLUSION=9
+d3DQUERYTYPE_EVENT::D3DQUERYTYPE
+d3DQUERYTYPE_EVENT=8
+d3DQUERYTYPE_VERTEXSTATS::D3DQUERYTYPE
+d3DQUERYTYPE_VERTEXSTATS=6
+d3DQUERYTYPE_ResourceManager::D3DQUERYTYPE
+d3DQUERYTYPE_ResourceManager=5
+d3DQUERYTYPE_VCACHE::D3DQUERYTYPE
+d3DQUERYTYPE_VCACHE=4
+
+type D3DRENDERSTATETYPE = DWORD
+d3DRS_BLENDOPALPHA::D3DRENDERSTATETYPE
+d3DRS_BLENDOPALPHA=209
+d3DRS_DESTBLENDALPHA::D3DRENDERSTATETYPE
+d3DRS_DESTBLENDALPHA=208
+d3DRS_SRCBLENDALPHA::D3DRENDERSTATETYPE
+d3DRS_SRCBLENDALPHA=207
+d3DRS_SEPARATEALPHABLENDENABLE::D3DRENDERSTATETYPE
+d3DRS_SEPARATEALPHABLENDENABLE=206
+d3DRS_WRAP15::D3DRENDERSTATETYPE
+d3DRS_WRAP15=205
+d3DRS_WRAP14::D3DRENDERSTATETYPE
+d3DRS_WRAP14=204
+d3DRS_WRAP13::D3DRENDERSTATETYPE
+d3DRS_WRAP13=203
+d3DRS_WRAP12::D3DRENDERSTATETYPE
+d3DRS_WRAP12=202
+d3DRS_WRAP11::D3DRENDERSTATETYPE
+d3DRS_WRAP11=201
+d3DRS_WRAP10::D3DRENDERSTATETYPE
+d3DRS_WRAP10=200
+d3DRS_WRAP9::D3DRENDERSTATETYPE
+d3DRS_WRAP9=199
+d3DRS_WRAP8::D3DRENDERSTATETYPE
+d3DRS_WRAP8=198
+d3DRS_DEPTHBIAS::D3DRENDERSTATETYPE
+d3DRS_DEPTHBIAS=195
+d3DRS_SRGBWRITEENABLE::D3DRENDERSTATETYPE
+d3DRS_SRGBWRITEENABLE=194
+d3DRS_BLENDFACTOR::D3DRENDERSTATETYPE
+d3DRS_BLENDFACTOR=193
+d3DRS_COLORWRITEENABLE3::D3DRENDERSTATETYPE
+d3DRS_COLORWRITEENABLE3=192
+d3DRS_COLORWRITEENABLE2::D3DRENDERSTATETYPE
+d3DRS_COLORWRITEENABLE2=191
+d3DRS_COLORWRITEENABLE1::D3DRENDERSTATETYPE
+d3DRS_COLORWRITEENABLE1=190
+d3DRS_CCW_STENCILFUNC::D3DRENDERSTATETYPE
+d3DRS_CCW_STENCILFUNC=189
+d3DRS_CCW_STENCILPASS::D3DRENDERSTATETYPE
+d3DRS_CCW_STENCILPASS=188
+d3DRS_CCW_STENCILZFAIL::D3DRENDERSTATETYPE
+d3DRS_CCW_STENCILZFAIL=187
+d3DRS_CCW_STENCILFAIL::D3DRENDERSTATETYPE
+d3DRS_CCW_STENCILFAIL=186
+d3DRS_TWOSIDEDSTENCILMODE::D3DRENDERSTATETYPE
+d3DRS_TWOSIDEDSTENCILMODE=185
+d3DRS_ENABLEADAPTIVETESSELLATION::D3DRENDERSTATETYPE
+d3DRS_ENABLEADAPTIVETESSELLATION=184
+d3DRS_ADAPTIVETESS_W::D3DRENDERSTATETYPE
+d3DRS_ADAPTIVETESS_W=183
+d3DRS_ADAPTIVETESS_Z::D3DRENDERSTATETYPE
+d3DRS_ADAPTIVETESS_Z=182
+d3DRS_ADAPTIVETESS_Y::D3DRENDERSTATETYPE
+d3DRS_ADAPTIVETESS_Y=181
+d3DRS_ADAPTIVETESS_X::D3DRENDERSTATETYPE
+d3DRS_ADAPTIVETESS_X=180
+d3DRS_MAXTESSELLATIONLEVEL::D3DRENDERSTATETYPE
+d3DRS_MAXTESSELLATIONLEVEL=179
+d3DRS_MINTESSELLATIONLEVEL::D3DRENDERSTATETYPE
+d3DRS_MINTESSELLATIONLEVEL=178
+d3DRS_ANTIALIASEDLINEENABLE::D3DRENDERSTATETYPE
+d3DRS_ANTIALIASEDLINEENABLE=176
+d3DRS_SLOPESCALEDEPTHBIAS::D3DRENDERSTATETYPE
+d3DRS_SLOPESCALEDEPTHBIAS=175
+d3DRS_SCISSORTESTENABLE::D3DRENDERSTATETYPE
+d3DRS_SCISSORTESTENABLE=174
+d3DRS_NORMALDEGREE::D3DRENDERSTATETYPE
+d3DRS_NORMALDEGREE=173
+d3DRS_POSITIONDEGREE::D3DRENDERSTATETYPE
+d3DRS_POSITIONDEGREE=172
+d3DRS_BLENDOP::D3DRENDERSTATETYPE
+d3DRS_BLENDOP=171
+d3DRS_TWEENFACTOR::D3DRENDERSTATETYPE
+d3DRS_TWEENFACTOR=170
+d3DRS_COLORWRITEENABLE::D3DRENDERSTATETYPE
+d3DRS_COLORWRITEENABLE=168
+d3DRS_INDEXEDVERTEXBLENDENABLE::D3DRENDERSTATETYPE
+d3DRS_INDEXEDVERTEXBLENDENABLE=167
+d3DRS_POINTSIZE_MAX::D3DRENDERSTATETYPE
+d3DRS_POINTSIZE_MAX=166
+d3DRS_DEBUGMONITORTOKEN::D3DRENDERSTATETYPE
+d3DRS_DEBUGMONITORTOKEN=165
+d3DRS_PATCHEDGESTYLE::D3DRENDERSTATETYPE
+d3DRS_PATCHEDGESTYLE=163
+d3DRS_MULTISAMPLEMASK::D3DRENDERSTATETYPE
+d3DRS_MULTISAMPLEMASK=162
+d3DRS_MULTISAMPLEANTIALIAS::D3DRENDERSTATETYPE
+d3DRS_MULTISAMPLEANTIALIAS=161
+d3DRS_POINTSCALE_C::D3DRENDERSTATETYPE
+d3DRS_POINTSCALE_C=160
+d3DRS_POINTSCALE_B::D3DRENDERSTATETYPE
+d3DRS_POINTSCALE_B=159
+d3DRS_POINTSCALE_A::D3DRENDERSTATETYPE
+d3DRS_POINTSCALE_A=158
+d3DRS_POINTSCALEENABLE::D3DRENDERSTATETYPE
+d3DRS_POINTSCALEENABLE=157
+d3DRS_POINTSPRITEENABLE::D3DRENDERSTATETYPE
+d3DRS_POINTSPRITEENABLE=156
+d3DRS_POINTSIZE_MIN::D3DRENDERSTATETYPE
+d3DRS_POINTSIZE_MIN=155
+d3DRS_POINTSIZE::D3DRENDERSTATETYPE
+d3DRS_POINTSIZE=154
+d3DRS_CLIPPLANEENABLE::D3DRENDERSTATETYPE
+d3DRS_CLIPPLANEENABLE=152
+d3DRS_VERTEXBLEND::D3DRENDERSTATETYPE
+d3DRS_VERTEXBLEND=151
+d3DRS_EMISSIVEMATERIALSOURCE::D3DRENDERSTATETYPE
+d3DRS_EMISSIVEMATERIALSOURCE=148
+d3DRS_AMBIENTMATERIALSOURCE::D3DRENDERSTATETYPE
+d3DRS_AMBIENTMATERIALSOURCE=147
+d3DRS_SPECULARMATERIALSOURCE::D3DRENDERSTATETYPE
+d3DRS_SPECULARMATERIALSOURCE=146
+d3DRS_DIFFUSEMATERIALSOURCE::D3DRENDERSTATETYPE
+d3DRS_DIFFUSEMATERIALSOURCE=145
+d3DRS_NORMALIZENORMALS::D3DRENDERSTATETYPE
+d3DRS_NORMALIZENORMALS=143
+d3DRS_LOCALVIEWER::D3DRENDERSTATETYPE
+d3DRS_LOCALVIEWER=142
+d3DRS_COLORVERTEX::D3DRENDERSTATETYPE
+d3DRS_COLORVERTEX=141
+d3DRS_FOGVERTEXMODE::D3DRENDERSTATETYPE
+d3DRS_FOGVERTEXMODE=140
+d3DRS_AMBIENT::D3DRENDERSTATETYPE
+d3DRS_AMBIENT=139
+d3DRS_LIGHTING::D3DRENDERSTATETYPE
+d3DRS_LIGHTING=137
+d3DRS_CLIPPING::D3DRENDERSTATETYPE
+d3DRS_CLIPPING=136
+d3DRS_WRAP7::D3DRENDERSTATETYPE
+d3DRS_WRAP7=135
+d3DRS_WRAP6::D3DRENDERSTATETYPE
+d3DRS_WRAP6=134
+d3DRS_WRAP5::D3DRENDERSTATETYPE
+d3DRS_WRAP5=133
+d3DRS_WRAP4::D3DRENDERSTATETYPE
+d3DRS_WRAP4=132
+d3DRS_WRAP3::D3DRENDERSTATETYPE
+d3DRS_WRAP3=131
+d3DRS_WRAP2::D3DRENDERSTATETYPE
+d3DRS_WRAP2=130
+d3DRS_WRAP1::D3DRENDERSTATETYPE
+d3DRS_WRAP1=129
+d3DRS_WRAP0::D3DRENDERSTATETYPE
+d3DRS_WRAP0=128
+d3DRS_TEXTUREFACTOR::D3DRENDERSTATETYPE
+d3DRS_TEXTUREFACTOR=60
+d3DRS_STENCILWRITEMASK::D3DRENDERSTATETYPE
+d3DRS_STENCILWRITEMASK=59
+d3DRS_STENCILMASK::D3DRENDERSTATETYPE
+d3DRS_STENCILMASK=58
+d3DRS_STENCILREF::D3DRENDERSTATETYPE
+d3DRS_STENCILREF=57
+d3DRS_STENCILFUNC::D3DRENDERSTATETYPE
+d3DRS_STENCILFUNC=56
+d3DRS_STENCILPASS::D3DRENDERSTATETYPE
+d3DRS_STENCILPASS=55
+d3DRS_STENCILZFAIL::D3DRENDERSTATETYPE
+d3DRS_STENCILZFAIL=54
+d3DRS_STENCILFAIL::D3DRENDERSTATETYPE
+d3DRS_STENCILFAIL=53
+d3DRS_STENCILENABLE::D3DRENDERSTATETYPE
+d3DRS_STENCILENABLE=52
+d3DRS_RANGEFOGENABLE::D3DRENDERSTATETYPE
+d3DRS_RANGEFOGENABLE=48
+d3DRS_FOGDENSITY::D3DRENDERSTATETYPE
+d3DRS_FOGDENSITY=38
+d3DRS_FOGEND::D3DRENDERSTATETYPE
+d3DRS_FOGEND=37
+d3DRS_FOGSTART::D3DRENDERSTATETYPE
+d3DRS_FOGSTART=36
+d3DRS_FOGTABLEMODE::D3DRENDERSTATETYPE
+d3DRS_FOGTABLEMODE=35
+d3DRS_FOGCOLOR::D3DRENDERSTATETYPE
+d3DRS_FOGCOLOR=34
+d3DRS_SPECULARENABLE::D3DRENDERSTATETYPE
+d3DRS_SPECULARENABLE=29
+d3DRS_FOGENABLE::D3DRENDERSTATETYPE
+d3DRS_FOGENABLE=28
+d3DRS_ALPHABLENDENABLE::D3DRENDERSTATETYPE
+d3DRS_ALPHABLENDENABLE=27
+d3DRS_DITHERENABLE::D3DRENDERSTATETYPE
+d3DRS_DITHERENABLE=26
+d3DRS_ALPHAFUNC::D3DRENDERSTATETYPE
+d3DRS_ALPHAFUNC=25
+d3DRS_ALPHAREF::D3DRENDERSTATETYPE
+d3DRS_ALPHAREF=24
+d3DRS_ZFUNC::D3DRENDERSTATETYPE
+d3DRS_ZFUNC=23
+d3DRS_CULLMODE::D3DRENDERSTATETYPE
+d3DRS_CULLMODE=22
+d3DRS_DESTBLEND::D3DRENDERSTATETYPE
+d3DRS_DESTBLEND=20
+d3DRS_SRCBLEND::D3DRENDERSTATETYPE
+d3DRS_SRCBLEND=19
+d3DRS_LASTPIXEL::D3DRENDERSTATETYPE
+d3DRS_LASTPIXEL=16
+d3DRS_ALPHATESTENABLE::D3DRENDERSTATETYPE
+d3DRS_ALPHATESTENABLE=15
+d3DRS_ZWRITEENABLE::D3DRENDERSTATETYPE
+d3DRS_ZWRITEENABLE=14
+d3DRS_SHADEMODE::D3DRENDERSTATETYPE
+d3DRS_SHADEMODE=9
+d3DRS_FILLMODE::D3DRENDERSTATETYPE
+d3DRS_FILLMODE=8
+d3DRS_ZENABLE::D3DRENDERSTATETYPE
+d3DRS_ZENABLE=7
+
+type D3DRESOURCETYPE = DWORD
+d3DRTYPE_INDEXBUFFER::D3DRESOURCETYPE
+d3DRTYPE_INDEXBUFFER=7
+d3DRTYPE_VERTEXBUFFER::D3DRESOURCETYPE
+d3DRTYPE_VERTEXBUFFER=6
+d3DRTYPE_CubeTexture::D3DRESOURCETYPE
+d3DRTYPE_CubeTexture=5
+d3DRTYPE_VOLUMETEXTURE::D3DRESOURCETYPE
+d3DRTYPE_VOLUMETEXTURE=4
+d3DRTYPE_TEXTURE::D3DRESOURCETYPE
+d3DRTYPE_TEXTURE=3
+d3DRTYPE_VOLUME::D3DRESOURCETYPE
+d3DRTYPE_VOLUME=2
+d3DRTYPE_SURFACE::D3DRESOURCETYPE
+d3DRTYPE_SURFACE=1
+
+type D3DSAMPLERSTATETYPE = DWORD
+d3DSAMP_DMAPOFFSET::D3DSAMPLERSTATETYPE
+d3DSAMP_DMAPOFFSET=13
+d3DSAMP_ELEMENTINDEX::D3DSAMPLERSTATETYPE
+d3DSAMP_ELEMENTINDEX=12
+d3DSAMP_SRGBTEXTURE::D3DSAMPLERSTATETYPE
+d3DSAMP_SRGBTEXTURE=11
+d3DSAMP_MAXANISOTROPY::D3DSAMPLERSTATETYPE
+d3DSAMP_MAXANISOTROPY=10
+d3DSAMP_MAXMIPLEVEL::D3DSAMPLERSTATETYPE
+d3DSAMP_MAXMIPLEVEL=9
+d3DSAMP_MIPMAPLODBIAS::D3DSAMPLERSTATETYPE
+d3DSAMP_MIPMAPLODBIAS=8
+d3DSAMP_MIPFILTER::D3DSAMPLERSTATETYPE
+d3DSAMP_MIPFILTER=7
+d3DSAMP_MINFILTER::D3DSAMPLERSTATETYPE
+d3DSAMP_MINFILTER=6
+d3DSAMP_MAGFILTER::D3DSAMPLERSTATETYPE
+d3DSAMP_MAGFILTER=5
+d3DSAMP_BORDERCOLOR::D3DSAMPLERSTATETYPE
+d3DSAMP_BORDERCOLOR=4
+d3DSAMP_ADDRESSW::D3DSAMPLERSTATETYPE
+d3DSAMP_ADDRESSW=3
+d3DSAMP_ADDRESSV::D3DSAMPLERSTATETYPE
+d3DSAMP_ADDRESSV=2
+d3DSAMP_ADDRESSU::D3DSAMPLERSTATETYPE
+d3DSAMP_ADDRESSU=1
+
+type D3DSHADEMODE = DWORD
+d3DSHADE_PHONG::D3DSHADEMODE
+d3DSHADE_PHONG=3
+d3DSHADE_GOURAUD::D3DSHADEMODE
+d3DSHADE_GOURAUD=2
+d3DSHADE_FLAT::D3DSHADEMODE
+d3DSHADE_FLAT=1
+
+type D3DSTATEBLOCKTYPE = DWORD
+d3DSBT_VERTEXSTATE::D3DSTATEBLOCKTYPE
+d3DSBT_VERTEXSTATE=2
+d3DSBT_PIXELSTATE::D3DSTATEBLOCKTYPE
+d3DSBT_PIXELSTATE=2
+d3DSBT_ALL::D3DSTATEBLOCKTYPE
+d3DSBT_ALL=1
+
+type D3DSTENCILOP = DWORD
+d3DSTENCILOP_DECR::D3DSTENCILOP
+d3DSTENCILOP_DECR=8
+d3DSTENCILOP_INCR::D3DSTENCILOP
+d3DSTENCILOP_INCR=7
+d3DSTENCILOP_INVERT::D3DSTENCILOP
+d3DSTENCILOP_INVERT=6
+d3DSTENCILOP_DECRSAT::D3DSTENCILOP
+d3DSTENCILOP_DECRSAT=5
+d3DSTENCILOP_INCRSAT::D3DSTENCILOP
+d3DSTENCILOP_INCRSAT=4
+d3DSTENCILOP_REPLACE::D3DSTENCILOP
+d3DSTENCILOP_REPLACE=3
+d3DSTENCILOP_ZERO::D3DSTENCILOP
+d3DSTENCILOP_ZERO=2
+d3DSTENCILOP_KEEP::D3DSTENCILOP
+d3DSTENCILOP_KEEP=1
+
+type D3DSWAPEFFECT = DWORD
+d3DSWAPEFFECT_COPY::D3DSWAPEFFECT
+d3DSWAPEFFECT_COPY=3
+d3DSWAPEFFECT_FLIP::D3DSWAPEFFECT
+d3DSWAPEFFECT_FLIP=2
+d3DSWAPEFFECT_DISCARD::D3DSWAPEFFECT
+d3DSWAPEFFECT_DISCARD=1
+
+type D3DTEXTUREADDRESS = DWORD
+d3DTADDRESS_MIRRORONCE::D3DTEXTUREADDRESS
+d3DTADDRESS_MIRRORONCE=5
+d3DTADDRESS_BORDER::D3DTEXTUREADDRESS
+d3DTADDRESS_BORDER=4
+d3DTADDRESS_CLAMP::D3DTEXTUREADDRESS
+d3DTADDRESS_CLAMP=3
+d3DTADDRESS_MIRROR::D3DTEXTUREADDRESS
+d3DTADDRESS_MIRROR=2
+d3DTADDRESS_WRAP::D3DTEXTUREADDRESS
+d3DTADDRESS_WRAP=1
+
+type D3DTEXTUREFILTERTYPE = DWORD
+d3DTEXF_GAUSSIANQUAD::D3DTEXTUREFILTERTYPE
+d3DTEXF_GAUSSIANQUAD=7
+d3DTEXF_PYRAMIDALQUAD::D3DTEXTUREFILTERTYPE
+d3DTEXF_PYRAMIDALQUAD=6
+d3DTEXF_ANISOTROPIC::D3DTEXTUREFILTERTYPE
+d3DTEXF_ANISOTROPIC=3
+d3DTEXF_LINEAR::D3DTEXTUREFILTERTYPE
+d3DTEXF_LINEAR=2
+d3DTEXF_POINT::D3DTEXTUREFILTERTYPE
+d3DTEXF_POINT=1
+d3DTEXF_NONE::D3DTEXTUREFILTERTYPE
+d3DTEXF_NONE=0
+
+type D3DTEXTUREOP = DWORD
+d3DTOP_LERP::D3DTEXTUREOP
+d3DTOP_LERP=26
+d3DTOP_MULTIPLYADD::D3DTEXTUREOP
+d3DTOP_MULTIPLYADD=25
+d3DTOP_DOTPRODUCT3::D3DTEXTUREOP
+d3DTOP_DOTPRODUCT3=24
+d3DTOP_BUMPENVMAPLUMINANCE::D3DTEXTUREOP
+d3DTOP_BUMPENVMAPLUMINANCE=23
+d3DTOP_BUMPENVMAP::D3DTEXTUREOP
+d3DTOP_BUMPENVMAP=22
+d3DTOP_MODULATEINVCOLOR_ADDALPHA::D3DTEXTUREOP
+d3DTOP_MODULATEINVCOLOR_ADDALPHA=21
+d3DTOP_MODULATEINVALPHA_ADDCOLOR::D3DTEXTUREOP
+d3DTOP_MODULATEINVALPHA_ADDCOLOR=20
+d3DTOP_MODULATECOLOR_ADDALPHA::D3DTEXTUREOP
+d3DTOP_MODULATECOLOR_ADDALPHA=19
+d3DTOP_MODULATEALPHA_ADDCOLOR::D3DTEXTUREOP
+d3DTOP_MODULATEALPHA_ADDCOLOR=18
+d3DTOP_PREMODULATE::D3DTEXTUREOP
+d3DTOP_PREMODULATE=17
+d3DTOP_BLENDCURRENTALPHA::D3DTEXTUREOP
+d3DTOP_BLENDCURRENTALPHA=16
+d3DTOP_BLENDTEXTUREALPHAPM::D3DTEXTUREOP
+d3DTOP_BLENDTEXTUREALPHAPM=15
+d3DTOP_BLENDFACTORALPHA::D3DTEXTUREOP
+d3DTOP_BLENDFACTORALPHA=14
+d3DTOP_BLENDTEXTUREALPHA::D3DTEXTUREOP
+d3DTOP_BLENDTEXTUREALPHA=13
+d3DTOP_BLENDDIFFUSEALPHA::D3DTEXTUREOP
+d3DTOP_BLENDDIFFUSEALPHA=12
+d3DTOP_ADDSMOOTH::D3DTEXTUREOP
+d3DTOP_ADDSMOOTH=11
+d3DTOP_SUBTRACT::D3DTEXTUREOP
+d3DTOP_SUBTRACT=10
+d3DTOP_ADDSIGNED2X::D3DTEXTUREOP
+d3DTOP_ADDSIGNED2X=9
+d3DTOP_ADDSIGNED::D3DTEXTUREOP
+d3DTOP_ADDSIGNED=8
+d3DTOP_ADD::D3DTEXTUREOP
+d3DTOP_ADD=7
+d3DTOP_MODULATE4X::D3DTEXTUREOP
+d3DTOP_MODULATE4X=6
+d3DTOP_MODULATE2X::D3DTEXTUREOP
+d3DTOP_MODULATE2X=5
+d3DTOP_MODULATE::D3DTEXTUREOP
+d3DTOP_MODULATE=4
+d3DTOP_SELECTARG2::D3DTEXTUREOP
+d3DTOP_SELECTARG2=3
+d3DTOP_SELECTARG1::D3DTEXTUREOP
+d3DTOP_SELECTARG1=2
+d3DTOP_DISABLE::D3DTEXTUREOP
+d3DTOP_DISABLE=1
+
+type D3DTEXTURESTAGESTATETYPE = DWORD
+d3DTSS_CONSTANT::D3DTEXTURESTAGESTATETYPE
+d3DTSS_CONSTANT=32
+d3DTSS_RESULTARG::D3DTEXTURESTAGESTATETYPE
+d3DTSS_RESULTARG=28
+d3DTSS_ALPHAARG0::D3DTEXTURESTAGESTATETYPE
+d3DTSS_ALPHAARG0=27
+d3DTSS_COLORARG0::D3DTEXTURESTAGESTATETYPE
+d3DTSS_COLORARG0=26
+d3DTSS_TEXTURETRANSFORMFLAGS::D3DTEXTURESTAGESTATETYPE
+d3DTSS_TEXTURETRANSFORMFLAGS=24
+d3DTSS_BUMPENVLOFFSET::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVLOFFSET=23
+d3DTSS_BUMPENVLSCALE::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVLSCALE=22
+d3DTSS_TEXCOORDINDEX::D3DTEXTURESTAGESTATETYPE
+d3DTSS_TEXCOORDINDEX=11
+d3DTSS_BUMPENVMAT11::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVMAT11=10
+d3DTSS_BUMPENVMAT10::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVMAT10=9
+d3DTSS_BUMPENVMAT01::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVMAT01=8
+d3DTSS_BUMPENVMAT00::D3DTEXTURESTAGESTATETYPE
+d3DTSS_BUMPENVMAT00=7
+d3DTSS_ALPHAARG2::D3DTEXTURESTAGESTATETYPE
+d3DTSS_ALPHAARG2=6
+d3DTSS_ALPHAARG1::D3DTEXTURESTAGESTATETYPE
+d3DTSS_ALPHAARG1=5
+d3DTSS_ALPHAOP::D3DTEXTURESTAGESTATETYPE
+d3DTSS_ALPHAOP=4
+d3DTSS_COLORARG2::D3DTEXTURESTAGESTATETYPE
+d3DTSS_COLORARG2=3
+d3DTSS_COLORARG1::D3DTEXTURESTAGESTATETYPE
+d3DTSS_COLORARG1=2
+d3DTSS_COLOROP::D3DTEXTURESTAGESTATETYPE
+d3DTSS_COLOROP=1
+
+type D3DTEXTURETRANSFORMFLAGS = DWORD
+d3DTTFF_PROJECTED::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_PROJECTED=256
+d3DTTFF_COUNT4::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_COUNT4=4
+d3DTTFF_COUNT3::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_COUNT3=3
+d3DTTFF_COUNT2::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_COUNT2=2
+d3DTTFF_COUNT1::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_COUNT1=1
+d3DTTFF_DISABLE::D3DTEXTURETRANSFORMFLAGS
+d3DTTFF_DISABLE=0
+
+type D3DTRANSFORMSTATETYPE = DWORD
+d3DTS_TEXTURE7::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE7=23
+d3DTS_TEXTURE6::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE6=22
+d3DTS_TEXTURE5::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE5=21
+d3DTS_TEXTURE4::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE4=20
+d3DTS_TEXTURE3::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE3=19
+d3DTS_TEXTURE2::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE2=18
+d3DTS_TEXTURE1::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE1=17
+d3DTS_TEXTURE0::D3DTRANSFORMSTATETYPE
+d3DTS_TEXTURE0=16
+d3DTS_PROJECTION::D3DTRANSFORMSTATETYPE
+d3DTS_PROJECTION=3
+d3DTS_VIEW::D3DTRANSFORMSTATETYPE
+d3DTS_VIEW=2
+
+type D3DVERTEXBLENDFLAGS = DWORD
+d3DVBF_0WEIGHTS::D3DVERTEXBLENDFLAGS
+d3DVBF_0WEIGHTS=256
+d3DVBF_TWEENING::D3DVERTEXBLENDFLAGS
+d3DVBF_TWEENING=255
+d3DVBF_3WEIGHTS::D3DVERTEXBLENDFLAGS
+d3DVBF_3WEIGHTS=3
+d3DVBF_2WEIGHTS::D3DVERTEXBLENDFLAGS
+d3DVBF_2WEIGHTS=2
+d3DVBF_1WEIGHTS::D3DVERTEXBLENDFLAGS
+d3DVBF_1WEIGHTS=1
+d3DVBF_DISABLE::D3DVERTEXBLENDFLAGS
+d3DVBF_DISABLE=0
+
+type D3DZBUFFERTYPE = DWORD
+d3DZB_USEW::D3DZBUFFERTYPE
+d3DZB_USEW=2
+d3DZB_TRUE::D3DZBUFFERTYPE
+d3DZB_TRUE=1
+d3DZB_FALSE::D3DZBUFFERTYPE
+d3DZB_FALSE=0
+
diff --git a/gen/d3dx_c.h b/gen/d3dx_c.h
new file mode 100644
--- /dev/null
+++ b/gen/d3dx_c.h
@@ -0,0 +1,502 @@
+HRESULT c_ID3DXAllocateHierarchy_CreateFrame(ID3DXAllocateHierarchy* object,LPCSTR Name,LPD3DXFRAME* ppNewFrame) { return object->lpVtbl->CreateFrame(object,Name,ppNewFrame); }
+HRESULT c_ID3DXAllocateHierarchy_CreateMeshContainer(ID3DXAllocateHierarchy* object,LPCSTR Name,D3DXMESHDATA* pMeshData,D3DXMATERIAL* pMaterials,D3DXEFFECTINSTANCE* pEffectInstances,DWORD NumMaterials,DWORD* pAdjacency,LPD3DXSKININFO pSkinInfo,LPD3DXMESHCONTAINER* ppNewMeshContainer) { return object->lpVtbl->CreateMeshContainer(object,Name,pMeshData,pMaterials,pEffectInstances,NumMaterials,pAdjacency,pSkinInfo,ppNewMeshContainer); }
+HRESULT c_ID3DXAllocateHierarchy_DestroyFrame(ID3DXAllocateHierarchy* object,LPD3DXFRAME pFrameToFree) { return object->lpVtbl->DestroyFrame(object,pFrameToFree); }
+HRESULT c_ID3DXAllocateHierarchy_DestroyMeshContainer(ID3DXAllocateHierarchy* object,LPD3DXMESHCONTAINER pMeshContainerToFree) { return object->lpVtbl->DestroyMeshContainer(object,pMeshContainerToFree); }
+HRESULT c_ID3DXAnimationCallbackHandler_HandleCallback(ID3DXAnimationCallbackHandler* object,UINT Track,LPVOID pCallbackData) { return object->lpVtbl->HandleCallback(object,Track,pCallbackData); }
+HRESULT c_ID3DXAnimationController_AdvanceTime(ID3DXAnimationController* object,DOUBLE TimeDelta,LPD3DXANIMATIONCALLBACKHANDLER pCallbackHandler) { return object->lpVtbl->AdvanceTime(object,TimeDelta,pCallbackHandler); }
+HRESULT c_ID3DXAnimationController_CloneAnimationController(ID3DXAnimationController* object,UINT MaxNumAnimationOutputs,UINT MaxNumAnimationSets,UINT MaxNumTracks,UINT MaxNumEvents,LPD3DXANIMATIONCONTROLLER* ppAnimController) { return object->lpVtbl->CloneAnimationController(object,MaxNumAnimationOutputs,MaxNumAnimationSets,MaxNumTracks,MaxNumEvents,ppAnimController); }
+HRESULT c_ID3DXAnimationController_GetAnimationSet(ID3DXAnimationController* object,UINT Index,LPD3DXANIMATIONSET* ppAnimSet) { return object->lpVtbl->GetAnimationSet(object,Index,ppAnimSet); }
+HRESULT c_ID3DXAnimationController_GetAnimationSetByName(ID3DXAnimationController* object,LPCSTR pName,LPD3DXANIMATIONSET* ppAnimSet) { return object->lpVtbl->GetAnimationSetByName(object,pName,ppAnimSet); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_GetCurrentPriorityBlend(ID3DXAnimationController* object) { return object->lpVtbl->GetCurrentPriorityBlend(object); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_GetCurrentTrackEvent(ID3DXAnimationController* object,UINT Track,D3DXEVENT_TYPE EventType) { return object->lpVtbl->GetCurrentTrackEvent(object,Track,EventType); }
+HRESULT c_ID3DXAnimationController_GetEventDesc(ID3DXAnimationController* object,D3DXEVENTHANDLE hEvent,LPD3DXEVENT_DESC pDesc) { return object->lpVtbl->GetEventDesc(object,hEvent,pDesc); }
+UINT c_ID3DXAnimationController_GetMaxNumAnimationOutputs(ID3DXAnimationController* object) { return object->lpVtbl->GetMaxNumAnimationOutputs(object); }
+UINT c_ID3DXAnimationController_GetMaxNumAnimationSets(ID3DXAnimationController* object) { return object->lpVtbl->GetMaxNumAnimationSets(object); }
+UINT c_ID3DXAnimationController_GetMaxNumEvents(ID3DXAnimationController* object) { return object->lpVtbl->GetMaxNumEvents(object); }
+UINT c_ID3DXAnimationController_GetMaxNumTracks(ID3DXAnimationController* object) { return object->lpVtbl->GetMaxNumTracks(object); }
+UINT c_ID3DXAnimationController_GetNumAnimationSets(ID3DXAnimationController* object) { return object->lpVtbl->GetNumAnimationSets(object); }
+FLOAT c_ID3DXAnimationController_GetPriorityBlend(ID3DXAnimationController* object) { return object->lpVtbl->GetPriorityBlend(object); }
+DOUBLE c_ID3DXAnimationController_GetTime(ID3DXAnimationController* object) { return object->lpVtbl->GetTime(object); }
+HRESULT c_ID3DXAnimationController_GetTrackAnimationSet(ID3DXAnimationController* object,UINT Track,LPD3DXANIMATIONSET* ppAnimSet) { return object->lpVtbl->GetTrackAnimationSet(object,Track,ppAnimSet); }
+HRESULT c_ID3DXAnimationController_GetTrackDesc(ID3DXAnimationController* object,UINT Track,LPD3DXTRACK_DESC pDesc) { return object->lpVtbl->GetTrackDesc(object,Track,pDesc); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_GetUpcomingPriorityBlend(ID3DXAnimationController* object,D3DXEVENTHANDLE hEvent) { return object->lpVtbl->GetUpcomingPriorityBlend(object,hEvent); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_GetUpcomingTrackEvent(ID3DXAnimationController* object,UINT Track,D3DXEVENTHANDLE hEvent) { return object->lpVtbl->GetUpcomingTrackEvent(object,Track,hEvent); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_KeyPriorityBlend(ID3DXAnimationController* object,FLOAT NewBlendWeight,DOUBLE StartTime,DOUBLE Duration,D3DXTRANSITION_TYPE Transition) { return object->lpVtbl->KeyPriorityBlend(object,NewBlendWeight,StartTime,Duration,Transition); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_KeyTrackEnable(ID3DXAnimationController* object,UINT Track,BOOL NewEnable,DOUBLE StartTime) { return object->lpVtbl->KeyTrackEnable(object,Track,NewEnable,StartTime); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_KeyTrackPosition(ID3DXAnimationController* object,UINT Track,DOUBLE NewPosition,DOUBLE StartTime) { return object->lpVtbl->KeyTrackPosition(object,Track,NewPosition,StartTime); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_KeyTrackSpeed(ID3DXAnimationController* object,UINT Track,FLOAT NewSpeed,DOUBLE StartTime,DOUBLE Duration,D3DXTRANSITION_TYPE Transition) { return object->lpVtbl->KeyTrackSpeed(object,Track,NewSpeed,StartTime,Duration,Transition); }
+D3DXEVENTHANDLE c_ID3DXAnimationController_KeyTrackWeight(ID3DXAnimationController* object,UINT Track,FLOAT NewWeight,DOUBLE StartTime,DOUBLE Duration,D3DXTRANSITION_TYPE Transition) { return object->lpVtbl->KeyTrackWeight(object,Track,NewWeight,StartTime,Duration,Transition); }
+HRESULT c_ID3DXAnimationController_RegisterAnimationOutput(ID3DXAnimationController* object,LPCSTR Name,D3DXMATRIX* pMatrix,D3DXVECTOR3* pScale,D3DXQUATERNION* pRotation,D3DXVECTOR3* pTranslation) { return object->lpVtbl->RegisterAnimationOutput(object,Name,pMatrix,pScale,pRotation,pTranslation); }
+HRESULT c_ID3DXAnimationController_RegisterAnimationSet(ID3DXAnimationController* object,LPD3DXANIMATIONSET pAnimSet) { return object->lpVtbl->RegisterAnimationSet(object,pAnimSet); }
+HRESULT c_ID3DXAnimationController_ResetTime(ID3DXAnimationController* object) { return object->lpVtbl->ResetTime(object); }
+HRESULT c_ID3DXAnimationController_SetPriorityBlend(ID3DXAnimationController* object,FLOAT BlendWeight) { return object->lpVtbl->SetPriorityBlend(object,BlendWeight); }
+HRESULT c_ID3DXAnimationController_SetTrackAnimationSet(ID3DXAnimationController* object,UINT Track,LPD3DXANIMATIONSET pAnimSet) { return object->lpVtbl->SetTrackAnimationSet(object,Track,pAnimSet); }
+HRESULT c_ID3DXAnimationController_SetTrackDesc(ID3DXAnimationController* object,UINT Track,LPD3DXTRACK_DESC pDesc) { return object->lpVtbl->SetTrackDesc(object,Track,pDesc); }
+HRESULT c_ID3DXAnimationController_SetTrackEnable(ID3DXAnimationController* object,UINT Track,BOOL Enable) { return object->lpVtbl->SetTrackEnable(object,Track,Enable); }
+HRESULT c_ID3DXAnimationController_SetTrackPosition(ID3DXAnimationController* object,UINT Track,DOUBLE Position) { return object->lpVtbl->SetTrackPosition(object,Track,Position); }
+HRESULT c_ID3DXAnimationController_SetTrackPriority(ID3DXAnimationController* object,UINT Track,D3DXPRIORITY_TYPE Priority) { return object->lpVtbl->SetTrackPriority(object,Track,Priority); }
+HRESULT c_ID3DXAnimationController_SetTrackSpeed(ID3DXAnimationController* object,UINT Track,FLOAT Speed) { return object->lpVtbl->SetTrackSpeed(object,Track,Speed); }
+HRESULT c_ID3DXAnimationController_SetTrackWeight(ID3DXAnimationController* object,UINT Track,FLOAT Weight) { return object->lpVtbl->SetTrackWeight(object,Track,Weight); }
+HRESULT c_ID3DXAnimationController_UnkeyAllPriorityBlends(ID3DXAnimationController* object) { return object->lpVtbl->UnkeyAllPriorityBlends(object); }
+HRESULT c_ID3DXAnimationController_UnkeyAllTrackEvents(ID3DXAnimationController* object,UINT Track) { return object->lpVtbl->UnkeyAllTrackEvents(object,Track); }
+HRESULT c_ID3DXAnimationController_UnkeyEvent(ID3DXAnimationController* object,D3DXEVENTHANDLE hEvent) { return object->lpVtbl->UnkeyEvent(object,hEvent); }
+HRESULT c_ID3DXAnimationController_UnregisterAnimationSet(ID3DXAnimationController* object,LPD3DXANIMATIONSET pAnimSet) { return object->lpVtbl->UnregisterAnimationSet(object,pAnimSet); }
+HRESULT c_ID3DXAnimationController_ValidateEvent(ID3DXAnimationController* object,D3DXEVENTHANDLE hEvent) { return object->lpVtbl->ValidateEvent(object,hEvent); }
+HRESULT c_ID3DXAnimationSet_GetAnimationIndexByName(ID3DXAnimationSet* object,LPCSTR pName,UINT* pIndex) { return object->lpVtbl->GetAnimationIndexByName(object,pName,pIndex); }
+HRESULT c_ID3DXAnimationSet_GetAnimationNameByIndex(ID3DXAnimationSet* object,UINT Index,LPCSTR* ppName) { return object->lpVtbl->GetAnimationNameByIndex(object,Index,ppName); }
+HRESULT c_ID3DXAnimationSet_GetCallback(ID3DXAnimationSet* object,DOUBLE Position,DWORD Flags,DOUBLE* pCallbackPosition,LPVOID* ppCallbackData) { return object->lpVtbl->GetCallback(object,Position,Flags,pCallbackPosition,ppCallbackData); }
+LPCSTR c_ID3DXAnimationSet_GetName(ID3DXAnimationSet* object) { return object->lpVtbl->GetName(object); }
+UINT c_ID3DXAnimationSet_GetNumAnimations(ID3DXAnimationSet* object) { return object->lpVtbl->GetNumAnimations(object); }
+DOUBLE c_ID3DXAnimationSet_GetPeriod(ID3DXAnimationSet* object) { return object->lpVtbl->GetPeriod(object); }
+DOUBLE c_ID3DXAnimationSet_GetPeriodicPosition(ID3DXAnimationSet* object,DOUBLE Position) { return object->lpVtbl->GetPeriodicPosition(object,Position); }
+HRESULT c_ID3DXAnimationSet_GetSRT(ID3DXAnimationSet* object,DOUBLE PeriodicPosition,UINT Animation,D3DXVECTOR3* pScale,D3DXQUATERNION* pRotation,D3DXVECTOR3* pTranslation) { return object->lpVtbl->GetSRT(object,PeriodicPosition,Animation,pScale,pRotation,pTranslation); }
+D3DXHANDLE c_ID3DXBaseEffect_GetAnnotation(ID3DXBaseEffect* object,D3DXHANDLE hObject,UINT Index) { return object->lpVtbl->GetAnnotation(object,hObject,Index); }
+D3DXHANDLE c_ID3DXBaseEffect_GetAnnotationByName(ID3DXBaseEffect* object,D3DXHANDLE hObject,LPCSTR pName) { return object->lpVtbl->GetAnnotationByName(object,hObject,pName); }
+HRESULT c_ID3DXBaseEffect_GetBool(ID3DXBaseEffect* object,D3DXHANDLE hParameter,BOOL* pb) { return object->lpVtbl->GetBool(object,hParameter,pb); }
+HRESULT c_ID3DXBaseEffect_GetBoolArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,BOOL* pB,UINT Count) { return object->lpVtbl->GetBoolArray(object,hParameter,pB,Count); }
+HRESULT c_ID3DXBaseEffect_GetDesc(ID3DXBaseEffect* object,D3DXEFFECT_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_ID3DXBaseEffect_GetFloat(ID3DXBaseEffect* object,D3DXHANDLE hParameter,FLOAT* pf) { return object->lpVtbl->GetFloat(object,hParameter,pf); }
+HRESULT c_ID3DXBaseEffect_GetFloatArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,FLOAT* pf,UINT Count) { return object->lpVtbl->GetFloatArray(object,hParameter,pf,Count); }
+D3DXHANDLE c_ID3DXBaseEffect_GetFunction(ID3DXBaseEffect* object,UINT Index) { return object->lpVtbl->GetFunction(object,Index); }
+D3DXHANDLE c_ID3DXBaseEffect_GetFunctionByName(ID3DXBaseEffect* object,LPCSTR pName) { return object->lpVtbl->GetFunctionByName(object,pName); }
+HRESULT c_ID3DXBaseEffect_GetFunctionDesc(ID3DXBaseEffect* object,D3DXHANDLE hFunction,D3DXFUNCTION_DESC* pDesc) { return object->lpVtbl->GetFunctionDesc(object,hFunction,pDesc); }
+HRESULT c_ID3DXBaseEffect_GetInt(ID3DXBaseEffect* object,D3DXHANDLE hParameter,INT* pn) { return object->lpVtbl->GetInt(object,hParameter,pn); }
+HRESULT c_ID3DXBaseEffect_GetIntArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,INT* pn,UINT Count) { return object->lpVtbl->GetIntArray(object,hParameter,pn,Count); }
+HRESULT c_ID3DXBaseEffect_GetMatrix(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix) { return object->lpVtbl->GetMatrix(object,hParameter,pMatrix); }
+HRESULT c_ID3DXBaseEffect_GetMatrixArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->GetMatrixArray(object,hParameter,pMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_GetMatrixPointerArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->GetMatrixPointerArray(object,hParameter,ppMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_GetMatrixTranspose(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix) { return object->lpVtbl->GetMatrixTranspose(object,hParameter,pMatrix); }
+HRESULT c_ID3DXBaseEffect_GetMatrixTransposeArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->GetMatrixTransposeArray(object,hParameter,pMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_GetMatrixTransposePointerArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->GetMatrixTransposePointerArray(object,hParameter,ppMatrix,Count); }
+D3DXHANDLE c_ID3DXBaseEffect_GetParameter(ID3DXBaseEffect* object,D3DXHANDLE hParameter,UINT Index) { return object->lpVtbl->GetParameter(object,hParameter,Index); }
+D3DXHANDLE c_ID3DXBaseEffect_GetParameterByName(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPCSTR pName) { return object->lpVtbl->GetParameterByName(object,hParameter,pName); }
+D3DXHANDLE c_ID3DXBaseEffect_GetParameterBySemantic(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPCSTR pSemantic) { return object->lpVtbl->GetParameterBySemantic(object,hParameter,pSemantic); }
+HRESULT c_ID3DXBaseEffect_GetParameterDesc(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXPARAMETER_DESC* pDesc) { return object->lpVtbl->GetParameterDesc(object,hParameter,pDesc); }
+D3DXHANDLE c_ID3DXBaseEffect_GetParameterElement(ID3DXBaseEffect* object,D3DXHANDLE hParameter,UINT ElementIndex) { return object->lpVtbl->GetParameterElement(object,hParameter,ElementIndex); }
+D3DXHANDLE c_ID3DXBaseEffect_GetPass(ID3DXBaseEffect* object,D3DXHANDLE hTechnique,UINT Index) { return object->lpVtbl->GetPass(object,hTechnique,Index); }
+D3DXHANDLE c_ID3DXBaseEffect_GetPassByName(ID3DXBaseEffect* object,D3DXHANDLE hTechnique,LPCSTR pName) { return object->lpVtbl->GetPassByName(object,hTechnique,pName); }
+HRESULT c_ID3DXBaseEffect_GetPassDesc(ID3DXBaseEffect* object,D3DXHANDLE hPass,D3DXPASS_DESC* pDesc) { return object->lpVtbl->GetPassDesc(object,hPass,pDesc); }
+HRESULT c_ID3DXBaseEffect_GetPixelShader(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPDIRECT3DPIXELSHADER9* ppPShader) { return object->lpVtbl->GetPixelShader(object,hParameter,ppPShader); }
+HRESULT c_ID3DXBaseEffect_GetString(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPCSTR* ppString) { return object->lpVtbl->GetString(object,hParameter,ppString); }
+D3DXHANDLE c_ID3DXBaseEffect_GetTechnique(ID3DXBaseEffect* object,UINT Index) { return object->lpVtbl->GetTechnique(object,Index); }
+D3DXHANDLE c_ID3DXBaseEffect_GetTechniqueByName(ID3DXBaseEffect* object,LPCSTR pName) { return object->lpVtbl->GetTechniqueByName(object,pName); }
+HRESULT c_ID3DXBaseEffect_GetTechniqueDesc(ID3DXBaseEffect* object,D3DXHANDLE hTechnique,D3DXTECHNIQUE_DESC* pDesc) { return object->lpVtbl->GetTechniqueDesc(object,hTechnique,pDesc); }
+HRESULT c_ID3DXBaseEffect_GetTexture(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPDIRECT3DBASETEXTURE9* ppTexture) { return object->lpVtbl->GetTexture(object,hParameter,ppTexture); }
+HRESULT c_ID3DXBaseEffect_GetValue(ID3DXBaseEffect* object,D3DXHANDLE hParam1,void* pData,UINT Bytes) { return object->lpVtbl->GetValue(object,hParam1,pData,Bytes); }
+HRESULT c_ID3DXBaseEffect_GetVector(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXVECTOR4* pVector) { return object->lpVtbl->GetVector(object,hParameter,pVector); }
+HRESULT c_ID3DXBaseEffect_GetVectorArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXVECTOR4* pVector,UINT Count) { return object->lpVtbl->GetVectorArray(object,hParameter,pVector,Count); }
+HRESULT c_ID3DXBaseEffect_GetVertexShader(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPDIRECT3DVERTEXSHADER9* ppVShader) { return object->lpVtbl->GetVertexShader(object,hParameter,ppVShader); }
+HRESULT c_ID3DXBaseEffect_SetArrayRange(ID3DXBaseEffect* object,D3DXHANDLE hParameter,UINT Start,UINT Stop) { return object->lpVtbl->SetArrayRange(object,hParameter,Start,Stop); }
+HRESULT c_ID3DXBaseEffect_SetBool(ID3DXBaseEffect* object,D3DXHANDLE hParameter,BOOL b) { return object->lpVtbl->SetBool(object,hParameter,b); }
+HRESULT c_ID3DXBaseEffect_SetBoolArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,BOOL* pB,UINT Count) { return object->lpVtbl->SetBoolArray(object,hParameter,pB,Count); }
+HRESULT c_ID3DXBaseEffect_SetFloat(ID3DXBaseEffect* object,D3DXHANDLE hParameter,FLOAT f) { return object->lpVtbl->SetFloat(object,hParameter,f); }
+HRESULT c_ID3DXBaseEffect_SetFloatArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,FLOAT* pf,UINT Count) { return object->lpVtbl->SetFloatArray(object,hParameter,pf,Count); }
+HRESULT c_ID3DXBaseEffect_SetInt(ID3DXBaseEffect* object,D3DXHANDLE hParameter,INT n) { return object->lpVtbl->SetInt(object,hParameter,n); }
+HRESULT c_ID3DXBaseEffect_SetIntArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,INT* pn,UINT Count) { return object->lpVtbl->SetIntArray(object,hParameter,pn,Count); }
+HRESULT c_ID3DXBaseEffect_SetMatrix(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrix(object,hParameter,pMatrix); }
+HRESULT c_ID3DXBaseEffect_SetMatrixArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixArray(object,hParameter,pMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_SetMatrixPointerArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixPointerArray(object,hParameter,ppMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_SetMatrixTranspose(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrixTranspose(object,hParameter,pMatrix); }
+HRESULT c_ID3DXBaseEffect_SetMatrixTransposeArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposeArray(object,hParameter,pMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_SetMatrixTransposePointerArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposePointerArray(object,hParameter,ppMatrix,Count); }
+HRESULT c_ID3DXBaseEffect_SetString(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPCSTR pString) { return object->lpVtbl->SetString(object,hParameter,pString); }
+HRESULT c_ID3DXBaseEffect_SetTexture(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPDIRECT3DBASETEXTURE9 pTexture) { return object->lpVtbl->SetTexture(object,hParameter,pTexture); }
+HRESULT c_ID3DXBaseEffect_SetValue(ID3DXBaseEffect* object,D3DXHANDLE hParameter,LPCVOID pData,UINT Bytes) { return object->lpVtbl->SetValue(object,hParameter,pData,Bytes); }
+HRESULT c_ID3DXBaseEffect_SetVector(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXVECTOR4* pVector) { return object->lpVtbl->SetVector(object,hParameter,pVector); }
+HRESULT c_ID3DXBaseEffect_SetVectorArray(ID3DXBaseEffect* object,D3DXHANDLE hParameter,D3DXVECTOR4* pVector,UINT Count) { return object->lpVtbl->SetVectorArray(object,hParameter,pVector,Count); }
+HRESULT c_ID3DXBaseMesh_CloneMesh(ID3DXBaseMesh* object,DWORD Options,D3DVERTEXELEMENT9* pDeclaration,LPDIRECT3DDEVICE9 pDevice,LPD3DXMESH* ppCloneMesh) { return object->lpVtbl->CloneMesh(object,Options,pDeclaration,pDevice,ppCloneMesh); }
+HRESULT c_ID3DXBaseMesh_CloneMeshFVF(ID3DXBaseMesh* object,DWORD Options,DWORD FVF,LPDIRECT3DDEVICE9 pDevice,LPD3DXMESH* ppCloneMesh) { return object->lpVtbl->CloneMeshFVF(object,Options,FVF,pDevice,ppCloneMesh); }
+HRESULT c_ID3DXBaseMesh_ConvertAdjacencyToPointReps(ID3DXBaseMesh* object,DWORD* pAdjacency,DWORD* pPRep) { return object->lpVtbl->ConvertAdjacencyToPointReps(object,pAdjacency,pPRep); }
+HRESULT c_ID3DXBaseMesh_ConvertPointRepsToAdjacency(ID3DXBaseMesh* object,DWORD* pPRep,DWORD* pAdjacency) { return object->lpVtbl->ConvertPointRepsToAdjacency(object,pPRep,pAdjacency); }
+HRESULT c_ID3DXBaseMesh_DrawSubset(ID3DXBaseMesh* object,DWORD AttribId) { return object->lpVtbl->DrawSubset(object,AttribId); }
+HRESULT c_ID3DXBaseMesh_GenerateAdjacency(ID3DXBaseMesh* object,FLOAT Epsilon,DWORD* pAdjacency) { return object->lpVtbl->GenerateAdjacency(object,Epsilon,pAdjacency); }
+HRESULT c_ID3DXBaseMesh_GetAttributeTable(ID3DXBaseMesh* object,D3DXATTRIBUTERANGE* pAttribTable,DWORD* pAttribTableSize) { return object->lpVtbl->GetAttributeTable(object,pAttribTable,pAttribTableSize); }
+HRESULT c_ID3DXBaseMesh_GetDeclaration(ID3DXBaseMesh* object,D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) { return object->lpVtbl->GetDeclaration(object,Declaration); }
+HRESULT c_ID3DXBaseMesh_GetDevice(ID3DXBaseMesh* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+DWORD c_ID3DXBaseMesh_GetFVF(ID3DXBaseMesh* object) { return object->lpVtbl->GetFVF(object); }
+HRESULT c_ID3DXBaseMesh_GetIndexBuffer(ID3DXBaseMesh* object,LPDIRECT3DINDEXBUFFER9* ppIB) { return object->lpVtbl->GetIndexBuffer(object,ppIB); }
+DWORD c_ID3DXBaseMesh_GetNumBytesPerVertex(ID3DXBaseMesh* object) { return object->lpVtbl->GetNumBytesPerVertex(object); }
+DWORD c_ID3DXBaseMesh_GetNumFaces(ID3DXBaseMesh* object) { return object->lpVtbl->GetNumFaces(object); }
+DWORD c_ID3DXBaseMesh_GetNumVertices(ID3DXBaseMesh* object) { return object->lpVtbl->GetNumVertices(object); }
+DWORD c_ID3DXBaseMesh_GetOptions(ID3DXBaseMesh* object) { return object->lpVtbl->GetOptions(object); }
+HRESULT c_ID3DXBaseMesh_GetVertexBuffer(ID3DXBaseMesh* object,LPDIRECT3DVERTEXBUFFER9* ppVB) { return object->lpVtbl->GetVertexBuffer(object,ppVB); }
+HRESULT c_ID3DXBaseMesh_LockIndexBuffer(ID3DXBaseMesh* object,DWORD Flags,LPVOID* ppData) { return object->lpVtbl->LockIndexBuffer(object,Flags,ppData); }
+HRESULT c_ID3DXBaseMesh_LockVertexBuffer(ID3DXBaseMesh* object,DWORD Flags,LPVOID* ppData) { return object->lpVtbl->LockVertexBuffer(object,Flags,ppData); }
+HRESULT c_ID3DXBaseMesh_UnlockIndexBuffer(ID3DXBaseMesh* object) { return object->lpVtbl->UnlockIndexBuffer(object); }
+HRESULT c_ID3DXBaseMesh_UnlockVertexBuffer(ID3DXBaseMesh* object) { return object->lpVtbl->UnlockVertexBuffer(object); }
+HRESULT c_ID3DXBaseMesh_UpdateSemantics(ID3DXBaseMesh* object,D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) { return object->lpVtbl->UpdateSemantics(object,Declaration); }
+LPVOID c_ID3DXBuffer_GetBufferPointer(ID3DXBuffer* object) { return object->lpVtbl->GetBufferPointer(object); }
+DWORD c_ID3DXBuffer_GetBufferSize(ID3DXBuffer* object) { return object->lpVtbl->GetBufferSize(object); }
+HRESULT c_ID3DXCompressedAnimationSet_GetCallbackKeys(ID3DXCompressedAnimationSet* object,LPD3DXKEY_CALLBACK pCallbackKeys) { return object->lpVtbl->GetCallbackKeys(object,pCallbackKeys); }
+HRESULT c_ID3DXCompressedAnimationSet_GetCompressedData(ID3DXCompressedAnimationSet* object,LPD3DXBUFFER* ppCompressedData) { return object->lpVtbl->GetCompressedData(object,ppCompressedData); }
+UINT c_ID3DXCompressedAnimationSet_GetNumCallbackKeys(ID3DXCompressedAnimationSet* object) { return object->lpVtbl->GetNumCallbackKeys(object); }
+D3DXPLAYBACK_TYPE c_ID3DXCompressedAnimationSet_GetPlaybackType(ID3DXCompressedAnimationSet* object) { return object->lpVtbl->GetPlaybackType(object); }
+DOUBLE c_ID3DXCompressedAnimationSet_GetSourceTicksPerSecond(ID3DXCompressedAnimationSet* object) { return object->lpVtbl->GetSourceTicksPerSecond(object); }
+LPVOID c_ID3DXConstantTable_GetBufferPointer(ID3DXConstantTable* object) { return object->lpVtbl->GetBufferPointer(object); }
+DWORD c_ID3DXConstantTable_GetBufferSize(ID3DXConstantTable* object) { return object->lpVtbl->GetBufferSize(object); }
+D3DXHANDLE c_ID3DXConstantTable_GetConstant(ID3DXConstantTable* object,D3DXHANDLE hConstant,UINT Index) { return object->lpVtbl->GetConstant(object,hConstant,Index); }
+D3DXHANDLE c_ID3DXConstantTable_GetConstantByName(ID3DXConstantTable* object,D3DXHANDLE hConstant,LPCSTR pName) { return object->lpVtbl->GetConstantByName(object,hConstant,pName); }
+HRESULT c_ID3DXConstantTable_GetConstantDesc(ID3DXConstantTable* object,D3DXHANDLE hConstant,D3DXCONSTANT_DESC* pDesc,UINT* pCount) { return object->lpVtbl->GetConstantDesc(object,hConstant,pDesc,pCount); }
+D3DXHANDLE c_ID3DXConstantTable_GetConstantElement(ID3DXConstantTable* object,D3DXHANDLE hConstant,UINT Index) { return object->lpVtbl->GetConstantElement(object,hConstant,Index); }
+HRESULT c_ID3DXConstantTable_GetDesc(ID3DXConstantTable* object,D3DXCONSTANTTABLE_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+UINT c_ID3DXConstantTable_GetSamplerIndex(ID3DXConstantTable* object,D3DXHANDLE hConstant) { return object->lpVtbl->GetSamplerIndex(object,hConstant); }
+HRESULT c_ID3DXConstantTable_SetBool(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,BOOL b) { return object->lpVtbl->SetBool(object,pDevice,hConstant,b); }
+HRESULT c_ID3DXConstantTable_SetBoolArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,BOOL* pB,UINT Count) { return object->lpVtbl->SetBoolArray(object,pDevice,hConstant,pB,Count); }
+HRESULT c_ID3DXConstantTable_SetDefaults(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice) { return object->lpVtbl->SetDefaults(object,pDevice); }
+HRESULT c_ID3DXConstantTable_SetFloat(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,FLOAT f) { return object->lpVtbl->SetFloat(object,pDevice,hConstant,f); }
+HRESULT c_ID3DXConstantTable_SetFloatArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,FLOAT* pf,UINT Count) { return object->lpVtbl->SetFloatArray(object,pDevice,hConstant,pf,Count); }
+HRESULT c_ID3DXConstantTable_SetInt(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,INT n) { return object->lpVtbl->SetInt(object,pDevice,hConstant,n); }
+HRESULT c_ID3DXConstantTable_SetIntArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,INT* pn,UINT Count) { return object->lpVtbl->SetIntArray(object,pDevice,hConstant,pn,Count); }
+HRESULT c_ID3DXConstantTable_SetMatrix(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrix(object,pDevice,hConstant,pMatrix); }
+HRESULT c_ID3DXConstantTable_SetMatrixArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixArray(object,pDevice,hConstant,pMatrix,Count); }
+HRESULT c_ID3DXConstantTable_SetMatrixPointerArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixPointerArray(object,pDevice,hConstant,ppMatrix,Count); }
+HRESULT c_ID3DXConstantTable_SetMatrixTranspose(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrixTranspose(object,pDevice,hConstant,pMatrix); }
+HRESULT c_ID3DXConstantTable_SetMatrixTransposeArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposeArray(object,pDevice,hConstant,pMatrix,Count); }
+HRESULT c_ID3DXConstantTable_SetMatrixTransposePointerArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposePointerArray(object,pDevice,hConstant,ppMatrix,Count); }
+HRESULT c_ID3DXConstantTable_SetValue(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,LPCVOID pData,UINT Bytes) { return object->lpVtbl->SetValue(object,pDevice,hConstant,pData,Bytes); }
+HRESULT c_ID3DXConstantTable_SetVector(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXVECTOR4* pVector) { return object->lpVtbl->SetVector(object,pDevice,hConstant,pVector); }
+HRESULT c_ID3DXConstantTable_SetVectorArray(ID3DXConstantTable* object,LPDIRECT3DDEVICE9 pDevice,D3DXHANDLE hConstant,D3DXVECTOR4* pVector,UINT Count) { return object->lpVtbl->SetVectorArray(object,pDevice,hConstant,pVector,Count); }
+HRESULT c_ID3DXEffect_ApplyParameterBlock(ID3DXEffect* object,D3DXHANDLE hParameterBlock) { return object->lpVtbl->ApplyParameterBlock(object,hParameterBlock); }
+HRESULT c_ID3DXEffect_Begin(ID3DXEffect* object,UINT* pPasses,DWORD Flags) { return object->lpVtbl->Begin(object,pPasses,Flags); }
+HRESULT c_ID3DXEffect_BeginParameterBlock(ID3DXEffect* object) { return object->lpVtbl->BeginParameterBlock(object); }
+HRESULT c_ID3DXEffect_BeginPass(ID3DXEffect* object,UINT Pass) { return object->lpVtbl->BeginPass(object,Pass); }
+HRESULT c_ID3DXEffect_CloneEffect(ID3DXEffect* object,LPDIRECT3DDEVICE9 pDevice,LPD3DXEFFECT* ppEffect) { return object->lpVtbl->CloneEffect(object,pDevice,ppEffect); }
+HRESULT c_ID3DXEffect_CommitChanges(ID3DXEffect* object) { return object->lpVtbl->CommitChanges(object); }
+HRESULT c_ID3DXEffect_DeleteParameterBlock(ID3DXEffect* object,D3DXHANDLE hParameterBlock) { return object->lpVtbl->DeleteParameterBlock(object,hParameterBlock); }
+HRESULT c_ID3DXEffect_End(ID3DXEffect* object) { return object->lpVtbl->End(object); }
+D3DXHANDLE c_ID3DXEffect_EndParameterBlock(ID3DXEffect* object) { return object->lpVtbl->EndParameterBlock(object); }
+HRESULT c_ID3DXEffect_EndPass(ID3DXEffect* object) { return object->lpVtbl->EndPass(object); }
+HRESULT c_ID3DXEffect_FindNextValidTechnique(ID3DXEffect* object,D3DXHANDLE hTechnique,D3DXHANDLE* pTechnique) { return object->lpVtbl->FindNextValidTechnique(object,hTechnique,pTechnique); }
+D3DXHANDLE c_ID3DXEffect_GetCurrentTechnique(ID3DXEffect* object) { return object->lpVtbl->GetCurrentTechnique(object); }
+HRESULT c_ID3DXEffect_GetDevice(ID3DXEffect* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXEffect_GetPool(ID3DXEffect* object,LPD3DXEFFECTPOOL* ppPool) { return object->lpVtbl->GetPool(object,ppPool); }
+HRESULT c_ID3DXEffect_GetStateManager(ID3DXEffect* object,LPD3DXEFFECTSTATEMANAGER* ppManager) { return object->lpVtbl->GetStateManager(object,ppManager); }
+BOOL c_ID3DXEffect_IsParameterUsed(ID3DXEffect* object,D3DXHANDLE hParameter,D3DXHANDLE hTechnique) { return object->lpVtbl->IsParameterUsed(object,hParameter,hTechnique); }
+HRESULT c_ID3DXEffect_OnLostDevice(ID3DXEffect* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXEffect_OnResetDevice(ID3DXEffect* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXEffect_SetRawValue(ID3DXEffect* object,D3DXHANDLE Handle,void* pData,DWORD OffsetInBytes,DWORD Bytes) { return object->lpVtbl->SetRawValue(object,Handle,pData,OffsetInBytes,Bytes); }
+HRESULT c_ID3DXEffect_SetStateManager(ID3DXEffect* object,LPD3DXEFFECTSTATEMANAGER pManager) { return object->lpVtbl->SetStateManager(object,pManager); }
+HRESULT c_ID3DXEffect_SetTechnique(ID3DXEffect* object,D3DXHANDLE hTechnique) { return object->lpVtbl->SetTechnique(object,hTechnique); }
+HRESULT c_ID3DXEffect_ValidateTechnique(ID3DXEffect* object,D3DXHANDLE hTechnique) { return object->lpVtbl->ValidateTechnique(object,hTechnique); }
+HRESULT c_ID3DXEffectCompiler_CompileEffect(ID3DXEffectCompiler* object,DWORD Flags,LPD3DXBUFFER* ppEffect,LPD3DXBUFFER* ppErrorMsgs) { return object->lpVtbl->CompileEffect(object,Flags,ppEffect,ppErrorMsgs); }
+HRESULT c_ID3DXEffectCompiler_CompileShader(ID3DXEffectCompiler* object,D3DXHANDLE hFunction,LPCSTR pTarget,DWORD Flags,LPD3DXBUFFER* ppShader,LPD3DXBUFFER* ppErrorMsgs,LPD3DXCONSTANTTABLE* ppConstantTable) { return object->lpVtbl->CompileShader(object,hFunction,pTarget,Flags,ppShader,ppErrorMsgs,ppConstantTable); }
+HRESULT c_ID3DXEffectCompiler_GetLiteral(ID3DXEffectCompiler* object,D3DXHANDLE hParameter,BOOL* pLiteral) { return object->lpVtbl->GetLiteral(object,hParameter,pLiteral); }
+HRESULT c_ID3DXEffectCompiler_SetLiteral(ID3DXEffectCompiler* object,D3DXHANDLE hParameter,BOOL Literal) { return object->lpVtbl->SetLiteral(object,hParameter,Literal); }
+HRESULT c_ID3DXEffectStateManager_LightEnable(ID3DXEffectStateManager* object,DWORD Index,BOOL Enable) { return object->lpVtbl->LightEnable(object,Index,Enable); }
+HRESULT c_ID3DXEffectStateManager_SetFVF(ID3DXEffectStateManager* object,DWORD FVF) { return object->lpVtbl->SetFVF(object,FVF); }
+HRESULT c_ID3DXEffectStateManager_SetLight(ID3DXEffectStateManager* object,DWORD Index,D3DLIGHT9* pLight) { return object->lpVtbl->SetLight(object,Index,pLight); }
+HRESULT c_ID3DXEffectStateManager_SetMaterial(ID3DXEffectStateManager* object,D3DMATERIAL9* pMaterial) { return object->lpVtbl->SetMaterial(object,pMaterial); }
+HRESULT c_ID3DXEffectStateManager_SetNPatchMode(ID3DXEffectStateManager* object,FLOAT nSegments) { return object->lpVtbl->SetNPatchMode(object,nSegments); }
+HRESULT c_ID3DXEffectStateManager_SetPixelShader(ID3DXEffectStateManager* object,LPDIRECT3DPIXELSHADER9 pShader) { return object->lpVtbl->SetPixelShader(object,pShader); }
+HRESULT c_ID3DXEffectStateManager_SetPixelShaderConstantB(ID3DXEffectStateManager* object,UINT StartRegister,BOOL* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetPixelShaderConstantB(object,StartRegister,pConstantData,RegisterCount); }
+HRESULT c_ID3DXEffectStateManager_SetPixelShaderConstantF(ID3DXEffectStateManager* object,UINT StartRegister,FLOAT* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetPixelShaderConstantF(object,StartRegister,pConstantData,RegisterCount); }
+HRESULT c_ID3DXEffectStateManager_SetPixelShaderConstantI(ID3DXEffectStateManager* object,UINT StartRegister,INT* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetPixelShaderConstantI(object,StartRegister,pConstantData,RegisterCount); }
+HRESULT c_ID3DXEffectStateManager_SetRenderState(ID3DXEffectStateManager* object,D3DRENDERSTATETYPE State,DWORD Value) { return object->lpVtbl->SetRenderState(object,State,Value); }
+HRESULT c_ID3DXEffectStateManager_SetSamplerState(ID3DXEffectStateManager* object,DWORD Sampler,D3DSAMPLERSTATETYPE Type,DWORD Value) { return object->lpVtbl->SetSamplerState(object,Sampler,Type,Value); }
+HRESULT c_ID3DXEffectStateManager_SetTexture(ID3DXEffectStateManager* object,DWORD Stage,LPDIRECT3DBASETEXTURE9 pTexture) { return object->lpVtbl->SetTexture(object,Stage,pTexture); }
+HRESULT c_ID3DXEffectStateManager_SetTextureStageState(ID3DXEffectStateManager* object,DWORD Stage,D3DTEXTURESTAGESTATETYPE Type,DWORD Value) { return object->lpVtbl->SetTextureStageState(object,Stage,Type,Value); }
+HRESULT c_ID3DXEffectStateManager_SetTransform(ID3DXEffectStateManager* object,D3DTRANSFORMSTATETYPE State,D3DMATRIX* pMatrix) { return object->lpVtbl->SetTransform(object,State,pMatrix); }
+HRESULT c_ID3DXEffectStateManager_SetVertexShader(ID3DXEffectStateManager* object,LPDIRECT3DVERTEXSHADER9 pShader) { return object->lpVtbl->SetVertexShader(object,pShader); }
+HRESULT c_ID3DXEffectStateManager_SetVertexShaderConstantB(ID3DXEffectStateManager* object,UINT StartRegister,BOOL* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetVertexShaderConstantB(object,StartRegister,pConstantData,RegisterCount); }
+HRESULT c_ID3DXEffectStateManager_SetVertexShaderConstantF(ID3DXEffectStateManager* object,UINT StartRegister,FLOAT* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetVertexShaderConstantF(object,StartRegister,pConstantData,RegisterCount); }
+HRESULT c_ID3DXEffectStateManager_SetVertexShaderConstantI(ID3DXEffectStateManager* object,UINT StartRegister,INT* pConstantData,UINT RegisterCount) { return object->lpVtbl->SetVertexShaderConstantI(object,StartRegister,pConstantData,RegisterCount); }
+INT c_ID3DXFont_DrawText(ID3DXFont* object,LPD3DXSPRITE pSprite,LPCTSTR pString,INT Count,LPRECT pRect,DWORD Format,D3DCOLOR Color) { return object->lpVtbl->DrawText(object,pSprite,pString,Count,pRect,Format,Color); }
+HDC c_ID3DXFont_GetDC(ID3DXFont* object) { return object->lpVtbl->GetDC(object); }
+HRESULT c_ID3DXFont_GetDescW(ID3DXFont* object,D3DXFONT_DESC* pDesc) { return object->lpVtbl->GetDescW(object,pDesc); }
+HRESULT c_ID3DXFont_GetDevice(ID3DXFont* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXFont_GetGlyphData(ID3DXFont* object,UINT Glyph,LPDIRECT3DTEXTURE9* ppTexture,RECT* pBlackBox,POINT* pCellInc) { return object->lpVtbl->GetGlyphData(object,Glyph,ppTexture,pBlackBox,pCellInc); }
+BOOL c_ID3DXFont_GetTextMetrics(ID3DXFont* object,TEXTMETRIC* pTextMetrics) { return object->lpVtbl->GetTextMetrics(object,pTextMetrics); }
+HRESULT c_ID3DXFont_OnLostDevice(ID3DXFont* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXFont_OnResetDevice(ID3DXFont* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXFont_PreloadCharacters(ID3DXFont* object,UINT First,UINT Last) { return object->lpVtbl->PreloadCharacters(object,First,Last); }
+HRESULT c_ID3DXFont_PreloadGlyphs(ID3DXFont* object,UINT First,UINT Last) { return object->lpVtbl->PreloadGlyphs(object,First,Last); }
+HRESULT c_ID3DXFont_PreloadTextW(ID3DXFont* object,LPCTSTR* pString,INT Count) { return object->lpVtbl->PreloadTextW(object,pString,Count); }
+HRESULT c_ID3DXFile_CreateEnumObject(ID3DXFile* object,LPCVOID pvSource,D3DXF_FILELOADOPTIONS loadflags,ID3DXFileEnumObject** ppEnumObj) { return object->lpVtbl->CreateEnumObject(object,pvSource,loadflags,ppEnumObj); }
+HRESULT c_ID3DXFile_CreateSaveObject(ID3DXFile* object,LPCVOID pData,D3DXF_FILESAVEOPTIONS flags,D3DXF_FILEFORMAT dwFileFormat,ID3DXFileSaveObject** ppSaveObj) { return object->lpVtbl->CreateSaveObject(object,pData,flags,dwFileFormat,ppSaveObj); }
+HRESULT c_ID3DXFile_RegisterEnumTemplates(ID3DXFile* object,ID3DXFileEnumObject* pEnum) { return object->lpVtbl->RegisterEnumTemplates(object,pEnum); }
+HRESULT c_ID3DXFile_RegisterTemplates(ID3DXFile* object,LPCVOID pvData,SIZE_T cbSize) { return object->lpVtbl->RegisterTemplates(object,pvData,cbSize); }
+HRESULT c_ID3DXFileData_GetChild(ID3DXFileData* object,SIZE_T uiChild,ID3DXFileData** ppChild) { return object->lpVtbl->GetChild(object,uiChild,ppChild); }
+HRESULT c_ID3DXFileData_GetChildren(ID3DXFileData* object,SIZE_T* puiChildren) { return object->lpVtbl->GetChildren(object,puiChildren); }
+HRESULT c_ID3DXFileData_GetEnum(ID3DXFileData* object,ID3DXFileEnumObject** ppObj) { return object->lpVtbl->GetEnum(object,ppObj); }
+HRESULT c_ID3DXFileData_GetId(ID3DXFileData* object,LPGUID pId) { return object->lpVtbl->GetId(object,pId); }
+HRESULT c_ID3DXFileData_GetName(ID3DXFileData* object,LPSTR szName,SIZE_T* puiSize) { return object->lpVtbl->GetName(object,szName,puiSize); }
+HRESULT c_ID3DXFileData_GetType(ID3DXFileData* object,GUID* pType) { return object->lpVtbl->GetType(object,pType); }
+BOOL c_ID3DXFileData_IsReference(ID3DXFileData* object) { return object->lpVtbl->IsReference(object); }
+HRESULT c_ID3DXFileData_Lock(ID3DXFileData* object,SIZE_T* pSize,VOID** ppData) { return object->lpVtbl->Lock(object,pSize,ppData); }
+BOOL c_ID3DXFileData_Unlock(ID3DXFileData* object) { return object->lpVtbl->Unlock(object); }
+HRESULT c_ID3DXFileEnumObject_GetChild(ID3DXFileEnumObject* object,SIZE_T id,ID3DXFileData** ppObj) { return object->lpVtbl->GetChild(object,id,ppObj); }
+HRESULT c_ID3DXFileEnumObject_GetChildren(ID3DXFileEnumObject* object,SIZE_T* puiChildren) { return object->lpVtbl->GetChildren(object,puiChildren); }
+HRESULT c_ID3DXFileEnumObject_GetDataObjectById(ID3DXFileEnumObject* object,REFGUID rguid,LPD3DXFILEDATA* ppDataObj) { return object->lpVtbl->GetDataObjectById(object,rguid,ppDataObj); }
+HRESULT c_ID3DXFileEnumObject_GetDataObjectByName(ID3DXFileEnumObject* object,LPCSTR szName,ID3DXFileData** ppObj) { return object->lpVtbl->GetDataObjectByName(object,szName,ppObj); }
+HRESULT c_ID3DXFileEnumObject_GetFile(ID3DXFileEnumObject* object,ID3DXFile** ppFile) { return object->lpVtbl->GetFile(object,ppFile); }
+HRESULT c_ID3DXFileSaveData_AddDataObject(ID3DXFileSaveData* object,REFGUID rguidTemplate,LPCSTR szName,GUID* pId,SIZE_T cbSize,LPCVOID pvData,ID3DXFileSaveData** ppObj) { return object->lpVtbl->AddDataObject(object,rguidTemplate,szName,pId,cbSize,pvData,ppObj); }
+HRESULT c_ID3DXFileSaveData_AddDataReference(ID3DXFileSaveData* object,LPCSTR szName,GUID* pId) { return object->lpVtbl->AddDataReference(object,szName,pId); }
+HRESULT c_ID3DXFileSaveData_GetId(ID3DXFileSaveData* object,LPGUID pId) { return object->lpVtbl->GetId(object,pId); }
+HRESULT c_ID3DXFileSaveData_GetName(ID3DXFileSaveData* object,LPSTR szName,SIZE_T* puiSize) { return object->lpVtbl->GetName(object,szName,puiSize); }
+HRESULT c_ID3DXFileSaveData_GetSave(ID3DXFileSaveData* object,ID3DXFileSaveObject** ppObj) { return object->lpVtbl->GetSave(object,ppObj); }
+HRESULT c_ID3DXFileSaveData_GetType(ID3DXFileSaveData* object,GUID* type) { return object->lpVtbl->GetType(object,type); }
+HRESULT c_ID3DXFileSaveObject_AddDataObject(ID3DXFileSaveObject* object,REFGUID rguidTemplate,LPCSTR szName,GUID* pId,SIZE_T cbSize,LPCVOID pvData,ID3DXFileSaveData** ppObj) { return object->lpVtbl->AddDataObject(object,rguidTemplate,szName,pId,cbSize,pvData,ppObj); }
+HRESULT c_ID3DXFileSaveObject_GetFile(ID3DXFileSaveObject* object,ID3DXFile** ppFile) { return object->lpVtbl->GetFile(object,ppFile); }
+HRESULT c_ID3DXFileSaveObject_Save(ID3DXFileSaveObject* object) { return object->lpVtbl->Save(object); }
+HRESULT c_ID3DXFragmentLinker_AddFragments(ID3DXFragmentLinker* object,DWORD* pFragments) { return object->lpVtbl->AddFragments(object,pFragments); }
+HRESULT c_ID3DXFragmentLinker_ClearCache(ID3DXFragmentLinker* object) { return object->lpVtbl->ClearCache(object); }
+HRESULT c_ID3DXFragmentLinker_GetAllFragments(ID3DXFragmentLinker* object,LPD3DXBUFFER* ppBuffer) { return object->lpVtbl->GetAllFragments(object,ppBuffer); }
+HRESULT c_ID3DXFragmentLinker_GetDevice(ID3DXFragmentLinker* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXFragmentLinker_GetFragment(ID3DXFragmentLinker* object,D3DXHANDLE Name,LPD3DXBUFFER* ppBuffer) { return object->lpVtbl->GetFragment(object,Name,ppBuffer); }
+HRESULT c_ID3DXFragmentLinker_GetFragmentDesc(ID3DXFragmentLinker* object,D3DXHANDLE Name,LPD3DXFRAGMENT_DESC FragDesc) { return object->lpVtbl->GetFragmentDesc(object,Name,FragDesc); }
+D3DXHANDLE c_ID3DXFragmentLinker_GetFragmentHandleByIndex(ID3DXFragmentLinker* object,UINT Index) { return object->lpVtbl->GetFragmentHandleByIndex(object,Index); }
+D3DXHANDLE c_ID3DXFragmentLinker_GetFragmentHandleByName(ID3DXFragmentLinker* object,LPCSTR Name) { return object->lpVtbl->GetFragmentHandleByName(object,Name); }
+UINT c_ID3DXFragmentLinker_GetNumberOfFragments(ID3DXFragmentLinker* object) { return object->lpVtbl->GetNumberOfFragments(object); }
+HRESULT c_ID3DXFragmentLinker_LinkPixelShader(ID3DXFragmentLinker* object,LPCSTR pProfile,DWORD Flags,D3DXHANDLE* rgFragmentHandles,UINT cFragments,LPDIRECT3DPIXELSHADER9* pPShader,LPD3DXBUFFER* ppErrorMsgs) { return object->lpVtbl->LinkPixelShader(object,pProfile,Flags,rgFragmentHandles,cFragments,pPShader,ppErrorMsgs); }
+HRESULT c_ID3DXFragmentLinker_LinkShader(ID3DXFragmentLinker* object,LPCSTR pProfile,DWORD Flags,D3DXHANDLE* rgFragmentHandles,UINT cFragments,LPD3DXBUFFER* ppBuffer,LPD3DXBUFFER* ppErrorMsgs) { return object->lpVtbl->LinkShader(object,pProfile,Flags,rgFragmentHandles,cFragments,ppBuffer,ppErrorMsgs); }
+HRESULT c_ID3DXFragmentLinker_LinkVertexShader(ID3DXFragmentLinker* object,LPCSTR pProfile,DWORD Flags,D3DXHANDLE* rgFragmentHandles,UINT cFragments,LPDIRECT3DVERTEXSHADER9* pVShader,LPD3DXBUFFER* ppErrorMsgs) { return object->lpVtbl->LinkVertexShader(object,pProfile,Flags,rgFragmentHandles,cFragments,pVShader,ppErrorMsgs); }
+HRESULT c_ID3DXInclude_Close(ID3DXInclude* object,LPCVOID pData) { return object->lpVtbl->Close(object,pData); }
+HRESULT c_ID3DXInclude_Open(ID3DXInclude* object,D3DXINCLUDE_TYPE IncludeType,LPCSTR pFileName,LPCVOID pParentData,LPCVOID* ppData,UINT* pBytes) { return object->lpVtbl->Open(object,IncludeType,pFileName,pParentData,ppData,pBytes); }
+HRESULT c_ID3DXKeyframedAnimationSet_Compress(ID3DXKeyframedAnimationSet* object,DWORD Flags,FLOAT Lossiness,LPD3DXFRAME pHierarchy,LPD3DXBUFFER* ppCompressedData) { return object->lpVtbl->Compress(object,Flags,Lossiness,pHierarchy,ppCompressedData); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetCallbackKey(ID3DXKeyframedAnimationSet* object,UINT Animation,LPD3DXKEY_CALLBACK pCallbackKeys) { return object->lpVtbl->GetCallbackKey(object,Animation,pCallbackKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetCallbackKeys(ID3DXKeyframedAnimationSet* object,LPD3DXKEY_CALLBACK pCallbackKeys) { return object->lpVtbl->GetCallbackKeys(object,pCallbackKeys); }
+UINT c_ID3DXKeyframedAnimationSet_GetNumCallbackKeys(ID3DXKeyframedAnimationSet* object) { return object->lpVtbl->GetNumCallbackKeys(object); }
+UINT c_ID3DXKeyframedAnimationSet_GetNumRotationKeys(ID3DXKeyframedAnimationSet* object,UINT Animation) { return object->lpVtbl->GetNumRotationKeys(object,Animation); }
+UINT c_ID3DXKeyframedAnimationSet_GetNumScaleKeys(ID3DXKeyframedAnimationSet* object,UINT Animation) { return object->lpVtbl->GetNumScaleKeys(object,Animation); }
+UINT c_ID3DXKeyframedAnimationSet_GetNumTranslationKeys(ID3DXKeyframedAnimationSet* object,UINT Animation) { return object->lpVtbl->GetNumTranslationKeys(object,Animation); }
+D3DXPLAYBACK_TYPE c_ID3DXKeyframedAnimationSet_GetPlaybackType(ID3DXKeyframedAnimationSet* object) { return object->lpVtbl->GetPlaybackType(object); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetRotationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_QUATERNION pRotationKeys) { return object->lpVtbl->GetRotationKey(object,Animation,Key,pRotationKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetRotationKeys(ID3DXKeyframedAnimationSet* object,UINT Animation,LPD3DXKEY_QUATERNION pRotationKeys) { return object->lpVtbl->GetRotationKeys(object,Animation,pRotationKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetScaleKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_VECTOR3 pScaleKeys) { return object->lpVtbl->GetScaleKey(object,Animation,Key,pScaleKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetScaleKeys(ID3DXKeyframedAnimationSet* object,UINT Animation,LPD3DXKEY_VECTOR3 pScaleKeys) { return object->lpVtbl->GetScaleKeys(object,Animation,pScaleKeys); }
+DOUBLE c_ID3DXKeyframedAnimationSet_GetSourceTicksPerSecond(ID3DXKeyframedAnimationSet* object) { return object->lpVtbl->GetSourceTicksPerSecond(object); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetTranslationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_VECTOR3 pTranslationKey) { return object->lpVtbl->GetTranslationKey(object,Animation,Key,pTranslationKey); }
+HRESULT c_ID3DXKeyframedAnimationSet_GetTranslationKeys(ID3DXKeyframedAnimationSet* object,UINT Animation,LPD3DXKEY_VECTOR3 pTranslationKeys) { return object->lpVtbl->GetTranslationKeys(object,Animation,pTranslationKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_RegisterAnimationSRTKeys(ID3DXKeyframedAnimationSet* object,LPCSTR pName,UINT NumScaleKeys,UINT NumRotationKeys,UINT NumTranslationKeys,LPD3DXKEY_VECTOR3* pScaleKeys,LPD3DXKEY_QUATERNION* pRotationKeys,LPD3DXKEY_VECTOR3* pTranslationKeys,DWORD* pAnimationIndex) { return object->lpVtbl->RegisterAnimationSRTKeys(object,pName,NumScaleKeys,NumRotationKeys,NumTranslationKeys,pScaleKeys,pRotationKeys,pTranslationKeys,pAnimationIndex); }
+HRESULT c_ID3DXKeyframedAnimationSet_SetCallbackKey(ID3DXKeyframedAnimationSet* object,UINT Animation,LPD3DXKEY_CALLBACK pCallbackKeys) { return object->lpVtbl->SetCallbackKey(object,Animation,pCallbackKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_SetRotationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_QUATERNION pRotationKeys) { return object->lpVtbl->SetRotationKey(object,Animation,Key,pRotationKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_SetScaleKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_VECTOR3 pScaleKeys) { return object->lpVtbl->SetScaleKey(object,Animation,Key,pScaleKeys); }
+HRESULT c_ID3DXKeyframedAnimationSet_SetTranslationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key,LPD3DXKEY_VECTOR3 pTranslationKey) { return object->lpVtbl->SetTranslationKey(object,Animation,Key,pTranslationKey); }
+HRESULT c_ID3DXKeyframedAnimationSet_UnregisterAnimation(ID3DXKeyframedAnimationSet* object,UINT Index) { return object->lpVtbl->UnregisterAnimation(object,Index); }
+HRESULT c_ID3DXKeyframedAnimationSet_UnregisterRotationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key) { return object->lpVtbl->UnregisterRotationKey(object,Animation,Key); }
+HRESULT c_ID3DXKeyframedAnimationSet_UnregisterScaleKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key) { return object->lpVtbl->UnregisterScaleKey(object,Animation,Key); }
+HRESULT c_ID3DXKeyframedAnimationSet_UnregisterTranslationKey(ID3DXKeyframedAnimationSet* object,UINT Animation,UINT Key) { return object->lpVtbl->UnregisterTranslationKey(object,Animation,Key); }
+HRESULT c_ID3DXLine_Begin(ID3DXLine* object) { return object->lpVtbl->Begin(object); }
+HRESULT c_ID3DXLine_Draw(ID3DXLine* object,D3DXVECTOR2* pVertexList,DWORD dwVertexListCount,D3DCOLOR Color) { return object->lpVtbl->Draw(object,pVertexList,dwVertexListCount,Color); }
+HRESULT c_ID3DXLine_DrawTransform(ID3DXLine* object,D3DXVECTOR3* pVertexList,DWORD dwVertexListCount,D3DXMATRIX* pTransform,D3DCOLOR Color) { return object->lpVtbl->DrawTransform(object,pVertexList,dwVertexListCount,pTransform,Color); }
+HRESULT c_ID3DXLine_End(ID3DXLine* object) { return object->lpVtbl->End(object); }
+BOOL c_ID3DXLine_GetAntialias(ID3DXLine* object) { return object->lpVtbl->GetAntialias(object); }
+HRESULT c_ID3DXLine_GetDevice(ID3DXLine* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+BOOL c_ID3DXLine_GetGLLines(ID3DXLine* object) { return object->lpVtbl->GetGLLines(object); }
+DWORD c_ID3DXLine_GetPattern(ID3DXLine* object) { return object->lpVtbl->GetPattern(object); }
+FLOAT c_ID3DXLine_GetPatternScale(ID3DXLine* object) { return object->lpVtbl->GetPatternScale(object); }
+FLOAT c_ID3DXLine_GetWidth(ID3DXLine* object) { return object->lpVtbl->GetWidth(object); }
+HRESULT c_ID3DXLine_OnLostDevice(ID3DXLine* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXLine_OnResetDevice(ID3DXLine* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXLine_SetAntialias(ID3DXLine* object,BOOL bAntiAlias) { return object->lpVtbl->SetAntialias(object,bAntiAlias); }
+HRESULT c_ID3DXLine_SetGLLines(ID3DXLine* object,BOOL bGLLines) { return object->lpVtbl->SetGLLines(object,bGLLines); }
+HRESULT c_ID3DXLine_SetPattern(ID3DXLine* object,DWORD dwPattern) { return object->lpVtbl->SetPattern(object,dwPattern); }
+HRESULT c_ID3DXLine_SetPatternScale(ID3DXLine* object,FLOAT fPatternScale) { return object->lpVtbl->SetPatternScale(object,fPatternScale); }
+HRESULT c_ID3DXLine_SetWidth(ID3DXLine* object,FLOAT fWidth) { return object->lpVtbl->SetWidth(object,fWidth); }
+HRESULT c_ID3DXMesh_LockAttributeBuffer(ID3DXMesh* object,DWORD Flags,DWORD** ppData) { return object->lpVtbl->LockAttributeBuffer(object,Flags,ppData); }
+HRESULT c_ID3DXMesh_Optimize(ID3DXMesh* object,DWORD Flags,DWORD* pAdjacencyIn,DWORD* pAdjacencyOut,DWORD* pFaceRemap,LPD3DXBUFFER* ppVertexRemap,LPD3DXMESH* ppOptMesh) { return object->lpVtbl->Optimize(object,Flags,pAdjacencyIn,pAdjacencyOut,pFaceRemap,ppVertexRemap,ppOptMesh); }
+HRESULT c_ID3DXMesh_OptimizeInplace(ID3DXMesh* object,DWORD Flags,DWORD* pAdjacencyIn,DWORD* pAdjacencyOut,DWORD* pFaceRemap,LPD3DXBUFFER* ppVertexRemap) { return object->lpVtbl->OptimizeInplace(object,Flags,pAdjacencyIn,pAdjacencyOut,pFaceRemap,ppVertexRemap); }
+HRESULT c_ID3DXMesh_SetAttributeTable(ID3DXMesh* object,D3DXATTRIBUTERANGE* pAttribTable,DWORD cAttribTableSize) { return object->lpVtbl->SetAttributeTable(object,pAttribTable,cAttribTableSize); }
+HRESULT c_ID3DXMesh_UnlockAttributeBuffer(ID3DXMesh* object) { return object->lpVtbl->UnlockAttributeBuffer(object); }
+HRESULT c_ID3DXPatchMesh_CloneMesh(ID3DXPatchMesh* object,DWORD Options,D3DVERTEXELEMENT9* pDecl,LPD3DXPATCHMESH* pMesh) { return object->lpVtbl->CloneMesh(object,Options,pDecl,pMesh); }
+HRESULT c_ID3DXPatchMesh_GenerateAdjacency(ID3DXPatchMesh* object,FLOAT fTolerance) { return object->lpVtbl->GenerateAdjacency(object,fTolerance); }
+DWORD c_ID3DXPatchMesh_GetControlVerticesPerPatch(ID3DXPatchMesh* object) { return object->lpVtbl->GetControlVerticesPerPatch(object); }
+HRESULT c_ID3DXPatchMesh_GetDeclaration(ID3DXPatchMesh* object,LPD3DVERTEXELEMENT9 pDeclaration[MAX_FVF_DECL_SIZE]) { return object->lpVtbl->GetDeclaration(object,pDeclaration); }
+HRESULT c_ID3DXPatchMesh_GetDevice(ID3DXPatchMesh* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXPatchMesh_GetDisplaceParam(ID3DXPatchMesh* object,LPDIRECT3DBASETEXTURE9* Texture,D3DTEXTUREFILTERTYPE* MinFilter,D3DTEXTUREFILTERTYPE* MagFilter,D3DTEXTUREFILTERTYPE* MipFilter,D3DTEXTUREADDRESS* Wrap,DWORD* dwLODBias) { return object->lpVtbl->GetDisplaceParam(object,Texture,MinFilter,MagFilter,MipFilter,Wrap,dwLODBias); }
+HRESULT c_ID3DXPatchMesh_GetIndexBuffer(ID3DXPatchMesh* object,LPDIRECT3DINDEXBUFFER9* ppIB) { return object->lpVtbl->GetIndexBuffer(object,ppIB); }
+DWORD c_ID3DXPatchMesh_GetNumPatches(ID3DXPatchMesh* object) { return object->lpVtbl->GetNumPatches(object); }
+DWORD c_ID3DXPatchMesh_GetNumVertices(ID3DXPatchMesh* object) { return object->lpVtbl->GetNumVertices(object); }
+DWORD c_ID3DXPatchMesh_GetOptions(ID3DXPatchMesh* object) { return object->lpVtbl->GetOptions(object); }
+HRESULT c_ID3DXPatchMesh_GetPatchInfo(ID3DXPatchMesh* object,LPD3DXPATCHINFO PatchInfo) { return object->lpVtbl->GetPatchInfo(object,PatchInfo); }
+HRESULT c_ID3DXPatchMesh_GetTessSize(ID3DXPatchMesh* object,FLOAT fTessLevel,DWORD Adaptive,DWORD* NumTriangles,DWORD* NumVertices) { return object->lpVtbl->GetTessSize(object,fTessLevel,Adaptive,NumTriangles,NumVertices); }
+HRESULT c_ID3DXPatchMesh_GetVertexBuffer(ID3DXPatchMesh* object,LPDIRECT3DVERTEXBUFFER9* ppVB) { return object->lpVtbl->GetVertexBuffer(object,ppVB); }
+HRESULT c_ID3DXPatchMesh_LockAttributeBuffer(ID3DXPatchMesh* object,DWORD flags,DWORD** ppData) { return object->lpVtbl->LockAttributeBuffer(object,flags,ppData); }
+HRESULT c_ID3DXPatchMesh_LockIndexBuffer(ID3DXPatchMesh* object,DWORD flags,LPVOID* ppData) { return object->lpVtbl->LockIndexBuffer(object,flags,ppData); }
+HRESULT c_ID3DXPatchMesh_LockVertexBuffer(ID3DXPatchMesh* object,DWORD flags,LPVOID* ppData) { return object->lpVtbl->LockVertexBuffer(object,flags,ppData); }
+HRESULT c_ID3DXPatchMesh_Optimize(ID3DXPatchMesh* object,DWORD Flags) { return object->lpVtbl->Optimize(object,Flags); }
+HRESULT c_ID3DXPatchMesh_SetDisplaceParam(ID3DXPatchMesh* object,LPDIRECT3DBASETEXTURE9 Texture,D3DTEXTUREFILTERTYPE MinFilter,D3DTEXTUREFILTERTYPE MagFilter,D3DTEXTUREFILTERTYPE MipFilter,D3DTEXTUREADDRESS Wrap,DWORD dwLODBias) { return object->lpVtbl->SetDisplaceParam(object,Texture,MinFilter,MagFilter,MipFilter,Wrap,dwLODBias); }
+HRESULT c_ID3DXPatchMesh_Tessellate(ID3DXPatchMesh* object,FLOAT fTessLevel,LPD3DXMESH pMesh) { return object->lpVtbl->Tessellate(object,fTessLevel,pMesh); }
+HRESULT c_ID3DXPatchMesh_TessellateAdaptive(ID3DXPatchMesh* object,D3DXVECTOR4* pTrans,DWORD dwMaxTessLevel,DWORD dwMinTessLevel,LPD3DXMESH pMesh) { return object->lpVtbl->TessellateAdaptive(object,pTrans,dwMaxTessLevel,dwMinTessLevel,pMesh); }
+HRESULT c_ID3DXPatchMesh_UnlockAttributeBuffer(ID3DXPatchMesh* object) { return object->lpVtbl->UnlockAttributeBuffer(object); }
+HRESULT c_ID3DXPatchMesh_UnlockIndexBuffer(ID3DXPatchMesh* object) { return object->lpVtbl->UnlockIndexBuffer(object); }
+HRESULT c_ID3DXPatchMesh_UnlockVertexBuffer(ID3DXPatchMesh* object) { return object->lpVtbl->UnlockVertexBuffer(object); }
+HRESULT c_ID3DXPMesh_ClonePMesh(ID3DXPMesh* object,DWORD Options,D3DVERTEXELEMENT9* pDeclaration,LPDIRECT3DDEVICE9 pD3DDevice,LPD3DXPMESH* ppCloneMesh) { return object->lpVtbl->ClonePMesh(object,Options,pDeclaration,pD3DDevice,ppCloneMesh); }
+HRESULT c_ID3DXPMesh_ClonePMeshFVF(ID3DXPMesh* object,DWORD Options,DWORD FVF,LPDIRECT3DDEVICE9 pD3DDevice,LPD3DXPMESH* ppCloneMesh) { return object->lpVtbl->ClonePMeshFVF(object,Options,FVF,pD3DDevice,ppCloneMesh); }
+HRESULT c_ID3DXPMesh_GenerateVertexHistory(ID3DXPMesh* object,DWORD* pVertexHistory) { return object->lpVtbl->GenerateVertexHistory(object,pVertexHistory); }
+HRESULT c_ID3DXPMesh_GetAdjacency(ID3DXPMesh* object,DWORD* pAdjacency) { return object->lpVtbl->GetAdjacency(object,pAdjacency); }
+DWORD c_ID3DXPMesh_GetMaxFaces(ID3DXPMesh* object) { return object->lpVtbl->GetMaxFaces(object); }
+DWORD c_ID3DXPMesh_GetMaxVertices(ID3DXPMesh* object) { return object->lpVtbl->GetMaxVertices(object); }
+DWORD c_ID3DXPMesh_GetMinFaces(ID3DXPMesh* object) { return object->lpVtbl->GetMinFaces(object); }
+DWORD c_ID3DXPMesh_GetMinVertices(ID3DXPMesh* object) { return object->lpVtbl->GetMinVertices(object); }
+HRESULT c_ID3DXPMesh_Optimize(ID3DXPMesh* object,DWORD Flags,DWORD* pAdjacencyOut,DWORD* pFaceRemap,LPD3DXBUFFER* ppVertexRemap,LPD3DXMESH* ppOptMesh) { return object->lpVtbl->Optimize(object,Flags,pAdjacencyOut,pFaceRemap,ppVertexRemap,ppOptMesh); }
+HRESULT c_ID3DXPMesh_OptimizeBaseLOD(ID3DXPMesh* object,DWORD Flags,DWORD* pFaceRemap) { return object->lpVtbl->OptimizeBaseLOD(object,Flags,pFaceRemap); }
+HRESULT c_ID3DXPMesh_Save(ID3DXPMesh* object,IStream* pStream,D3DXMATERIAL* pMaterials,D3DXEFFECTINSTANCE* pEffectInstances,DWORD NumMaterials) { return object->lpVtbl->Save(object,pStream,pMaterials,pEffectInstances,NumMaterials); }
+HRESULT c_ID3DXPMesh_SetNumFaces(ID3DXPMesh* object,DWORD Faces) { return object->lpVtbl->SetNumFaces(object,Faces); }
+HRESULT c_ID3DXPMesh_SetNumVertices(ID3DXPMesh* object,DWORD Vertices) { return object->lpVtbl->SetNumVertices(object,Vertices); }
+HRESULT c_ID3DXPMesh_TrimByFaces(ID3DXPMesh* object,DWORD NewFacesMin,DWORD NewFacesMax,DWORD* rgiFaceRemap,DWORD* rgiVertRemap) { return object->lpVtbl->TrimByFaces(object,NewFacesMin,NewFacesMax,rgiFaceRemap,rgiVertRemap); }
+HRESULT c_ID3DXPMesh_TrimByVertices(ID3DXPMesh* object,DWORD NewVerticesMin,DWORD NewVerticessMax,DWORD* rgiFaceRemap,DWORD* rgiVertRemap) { return object->lpVtbl->TrimByVertices(object,NewVerticesMin,NewVerticessMax,rgiFaceRemap,rgiVertRemap); }
+HRESULT c_ID3DXPRTBuffer_AddBuffer(ID3DXPRTBuffer* object,LPD3DXPRTBUFFER pBuffer) { return object->lpVtbl->AddBuffer(object,pBuffer); }
+HRESULT c_ID3DXPRTBuffer_AttachGH(ID3DXPRTBuffer* object,LPD3DXTEXTUREGUTTERHELPER pGH) { return object->lpVtbl->AttachGH(object,pGH); }
+HRESULT c_ID3DXPRTBuffer_EvalGH(ID3DXPRTBuffer* object) { return object->lpVtbl->EvalGH(object); }
+HRESULT c_ID3DXPRTBuffer_ExtractTexture(ID3DXPRTBuffer* object,UINT Channel,UINT StartCoefficient,UINT NumCoefficients,LPDIRECT3DTEXTURE9 pTexture) { return object->lpVtbl->ExtractTexture(object,Channel,StartCoefficient,NumCoefficients,pTexture); }
+HRESULT c_ID3DXPRTBuffer_ExtractToMesh(ID3DXPRTBuffer* object,UINT NumCoefficients,D3DDECLUSAGE Usage,UINT UsageIndexStart,LPD3DXMESH pScene) { return object->lpVtbl->ExtractToMesh(object,NumCoefficients,Usage,UsageIndexStart,pScene); }
+UINT c_ID3DXPRTBuffer_GetHeight(ID3DXPRTBuffer* object) { return object->lpVtbl->GetHeight(object); }
+UINT c_ID3DXPRTBuffer_GetNumChannels(ID3DXPRTBuffer* object) { return object->lpVtbl->GetNumChannels(object); }
+UINT c_ID3DXPRTBuffer_GetNumCoeffs(ID3DXPRTBuffer* object) { return object->lpVtbl->GetNumCoeffs(object); }
+UINT c_ID3DXPRTBuffer_GetNumSamples(ID3DXPRTBuffer* object) { return object->lpVtbl->GetNumSamples(object); }
+UINT c_ID3DXPRTBuffer_GetWidth(ID3DXPRTBuffer* object) { return object->lpVtbl->GetWidth(object); }
+BOOL c_ID3DXPRTBuffer_IsTexture(ID3DXPRTBuffer* object) { return object->lpVtbl->IsTexture(object); }
+HRESULT c_ID3DXPRTBuffer_LockBuffer(ID3DXPRTBuffer* object,UINT Start,UINT NumSamples,FLOAT** ppData) { return object->lpVtbl->LockBuffer(object,Start,NumSamples,ppData); }
+HRESULT c_ID3DXPRTBuffer_ReleaseGH(ID3DXPRTBuffer* object) { return object->lpVtbl->ReleaseGH(object); }
+HRESULT c_ID3DXPRTBuffer_Resize(ID3DXPRTBuffer* object,UINT NewSize) { return object->lpVtbl->Resize(object,NewSize); }
+HRESULT c_ID3DXPRTBuffer_ScaleBuffer(ID3DXPRTBuffer* object,FLOAT Scale) { return object->lpVtbl->ScaleBuffer(object,Scale); }
+HRESULT c_ID3DXPRTBuffer_UnlockBuffer(ID3DXPRTBuffer* object) { return object->lpVtbl->UnlockBuffer(object); }
+HRESULT c_ID3DXPRTCompBuffer_ExtractBasis(ID3DXPRTCompBuffer* object,UINT Cluster,FLOAT* pClusterBasis) { return object->lpVtbl->ExtractBasis(object,Cluster,pClusterBasis); }
+HRESULT c_ID3DXPRTCompBuffer_ExtractClusterIDs(ID3DXPRTCompBuffer* object,UINT* pClusterIDs) { return object->lpVtbl->ExtractClusterIDs(object,pClusterIDs); }
+HRESULT c_ID3DXPRTCompBuffer_ExtractPCA(ID3DXPRTCompBuffer* object,UINT StartPCA,UINT NumExtract,FLOAT* pPCACoefficients) { return object->lpVtbl->ExtractPCA(object,StartPCA,NumExtract,pPCACoefficients); }
+HRESULT c_ID3DXPRTCompBuffer_ExtractTexture(ID3DXPRTCompBuffer* object,UINT StartPCA,UINT NumPCA,LPDIRECT3DTEXTURE9 pTexture) { return object->lpVtbl->ExtractTexture(object,StartPCA,NumPCA,pTexture); }
+HRESULT c_ID3DXPRTCompBuffer_ExtractToMesh(ID3DXPRTCompBuffer* object,UINT NumPCA,D3DDECLUSAGE Usage,UINT UsageIndexStart,LPD3DXMESH pScene) { return object->lpVtbl->ExtractToMesh(object,NumPCA,Usage,UsageIndexStart,pScene); }
+UINT c_ID3DXPRTCompBuffer_GetHeight(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetHeight(object); }
+UINT c_ID3DXPRTCompBuffer_GetNumChannels(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetNumChannels(object); }
+UINT c_ID3DXPRTCompBuffer_GetNumClusters(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetNumClusters(object); }
+UINT c_ID3DXPRTCompBuffer_GetNumCoeffs(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetNumCoeffs(object); }
+UINT c_ID3DXPRTCompBuffer_GetNumPCA(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetNumPCA(object); }
+UINT c_ID3DXPRTCompBuffer_GetNumSamples(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetNumSamples(object); }
+UINT c_ID3DXPRTCompBuffer_GetWidth(ID3DXPRTCompBuffer* object) { return object->lpVtbl->GetWidth(object); }
+BOOL c_ID3DXPRTCompBuffer_IsTexture(ID3DXPRTCompBuffer* object) { return object->lpVtbl->IsTexture(object); }
+HRESULT c_ID3DXPRTCompBuffer_NormalizeData(ID3DXPRTCompBuffer* object) { return object->lpVtbl->NormalizeData(object); }
+BOOL c_ID3DXPRTEngine_ClosestRayIntersects(ID3DXPRTEngine* object,D3DXVECTOR3* pRayPos,D3DXVECTOR3* pRayDir,DWORD* pFaceIndex,FLOAT* pU,FLOAT* pV,FLOAT* pDist) { return object->lpVtbl->ClosestRayIntersects(object,pRayPos,pRayDir,pFaceIndex,pU,pV,pDist); }
+HRESULT c_ID3DXPRTEngine_ComputeBounce(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataIn,LPD3DXPRTBUFFER pDataOut,LPD3DXPRTBUFFER pDataTotal) { return object->lpVtbl->ComputeBounce(object,pDataIn,pDataOut,pDataTotal); }
+HRESULT c_ID3DXPRTEngine_ComputeBounceAdaptive(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataIn,FLOAT AdaptiveThresh,FLOAT MinEdgeLength,UINT MaxSubdiv,LPD3DXPRTBUFFER pDataOut,LPD3DXPRTBUFFER pDataTotal) { return object->lpVtbl->ComputeBounceAdaptive(object,pDataIn,AdaptiveThresh,MinEdgeLength,MaxSubdiv,pDataOut,pDataTotal); }
+HRESULT c_ID3DXPRTEngine_ComputeDirectLightingSH(ID3DXPRTEngine* object,UINT Order,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeDirectLightingSH(object,Order,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeDirectLightingSHAdaptive(ID3DXPRTEngine* object,UINT Order,FLOAT AdaptiveThresh,FLOAT MinEdgeLength,UINT MaxSubdiv,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeDirectLightingSHAdaptive(object,Order,AdaptiveThresh,MinEdgeLength,MaxSubdiv,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeDirectLightingSHGPU(ID3DXPRTEngine* object,LPDIRECT3DDEVICE9 pDevice,UINT Flags,UINT Order,FLOAT ZBias,FLOAT ZAngleBias,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeDirectLightingSHGPU(object,pDevice,Flags,Order,ZBias,ZAngleBias,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeLDPRTCoeffs(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataIn,UINT Order,D3DXVECTOR3* pNormOut,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeLDPRTCoeffs(object,pDataIn,Order,pNormOut,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeSS(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataIn,LPD3DXPRTBUFFER pDataOut,LPD3DXPRTBUFFER pDataTotal) { return object->lpVtbl->ComputeSS(object,pDataIn,pDataOut,pDataTotal); }
+HRESULT c_ID3DXPRTEngine_ComputeSSAdaptive(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataIn,FLOAT AdaptiveThresh,FLOAT MinEdgeLength,UINT MaxSubdiv,LPD3DXPRTBUFFER pDataOut,LPD3DXPRTBUFFER pDataTotal) { return object->lpVtbl->ComputeSSAdaptive(object,pDataIn,AdaptiveThresh,MinEdgeLength,MaxSubdiv,pDataOut,pDataTotal); }
+HRESULT c_ID3DXPRTEngine_ComputeSurfSamplesBounce(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pSurfDataIn,UINT NumSamples,D3DXVECTOR3* pSampleLocs,D3DXVECTOR3* pSampleNorms,LPD3DXPRTBUFFER pDataOut,LPD3DXPRTBUFFER pDataTotal) { return object->lpVtbl->ComputeSurfSamplesBounce(object,pSurfDataIn,NumSamples,pSampleLocs,pSampleNorms,pDataOut,pDataTotal); }
+HRESULT c_ID3DXPRTEngine_ComputeSurfSamplesDirectSH(ID3DXPRTEngine* object,UINT SHOrder,UINT NumSamples,D3DXVECTOR3* pSampleLocs,D3DXVECTOR3* pSampleNorms,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeSurfSamplesDirectSH(object,SHOrder,NumSamples,pSampleLocs,pSampleNorms,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeVolumeSamples(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pSurfDataIn,UINT Order,UINT NumVolSamples,D3DXVECTOR3* pSampleLocs,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeVolumeSamples(object,pSurfDataIn,Order,NumVolSamples,pSampleLocs,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ComputeVolumeSamplesDirectSH(ID3DXPRTEngine* object,UINT OrderIn,UINT OrderOut,UINT NumVolSamples,D3DXVECTOR3* pSampleLocs,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ComputeVolumeSamplesDirectSH(object,OrderIn,OrderOut,NumVolSamples,pSampleLocs,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ExtractPerVertexAlbedo(ID3DXPRTEngine* object,LPD3DXMESH pMesh,D3DDECLUSAGE Usage,UINT NumChanIn) { return object->lpVtbl->ExtractPerVertexAlbedo(object,pMesh,Usage,NumChanIn); }
+HRESULT c_ID3DXPRTEngine_FreeBounceData(ID3DXPRTEngine* object) { return object->lpVtbl->FreeBounceData(object); }
+HRESULT c_ID3DXPRTEngine_FreeSSData(ID3DXPRTEngine* object) { return object->lpVtbl->FreeSSData(object); }
+HRESULT c_ID3DXPRTEngine_GetAdaptedMesh(ID3DXPRTEngine* object,LPDIRECT3DDEVICE9 pDevice,UINT* pFaceRemap,UINT* pVertRemap,FLOAT* pfVertWeights,LPD3DXMESH* ppMesh) { return object->lpVtbl->GetAdaptedMesh(object,pDevice,pFaceRemap,pVertRemap,pfVertWeights,ppMesh); }
+UINT c_ID3DXPRTEngine_GetNumFaces(ID3DXPRTEngine* object) { return object->lpVtbl->GetNumFaces(object); }
+UINT c_ID3DXPRTEngine_GetNumVerts(ID3DXPRTEngine* object) { return object->lpVtbl->GetNumVerts(object); }
+HRESULT c_ID3DXPRTEngine_GetVertexAlbedo(ID3DXPRTEngine* object,D3DXCOLOR* pVertColors,UINT NumVerts) { return object->lpVtbl->GetVertexAlbedo(object,pVertColors,NumVerts); }
+HRESULT c_ID3DXPRTEngine_MultiplyAlbedo(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->MultiplyAlbedo(object,pDataOut); }
+HRESULT c_ID3DXPRTEngine_ResampleBuffer(ID3DXPRTEngine* object,LPD3DXPRTBUFFER pBufferIn,LPD3DXPRTBUFFER pBufferOut) { return object->lpVtbl->ResampleBuffer(object,pBufferIn,pBufferOut); }
+HRESULT c_ID3DXPRTEngine_RobustMeshRefine(ID3DXPRTEngine* object,FLOAT MinEdgeLength,UINT MaxSubdiv) { return object->lpVtbl->RobustMeshRefine(object,MinEdgeLength,MaxSubdiv); }
+HRESULT c_ID3DXPRTEngine_ScaleMeshChunk(ID3DXPRTEngine* object,UINT uMeshChunk,FLOAT fScale,LPD3DXPRTBUFFER pDataOut) { return object->lpVtbl->ScaleMeshChunk(object,uMeshChunk,fScale,pDataOut); }
+HRESULT c_ID3DXPRTEngine_SetCallBack(ID3DXPRTEngine* object,LPD3DXSHPRTSIMCB pCB,FLOAT Frequency,LPVOID lpUserContext) { return object->lpVtbl->SetCallBack(object,pCB,Frequency,lpUserContext); }
+HRESULT c_ID3DXPRTEngine_SetMinMaxIntersection(ID3DXPRTEngine* object,FLOAT fMin,FLOAT fMax) { return object->lpVtbl->SetMinMaxIntersection(object,fMin,fMax); }
+HRESULT c_ID3DXPRTEngine_SetPerTexelAlbedo(ID3DXPRTEngine* object,LPDIRECT3DTEXTURE9 pAlbedoTexture,UINT NumChannels,LPD3DXTEXTUREGUTTERHELPER pGH) { return object->lpVtbl->SetPerTexelAlbedo(object,pAlbedoTexture,NumChannels,pGH); }
+HRESULT c_ID3DXPRTEngine_SetPerTexelNormal(ID3DXPRTEngine* object,LPDIRECT3DTEXTURE9 pNormalTexture) { return object->lpVtbl->SetPerTexelNormal(object,pNormalTexture); }
+HRESULT c_ID3DXPRTEngine_SetPerVertexAlbedo(ID3DXPRTEngine* object,VOID* pDataIn,UINT NumChannels,UINT Stride) { return object->lpVtbl->SetPerVertexAlbedo(object,pDataIn,NumChannels,Stride); }
+HRESULT c_ID3DXPRTEngine_SetSamplingInfo(ID3DXPRTEngine* object,UINT NumRays,BOOL UseSphere,BOOL UseCosine,BOOL Adaptive,FLOAT AdaptiveThresh) { return object->lpVtbl->SetSamplingInfo(object,NumRays,UseSphere,UseCosine,Adaptive,AdaptiveThresh); }
+BOOL c_ID3DXPRTEngine_ShadowRayIntersects(ID3DXPRTEngine* object,D3DXVECTOR3* pRayPos,D3DXVECTOR3* pRayDir) { return object->lpVtbl->ShadowRayIntersects(object,pRayPos,pRayDir); }
+HRESULT c_ID3DXRenderToEnvMap_BeginCube(ID3DXRenderToEnvMap* object,LPDIRECT3DCUBETEXTURE9 pCubeTex) { return object->lpVtbl->BeginCube(object,pCubeTex); }
+HRESULT c_ID3DXRenderToEnvMap_BeginHemisphere(ID3DXRenderToEnvMap* object,LPDIRECT3DTEXTURE9 pTexZPos,LPDIRECT3DTEXTURE9 pTexZNeg) { return object->lpVtbl->BeginHemisphere(object,pTexZPos,pTexZNeg); }
+HRESULT c_ID3DXRenderToEnvMap_BeginParabolic(ID3DXRenderToEnvMap* object,LPDIRECT3DTEXTURE9 pTexZPos,LPDIRECT3DTEXTURE9 pTexZNeg) { return object->lpVtbl->BeginParabolic(object,pTexZPos,pTexZNeg); }
+HRESULT c_ID3DXRenderToEnvMap_BeginSphere(ID3DXRenderToEnvMap* object,LPDIRECT3DTEXTURE9 pTex) { return object->lpVtbl->BeginSphere(object,pTex); }
+HRESULT c_ID3DXRenderToEnvMap_End(ID3DXRenderToEnvMap* object,DWORD MipFilter) { return object->lpVtbl->End(object,MipFilter); }
+HRESULT c_ID3DXRenderToEnvMap_Face(ID3DXRenderToEnvMap* object,D3DCUBEMAP_FACES Face,DWORD MipFilter) { return object->lpVtbl->Face(object,Face,MipFilter); }
+HRESULT c_ID3DXRenderToEnvMap_GetDesc(ID3DXRenderToEnvMap* object,D3DXRTE_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_ID3DXRenderToEnvMap_GetDevice(ID3DXRenderToEnvMap* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXRenderToEnvMap_OnLostDevice(ID3DXRenderToEnvMap* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXRenderToEnvMap_OnResetDevice(ID3DXRenderToEnvMap* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXRenderToSurface_BeginScene(ID3DXRenderToSurface* object,LPDIRECT3DSURFACE9 pSurface,D3DVIEWPORT9* pViewport) { return object->lpVtbl->BeginScene(object,pSurface,pViewport); }
+HRESULT c_ID3DXRenderToSurface_EndScene(ID3DXRenderToSurface* object,DWORD MipFilter) { return object->lpVtbl->EndScene(object,MipFilter); }
+HRESULT c_ID3DXRenderToSurface_GetDesc(ID3DXRenderToSurface* object,D3DXRTS_DESC* pParameters) { return object->lpVtbl->GetDesc(object,pParameters); }
+HRESULT c_ID3DXRenderToSurface_GetDevice(ID3DXRenderToSurface* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXRenderToSurface_OnLostDevice(ID3DXRenderToSurface* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXRenderToSurface_OnResetDevice(ID3DXRenderToSurface* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXSkinInfo_Clone(ID3DXSkinInfo* object,LPD3DXSKININFO* ppSkinInfo) { return object->lpVtbl->Clone(object,ppSkinInfo); }
+HRESULT c_ID3DXSkinInfo_ConvertToBlendedMesh(ID3DXSkinInfo* object,LPD3DXMESH pMesh,DWORD Options,DWORD* pAdjacencyIn,LPDWORD pAdjacencyOut,DWORD* pFaceRemap,LPD3DXBUFFER* ppVertexRemap,DWORD* pMaxVertexInfl,DWORD* pNumBoneCombinations,LPD3DXBUFFER* ppBoneCombinationTable,LPD3DXMESH* ppMesh) { return object->lpVtbl->ConvertToBlendedMesh(object,pMesh,Options,pAdjacencyIn,pAdjacencyOut,pFaceRemap,ppVertexRemap,pMaxVertexInfl,pNumBoneCombinations,ppBoneCombinationTable,ppMesh); }
+HRESULT c_ID3DXSkinInfo_ConvertToIndexedBlendedMesh(ID3DXSkinInfo* object,LPD3DXMESH pMesh,DWORD Options,DWORD paletteSize,DWORD* pAdjacencyIn,LPDWORD pAdjacencyOut,DWORD* pFaceRemap,LPD3DXBUFFER* ppVertexRemap,DWORD* pMaxVertexInfl,DWORD* pNumBoneCombinations,LPD3DXBUFFER* ppBoneCombinationTable,LPD3DXMESH* ppMesh) { return object->lpVtbl->ConvertToIndexedBlendedMesh(object,pMesh,Options,paletteSize,pAdjacencyIn,pAdjacencyOut,pFaceRemap,ppVertexRemap,pMaxVertexInfl,pNumBoneCombinations,ppBoneCombinationTable,ppMesh); }
+HRESULT c_ID3DXSkinInfo_FindBoneVertexInfluenceIndex(ID3DXSkinInfo* object,DWORD boneNum,DWORD vertexNum,DWORD* pInfluenceIndex) { return object->lpVtbl->FindBoneVertexInfluenceIndex(object,boneNum,vertexNum,pInfluenceIndex); }
+HRESULT c_ID3DXSkinInfo_GetBoneInfluence(ID3DXSkinInfo* object,DWORD Bone,DWORD* vertices,FLOAT* weights) { return object->lpVtbl->GetBoneInfluence(object,Bone,vertices,weights); }
+LPCSTR c_ID3DXSkinInfo_GetBoneName(ID3DXSkinInfo* object,DWORD Bone) { return object->lpVtbl->GetBoneName(object,Bone); }
+LPD3DXMATRIX c_ID3DXSkinInfo_GetBoneOffsetMatrix(ID3DXSkinInfo* object,DWORD Bone) { return object->lpVtbl->GetBoneOffsetMatrix(object,Bone); }
+HRESULT c_ID3DXSkinInfo_GetBoneVertexInfluence(ID3DXSkinInfo* object,DWORD boneNum,DWORD influenceNum,FLOAT* pWeight,DWORD* pVertexNum) { return object->lpVtbl->GetBoneVertexInfluence(object,boneNum,influenceNum,pWeight,pVertexNum); }
+HRESULT c_ID3DXSkinInfo_GetDeclaration(ID3DXSkinInfo* object,D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) { return object->lpVtbl->GetDeclaration(object,Declaration); }
+DWORD c_ID3DXSkinInfo_GetFVF(ID3DXSkinInfo* object) { return object->lpVtbl->GetFVF(object); }
+HRESULT c_ID3DXSkinInfo_GetMaxFaceInfluences(ID3DXSkinInfo* object,LPDIRECT3DINDEXBUFFER9 pIB,DWORD NumFaces,DWORD* maxFaceInfluences) { return object->lpVtbl->GetMaxFaceInfluences(object,pIB,NumFaces,maxFaceInfluences); }
+HRESULT c_ID3DXSkinInfo_GetMaxVertexInfluences(ID3DXSkinInfo* object,DWORD* maxVertexInfluences) { return object->lpVtbl->GetMaxVertexInfluences(object,maxVertexInfluences); }
+FLOAT c_ID3DXSkinInfo_GetMinBoneInfluence(ID3DXSkinInfo* object) { return object->lpVtbl->GetMinBoneInfluence(object); }
+DWORD c_ID3DXSkinInfo_GetNumBoneInfluences(ID3DXSkinInfo* object,DWORD bone) { return object->lpVtbl->GetNumBoneInfluences(object,bone); }
+DWORD c_ID3DXSkinInfo_GetNumBones(ID3DXSkinInfo* object) { return object->lpVtbl->GetNumBones(object); }
+HRESULT c_ID3DXSkinInfo_Remap(ID3DXSkinInfo* object,DWORD NumVertices,DWORD* pVertexRemap) { return object->lpVtbl->Remap(object,NumVertices,pVertexRemap); }
+HRESULT c_ID3DXSkinInfo_SetBoneInfluence(ID3DXSkinInfo* object,DWORD Bone,DWORD numInfluences,DWORD* vertices,FLOAT* weights) { return object->lpVtbl->SetBoneInfluence(object,Bone,numInfluences,vertices,weights); }
+HRESULT c_ID3DXSkinInfo_SetBoneName(ID3DXSkinInfo* object,DWORD Bone,LPCSTR pName) { return object->lpVtbl->SetBoneName(object,Bone,pName); }
+HRESULT c_ID3DXSkinInfo_SetBoneOffsetMatrix(ID3DXSkinInfo* object,DWORD Bone,D3DXMATRIX* pBoneTransform) { return object->lpVtbl->SetBoneOffsetMatrix(object,Bone,pBoneTransform); }
+HRESULT c_ID3DXSkinInfo_SetBoneVertexInfluence(ID3DXSkinInfo* object,DWORD boneNum,DWORD influenceNum,FLOAT weight) { return object->lpVtbl->SetBoneVertexInfluence(object,boneNum,influenceNum,weight); }
+HRESULT c_ID3DXSkinInfo_SetDeclaration(ID3DXSkinInfo* object,D3DVERTEXELEMENT9* pDeclaration) { return object->lpVtbl->SetDeclaration(object,pDeclaration); }
+HRESULT c_ID3DXSkinInfo_SetFVF(ID3DXSkinInfo* object,DWORD FVF) { return object->lpVtbl->SetFVF(object,FVF); }
+HRESULT c_ID3DXSkinInfo_SetMinBoneInfluence(ID3DXSkinInfo* object,FLOAT MinInfl) { return object->lpVtbl->SetMinBoneInfluence(object,MinInfl); }
+HRESULT c_ID3DXSkinInfo_UpdateSkinnedMesh(ID3DXSkinInfo* object,D3DXMATRIX* pBoneTransforms,D3DXMATRIX* pBoneInvTransposeTransforms,LPCVOID pVerticesSrc,PVOID pVerticesDst) { return object->lpVtbl->UpdateSkinnedMesh(object,pBoneTransforms,pBoneInvTransposeTransforms,pVerticesSrc,pVerticesDst); }
+HRESULT c_ID3DXSPMesh_CloneMesh(ID3DXSPMesh* object,DWORD Options,D3DVERTEXELEMENT9* pDeclaration,LPDIRECT3DDEVICE9 pDevice,DWORD* pAdjacencyOut,DWORD* pVertexRemapOut,LPD3DXMESH* ppCloneMesh) { return object->lpVtbl->CloneMesh(object,Options,pDeclaration,pDevice,pAdjacencyOut,pVertexRemapOut,ppCloneMesh); }
+HRESULT c_ID3DXSPMesh_CloneMeshFVF(ID3DXSPMesh* object,DWORD Options,DWORD FVF,LPDIRECT3DDEVICE9 pD3DDevice,DWORD* pAdjacencyOut,DWORD* pVertexRemapOut,LPD3DXMESH* ppCloneMesh) { return object->lpVtbl->CloneMeshFVF(object,Options,FVF,pD3DDevice,pAdjacencyOut,pVertexRemapOut,ppCloneMesh); }
+HRESULT c_ID3DXSPMesh_ClonePMesh(ID3DXSPMesh* object,DWORD Options,D3DVERTEXELEMENT9* pDeclaration,LPDIRECT3DDEVICE9 pD3DDevice,DWORD* pVertexRemapOut,FLOAT* pErrorsByFace,LPD3DXPMESH* ppCloneMesh) { return object->lpVtbl->ClonePMesh(object,Options,pDeclaration,pD3DDevice,pVertexRemapOut,pErrorsByFace,ppCloneMesh); }
+HRESULT c_ID3DXSPMesh_ClonePMeshFVF(ID3DXSPMesh* object,DWORD Options,DWORD FVF,LPDIRECT3DDEVICE9 pD3DDevice,DWORD* pVertexRemapOut,FLOAT* pErrorsByFace,LPD3DXPMESH* ppCloneMesh) { return object->lpVtbl->ClonePMeshFVF(object,Options,FVF,pD3DDevice,pVertexRemapOut,pErrorsByFace,ppCloneMesh); }
+HRESULT c_ID3DXSPMesh_GetDeclaration(ID3DXSPMesh* object,D3DVERTEXELEMENT9 Declaration[MAX_FVF_DECL_SIZE]) { return object->lpVtbl->GetDeclaration(object,Declaration); }
+HRESULT c_ID3DXSPMesh_GetDevice(ID3DXSPMesh* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+DWORD c_ID3DXSPMesh_GetFVF(ID3DXSPMesh* object) { return object->lpVtbl->GetFVF(object); }
+DWORD c_ID3DXSPMesh_GetMaxFaces(ID3DXSPMesh* object) { return object->lpVtbl->GetMaxFaces(object); }
+DWORD c_ID3DXSPMesh_GetMaxVertices(ID3DXSPMesh* object) { return object->lpVtbl->GetMaxVertices(object); }
+DWORD c_ID3DXSPMesh_GetNumFaces(ID3DXSPMesh* object) { return object->lpVtbl->GetNumFaces(object); }
+DWORD c_ID3DXSPMesh_GetNumVertices(ID3DXSPMesh* object) { return object->lpVtbl->GetNumVertices(object); }
+DWORD c_ID3DXSPMesh_GetOptions(ID3DXSPMesh* object) { return object->lpVtbl->GetOptions(object); }
+HRESULT c_ID3DXSPMesh_GetVertexAttributeWeights(ID3DXSPMesh* object,LPD3DXATTRIBUTEWEIGHTS pVertexAttributeWeights) { return object->lpVtbl->GetVertexAttributeWeights(object,pVertexAttributeWeights); }
+HRESULT c_ID3DXSPMesh_GetVertexWeights(ID3DXSPMesh* object,FLOAT* pVertexWeights) { return object->lpVtbl->GetVertexWeights(object,pVertexWeights); }
+HRESULT c_ID3DXSPMesh_ReduceFaces(ID3DXSPMesh* object,DWORD Faces) { return object->lpVtbl->ReduceFaces(object,Faces); }
+HRESULT c_ID3DXSPMesh_ReduceVertices(ID3DXSPMesh* object,DWORD Vertices) { return object->lpVtbl->ReduceVertices(object,Vertices); }
+HRESULT c_ID3DXSprite_Begin(ID3DXSprite* object,DWORD Flags) { return object->lpVtbl->Begin(object,Flags); }
+HRESULT c_ID3DXSprite_Draw(ID3DXSprite* object,LPDIRECT3DTEXTURE9 pTexture,RECT* pSrcRect,D3DXVECTOR3* pCenter,D3DXVECTOR3* pPosition,D3DCOLOR Color) { return object->lpVtbl->Draw(object,pTexture,pSrcRect,pCenter,pPosition,Color); }
+HRESULT c_ID3DXSprite_End(ID3DXSprite* object) { return object->lpVtbl->End(object); }
+HRESULT c_ID3DXSprite_GetDevice(ID3DXSprite* object,LPDIRECT3DDEVICE9* ppDevice) { return object->lpVtbl->GetDevice(object,ppDevice); }
+HRESULT c_ID3DXSprite_GetTransform(ID3DXSprite* object,D3DXMATRIX* pTransform) { return object->lpVtbl->GetTransform(object,pTransform); }
+HRESULT c_ID3DXSprite_OnLostDevice(ID3DXSprite* object) { return object->lpVtbl->OnLostDevice(object); }
+HRESULT c_ID3DXSprite_OnResetDevice(ID3DXSprite* object) { return object->lpVtbl->OnResetDevice(object); }
+HRESULT c_ID3DXSprite_SetTransform(ID3DXSprite* object,D3DXMATRIX* pTransform) { return object->lpVtbl->SetTransform(object,pTransform); }
+HRESULT c_ID3DXSprite_SetWorldViewLH(ID3DXSprite* object,D3DXMATRIX* pWorld,D3DXMATRIX* pView) { return object->lpVtbl->SetWorldViewLH(object,pWorld,pView); }
+HRESULT c_ID3DXSprite_SetWorldViewRH(ID3DXSprite* object,D3DXMATRIX* pWorld,D3DXMATRIX* pView) { return object->lpVtbl->SetWorldViewRH(object,pWorld,pView); }
+HRESULT c_ID3DXTextureGutterHelper_ApplyGuttersFloat(ID3DXTextureGutterHelper* object,FLOAT* pDataIn,UINT* NumCoeffs,UINT* Width,UINT* Height) { return object->lpVtbl->ApplyGuttersFloat(object,pDataIn,NumCoeffs,Width,Height); }
+HRESULT c_ID3DXTextureGutterHelper_ApplyGuttersPRT(ID3DXTextureGutterHelper* object,LPD3DXPRTBUFFER pBuffer) { return object->lpVtbl->ApplyGuttersPRT(object,pBuffer); }
+HRESULT c_ID3DXTextureGutterHelper_ApplyGuttersTex(ID3DXTextureGutterHelper* object,LPDIRECT3DTEXTURE9 pTexture) { return object->lpVtbl->ApplyGuttersTex(object,pTexture); }
+HRESULT c_ID3DXTextureGutterHelper_GetBaryMap(ID3DXTextureGutterHelper* object,D3DXVECTOR2* pBaryData) { return object->lpVtbl->GetBaryMap(object,pBaryData); }
+HRESULT c_ID3DXTextureGutterHelper_GetFaceMap(ID3DXTextureGutterHelper* object,UINT* pFaceData) { return object->lpVtbl->GetFaceMap(object,pFaceData); }
+HRESULT c_ID3DXTextureGutterHelper_GetGutterMap(ID3DXTextureGutterHelper* object,BYTE* pGutterData) { return object->lpVtbl->GetGutterMap(object,pGutterData); }
+UINT c_ID3DXTextureGutterHelper_GetHeight(ID3DXTextureGutterHelper* object) { return object->lpVtbl->GetHeight(object); }
+HRESULT c_ID3DXTextureGutterHelper_GetTexelMap(ID3DXTextureGutterHelper* object,D3DXVECTOR2* pTexelData) { return object->lpVtbl->GetTexelMap(object,pTexelData); }
+UINT c_ID3DXTextureGutterHelper_GetWidth(ID3DXTextureGutterHelper* object) { return object->lpVtbl->GetWidth(object); }
+HRESULT c_ID3DXTextureGutterHelper_ResampleTex(ID3DXTextureGutterHelper* object,LPDIRECT3DTEXTURE9 pTextureIn,LPD3DXMESH pMeshIn,D3DDECLUSAGE Usage,UINT UsageIndex,LPDIRECT3DTEXTURE9 pTextureOut) { return object->lpVtbl->ResampleTex(object,pTextureIn,pMeshIn,Usage,UsageIndex,pTextureOut); }
+HRESULT c_ID3DXTextureGutterHelper_SetBaryMap(ID3DXTextureGutterHelper* object,D3DXVECTOR2* pBaryData) { return object->lpVtbl->SetBaryMap(object,pBaryData); }
+HRESULT c_ID3DXTextureGutterHelper_SetFaceMap(ID3DXTextureGutterHelper* object,UINT* pFaceData) { return object->lpVtbl->SetFaceMap(object,pFaceData); }
+HRESULT c_ID3DXTextureGutterHelper_SetGutterMap(ID3DXTextureGutterHelper* object,BYTE* pGutterData) { return object->lpVtbl->SetGutterMap(object,pGutterData); }
+HRESULT c_ID3DXTextureGutterHelper_SetTexelMap(ID3DXTextureGutterHelper* object,D3DXVECTOR2* pTexelData) { return object->lpVtbl->SetTexelMap(object,pTexelData); }
+D3DXHANDLE c_ID3DXTextureShader_GetConstant(ID3DXTextureShader* object,D3DXHANDLE hConstant,UINT Index) { return object->lpVtbl->GetConstant(object,hConstant,Index); }
+HRESULT c_ID3DXTextureShader_GetConstantBuffer(ID3DXTextureShader* object,LPD3DXBUFFER* ppConstantBuffer) { return object->lpVtbl->GetConstantBuffer(object,ppConstantBuffer); }
+D3DXHANDLE c_ID3DXTextureShader_GetConstantByName(ID3DXTextureShader* object,D3DXHANDLE hConstant,LPCSTR pName) { return object->lpVtbl->GetConstantByName(object,hConstant,pName); }
+HRESULT c_ID3DXTextureShader_GetConstantDesc(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXCONSTANT_DESC* pDesc,UINT* pCount) { return object->lpVtbl->GetConstantDesc(object,hConstant,pDesc,pCount); }
+D3DXHANDLE c_ID3DXTextureShader_GetConstantElement(ID3DXTextureShader* object,D3DXHANDLE hConstant,UINT Index) { return object->lpVtbl->GetConstantElement(object,hConstant,Index); }
+HRESULT c_ID3DXTextureShader_GetDesc(ID3DXTextureShader* object,D3DXCONSTANTTABLE_DESC* pDesc) { return object->lpVtbl->GetDesc(object,pDesc); }
+HRESULT c_ID3DXTextureShader_GetFunction(ID3DXTextureShader* object,LPD3DXBUFFER* ppFunction) { return object->lpVtbl->GetFunction(object,ppFunction); }
+HRESULT c_ID3DXTextureShader_SetBool(ID3DXTextureShader* object,D3DXHANDLE hConstant,BOOL b) { return object->lpVtbl->SetBool(object,hConstant,b); }
+HRESULT c_ID3DXTextureShader_SetBoolArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,BOOL* pB,UINT Count) { return object->lpVtbl->SetBoolArray(object,hConstant,pB,Count); }
+HRESULT c_ID3DXTextureShader_SetDefaults(ID3DXTextureShader* object) { return object->lpVtbl->SetDefaults(object); }
+HRESULT c_ID3DXTextureShader_SetFloat(ID3DXTextureShader* object,D3DXHANDLE hConstant,FLOAT f) { return object->lpVtbl->SetFloat(object,hConstant,f); }
+HRESULT c_ID3DXTextureShader_SetFloatArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,FLOAT* pf,UINT Count) { return object->lpVtbl->SetFloatArray(object,hConstant,pf,Count); }
+HRESULT c_ID3DXTextureShader_SetInt(ID3DXTextureShader* object,D3DXHANDLE hConstant,INT n) { return object->lpVtbl->SetInt(object,hConstant,n); }
+HRESULT c_ID3DXTextureShader_SetIntArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,INT* pn,UINT Count) { return object->lpVtbl->SetIntArray(object,hConstant,pn,Count); }
+HRESULT c_ID3DXTextureShader_SetMatrix(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrix(object,hConstant,pMatrix); }
+HRESULT c_ID3DXTextureShader_SetMatrixArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixArray(object,hConstant,pMatrix,Count); }
+HRESULT c_ID3DXTextureShader_SetMatrixPointerArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixPointerArray(object,hConstant,ppMatrix,Count); }
+HRESULT c_ID3DXTextureShader_SetMatrixTranspose(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix) { return object->lpVtbl->SetMatrixTranspose(object,hConstant,pMatrix); }
+HRESULT c_ID3DXTextureShader_SetMatrixTransposeArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX* pMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposeArray(object,hConstant,pMatrix,Count); }
+HRESULT c_ID3DXTextureShader_SetMatrixTransposePointerArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXMATRIX** ppMatrix,UINT Count) { return object->lpVtbl->SetMatrixTransposePointerArray(object,hConstant,ppMatrix,Count); }
+HRESULT c_ID3DXTextureShader_SetValue(ID3DXTextureShader* object,D3DXHANDLE hConstant,LPCVOID pData,UINT Bytes) { return object->lpVtbl->SetValue(object,hConstant,pData,Bytes); }
+HRESULT c_ID3DXTextureShader_SetVector(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXVECTOR4* pVector) { return object->lpVtbl->SetVector(object,hConstant,pVector); }
+HRESULT c_ID3DXTextureShader_SetVectorArray(ID3DXTextureShader* object,D3DXHANDLE hConstant,D3DXVECTOR4* pVector,UINT Count) { return object->lpVtbl->SetVectorArray(object,hConstant,pVector,Count); }
diff --git a/gen/d3dx_h.h b/gen/d3dx_h.h
new file mode 100644
--- /dev/null
+++ b/gen/d3dx_h.h
@@ -0,0 +1,2208 @@
+data D3DXATTRIBUTERANGE = D3DXATTRIBUTERANGE{ d3DXATTRIBUTERANGE_AttribId :: !DWORD,d3DXATTRIBUTERANGE_FaceStart :: !DWORD,d3DXATTRIBUTERANGE_FaceCount :: !DWORD,d3DXATTRIBUTERANGE_VertexStart :: !DWORD,d3DXATTRIBUTERANGE_VertexCount :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXATTRIBUTERANGE = Ptr D3DXATTRIBUTERANGE
+instance Storable D3DXATTRIBUTERANGE where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXATTRIBUTERANGE p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DXATTRIBUTERANGE p1 p2 p3 p4 p5)
+
+data D3DXATTRIBUTEWEIGHTS = D3DXATTRIBUTEWEIGHTS{ d3DXATTRIBUTEWEIGHTS_Position :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Boundary :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Normal :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Diffuse :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Specular :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Texcoord :: !(Ptr FLOAT),d3DXATTRIBUTEWEIGHTS_Tangent :: !FLOAT,d3DXATTRIBUTEWEIGHTS_Binormal :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXATTRIBUTEWEIGHTS = Ptr D3DXATTRIBUTEWEIGHTS
+instance Storable D3DXATTRIBUTEWEIGHTS where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(Ptr FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXATTRIBUTEWEIGHTS p1 p2 p3 p4 p5 p6 p7 p8)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  return (D3DXATTRIBUTEWEIGHTS p1 p2 p3 p4 p5 p6 p7 p8)
+
+data D3DXBONECOMBINATION = D3DXBONECOMBINATION{ d3DXBONECOMBINATION_AttribId :: !DWORD,d3DXBONECOMBINATION_FaceStart :: !DWORD,d3DXBONECOMBINATION_FaceCount :: !DWORD,d3DXBONECOMBINATION_VertexStart :: !DWORD,d3DXBONECOMBINATION_VertexCount :: !DWORD,d3DXBONECOMBINATION_BoneId :: !(Ptr DWORD) } deriving (Show,Eq,Ord)
+type LPD3DXBONECOMBINATION = Ptr D3DXBONECOMBINATION
+instance Storable D3DXBONECOMBINATION where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Ptr DWORD)))
+ alignment = const 1
+ poke b (D3DXBONECOMBINATION p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DXBONECOMBINATION p1 p2 p3 p4 p5 p6)
+
+data D3DXCOLOR = D3DXCOLOR{ d3DXCOLOR_r :: !FLOAT,d3DXCOLOR_g :: !FLOAT,d3DXCOLOR_b :: !FLOAT,d3DXCOLOR_a :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXCOLOR = Ptr D3DXCOLOR
+instance Storable D3DXCOLOR where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXCOLOR p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXCOLOR p1 p2 p3 p4)
+
+data D3DXCONSTANT_DESC = D3DXCONSTANT_DESC{ d3DXCONSTANT_DESC_Name :: !LPCSTR,d3DXCONSTANT_DESC_RegisterSet :: !D3DXREGISTER_SET,d3DXCONSTANT_DESC_RegisterIndex :: !UINT,d3DXCONSTANT_DESC_RegisterCount :: !UINT,d3DXCONSTANT_DESC_Class :: !D3DXPARAMETER_CLASS,d3DXCONSTANT_DESC_Type :: !D3DXPARAMETER_TYPE,d3DXCONSTANT_DESC_Rows :: !UINT,d3DXCONSTANT_DESC_Columns :: !UINT,d3DXCONSTANT_DESC_Elements :: !UINT,d3DXCONSTANT_DESC_StructMembers :: !UINT,d3DXCONSTANT_DESC_Bytes :: !UINT,d3DXCONSTANT_DESC_DefaultValue :: !LPCVOID } deriving (Show,Eq,Ord)
+type LPD3DXCONSTANT_DESC = Ptr D3DXCONSTANT_DESC
+instance Storable D3DXCONSTANT_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(D3DXREGISTER_SET)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DXPARAMETER_CLASS)))+(sizeOf (undefined::(D3DXPARAMETER_TYPE)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(LPCVOID)))
+ alignment = const 1
+ poke b (D3DXCONSTANT_DESC p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >>= pokeHelp p11 >>= pokeHelp p12 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p10)
+  p11 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p11)
+  p12 <- peekByteOff b 0
+  return (D3DXCONSTANT_DESC p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12)
+
+data D3DXCONSTANTTABLE_DESC = D3DXCONSTANTTABLE_DESC{ d3DXCONSTANTTABLE_DESC_Creator :: !LPCSTR,d3DXCONSTANTTABLE_DESC_Version :: !DWORD,d3DXCONSTANTTABLE_DESC_Constants :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXCONSTANTTABLE_DESC = Ptr D3DXCONSTANTTABLE_DESC
+instance Storable D3DXCONSTANTTABLE_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXCONSTANTTABLE_DESC p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXCONSTANTTABLE_DESC p1 p2 p3)
+
+data D3DXEFFECTDEFAULT = D3DXEFFECTDEFAULT{ d3DXEFFECTDEFAULT_pParamName :: !LPSTR,d3DXEFFECTDEFAULT_Type :: !D3DXEFFECTDEFAULTTYPE,d3DXEFFECTDEFAULT_NumBytes :: !DWORD,d3DXEFFECTDEFAULT_pValue :: !LPVOID } deriving (Show,Eq,Ord)
+type LPD3DXEFFECTDEFAULT = Ptr D3DXEFFECTDEFAULT
+instance Storable D3DXEFFECTDEFAULT where
+ sizeOf _ = (sizeOf (undefined::(LPSTR)))+(sizeOf (undefined::(D3DXEFFECTDEFAULTTYPE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(LPVOID)))
+ alignment = const 1
+ poke b (D3DXEFFECTDEFAULT p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXEFFECTDEFAULT p1 p2 p3 p4)
+
+data D3DXEFFECTINSTANCE = D3DXEFFECTINSTANCE{ d3DXEFFECTINSTANCE_pEffectFilename :: !LPSTR,d3DXEFFECTINSTANCE_NumDefaults :: !DWORD,d3DXEFFECTINSTANCE_pDefaults :: !LPD3DXEFFECTDEFAULT } deriving (Show,Eq,Ord)
+type LPD3DXEFFECTINSTANCE = Ptr D3DXEFFECTINSTANCE
+instance Storable D3DXEFFECTINSTANCE where
+ sizeOf _ = (sizeOf (undefined::(LPSTR)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(LPD3DXEFFECTDEFAULT)))
+ alignment = const 1
+ poke b (D3DXEFFECTINSTANCE p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXEFFECTINSTANCE p1 p2 p3)
+
+data D3DXEFFECT_DESC = D3DXEFFECT_DESC{ d3DXEFFECT_DESC_Creator :: !LPCSTR,d3DXEFFECT_DESC_Parameters :: !UINT,d3DXEFFECT_DESC_Techniques :: !UINT,d3DXEFFECT_DESC_Functions :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXEFFECT_DESC = Ptr D3DXEFFECT_DESC
+instance Storable D3DXEFFECT_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXEFFECT_DESC p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXEFFECT_DESC p1 p2 p3 p4)
+
+data D3DXFLOAT16 = D3DXFLOAT16{ d3DXFLOAT16_Value :: !WORD } deriving (Show,Eq,Ord)
+type LPD3DXFLOAT16 = Ptr D3DXFLOAT16
+instance Storable D3DXFLOAT16 where
+ sizeOf _ = (sizeOf (undefined::(WORD)))
+ alignment = const 1
+ poke b (D3DXFLOAT16 p1)
+  = return b >>= pokeHelp p1 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  return (D3DXFLOAT16 p1)
+
+data D3DXFONT_DESC = D3DXFONT_DESC{ d3DXFONT_DESC_Height :: !INT,d3DXFONT_DESC_Width :: !UINT,d3DXFONT_DESC_Weight :: !UINT,d3DXFONT_DESC_MipLevels :: !UINT,d3DXFONT_DESC_Italic :: !BOOL,d3DXFONT_DESC_CharSet :: !BYTE,d3DXFONT_DESC_OutputPrecision :: !BYTE,d3DXFONT_DESC_Quality :: !BYTE,d3DXFONT_DESC_PitchAndFamily :: !BYTE,d3DXFONT_DESC_FaceName :: !(Ptr TCHAR) } deriving (Show,Eq,Ord)
+type LPD3DXFONT_DESC = Ptr D3DXFONT_DESC
+instance Storable D3DXFONT_DESC where
+ sizeOf _ = (sizeOf (undefined::(INT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(BYTE)))+(sizeOf (undefined::(Ptr TCHAR)))
+ alignment = const 1
+ poke b (D3DXFONT_DESC p1 p2 p3 p4 p5 p6 p7 p8 p9 p10)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >>= pokeHelp p9 >>= pokeHelp p10 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p8)
+  p9 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p9)
+  p10 <- peekByteOff b 0
+  return (D3DXFONT_DESC p1 p2 p3 p4 p5 p6 p7 p8 p9 p10)
+
+data D3DXFRAGMENT_DESC = D3DXFRAGMENT_DESC{ d3DXFRAGMENT_DESC_Name :: !LPCSTR,d3DXFRAGMENT_DESC_Target :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXFRAGMENT_DESC = Ptr D3DXFRAGMENT_DESC
+instance Storable D3DXFRAGMENT_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXFRAGMENT_DESC p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXFRAGMENT_DESC p1 p2)
+
+data D3DXFRAME = D3DXFRAME{ d3DXFRAME_Name :: !LPSTR,d3DXFRAME_ :: !D3DXMATRIX,d3DXFRAME_pMeshContainer :: !LPD3DXMESHCONTAINER,d3DXFRAME_pFrameSibling :: !(Ptr D3DXFRAME),d3DXFRAME_pFrameFirstChild :: !(Ptr D3DXFRAME) } deriving (Show,Eq,Ord)
+type LPD3DXFRAME = Ptr D3DXFRAME
+instance Storable D3DXFRAME where
+ sizeOf _ = (sizeOf (undefined::(LPSTR)))+(sizeOf (undefined::(D3DXMATRIX)))+(sizeOf (undefined::(LPD3DXMESHCONTAINER)))+(sizeOf (undefined::(Ptr D3DXFRAME)))+(sizeOf (undefined::(Ptr D3DXFRAME)))
+ alignment = const 1
+ poke b (D3DXFRAME p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DXFRAME p1 p2 p3 p4 p5)
+
+data D3DXFUNCTION_DESC = D3DXFUNCTION_DESC{ d3DXFUNCTION_DESC_Name :: !LPCSTR,d3DXFUNCTION_DESC_Annotations :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXFUNCTION_DESC = Ptr D3DXFUNCTION_DESC
+instance Storable D3DXFUNCTION_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXFUNCTION_DESC p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXFUNCTION_DESC p1 p2)
+
+data D3DXIMAGE_INFO = D3DXIMAGE_INFO{ d3DXIMAGE_INFO_Width :: !UINT,d3DXIMAGE_INFO_Height :: !UINT,d3DXIMAGE_INFO_Depth :: !UINT,d3DXIMAGE_INFO_MipLevels :: !UINT,d3DXIMAGE_INFO_Format :: !D3DFORMAT,d3DXIMAGE_INFO_ResourceType :: !D3DRESOURCETYPE,d3DXIMAGE_INFO_ImageFileFormat :: !D3DXIMAGE_FILEFORMAT } deriving (Show,Eq,Ord)
+type LPD3DXIMAGE_INFO = Ptr D3DXIMAGE_INFO
+instance Storable D3DXIMAGE_INFO where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(D3DRESOURCETYPE)))+(sizeOf (undefined::(D3DXIMAGE_FILEFORMAT)))
+ alignment = const 1
+ poke b (D3DXIMAGE_INFO p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DXIMAGE_INFO p1 p2 p3 p4 p5 p6 p7)
+
+data D3DXINTERSECTINFO = D3DXINTERSECTINFO{ d3DXINTERSECTINFO_FaceIndex :: !DWORD,d3DXINTERSECTINFO_U :: !FLOAT,d3DXINTERSECTINFO_V :: !FLOAT,d3DXINTERSECTINFO_Dist :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXINTERSECTINFO = Ptr D3DXINTERSECTINFO
+instance Storable D3DXINTERSECTINFO where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXINTERSECTINFO p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXINTERSECTINFO p1 p2 p3 p4)
+
+data D3DXKEY_CALLBACK = D3DXKEY_CALLBACK{ d3DXKEY_CALLBACK_Time :: !FLOAT,d3DXKEY_CALLBACK_pCallbackData :: !LPVOID } deriving (Show,Eq,Ord)
+type LPD3DXKEY_CALLBACK = Ptr D3DXKEY_CALLBACK
+instance Storable D3DXKEY_CALLBACK where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(LPVOID)))
+ alignment = const 1
+ poke b (D3DXKEY_CALLBACK p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXKEY_CALLBACK p1 p2)
+
+data D3DXKEY_QUATERNION = D3DXKEY_QUATERNION{ d3DXKEY_QUATERNION_Time :: !FLOAT,d3DXKEY_QUATERNION_Value :: !D3DXQUATERNION } deriving (Show,Eq,Ord)
+type LPD3DXKEY_QUATERNION = Ptr D3DXKEY_QUATERNION
+instance Storable D3DXKEY_QUATERNION where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(D3DXQUATERNION)))
+ alignment = const 1
+ poke b (D3DXKEY_QUATERNION p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXKEY_QUATERNION p1 p2)
+
+data D3DXKEY_VECTOR3 = D3DXKEY_VECTOR3{ d3DXKEY_VECTOR3_Time :: !FLOAT,d3DXKEY_VECTOR3_Value :: !D3DXVECTOR3 } deriving (Show,Eq,Ord)
+type LPD3DXKEY_VECTOR3 = Ptr D3DXKEY_VECTOR3
+instance Storable D3DXKEY_VECTOR3 where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(D3DXVECTOR3)))
+ alignment = const 1
+ poke b (D3DXKEY_VECTOR3 p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXKEY_VECTOR3 p1 p2)
+
+data D3DXMACRO = D3DXMACRO{ d3DXMACRO_Name :: !LPCSTR,d3DXMACRO_Definition :: !LPCSTR } deriving (Show,Eq,Ord)
+type LPD3DXMACRO = Ptr D3DXMACRO
+instance Storable D3DXMACRO where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(LPCSTR)))
+ alignment = const 1
+ poke b (D3DXMACRO p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXMACRO p1 p2)
+
+data D3DXMATERIAL = D3DXMATERIAL{ d3DXMATERIAL_MatD3D :: !D3DMATERIAL9,d3DXMATERIAL_pTextureFilename :: !LPSTR } deriving (Show,Eq,Ord)
+type LPD3DXMATERIAL = Ptr D3DXMATERIAL
+instance Storable D3DXMATERIAL where
+ sizeOf _ = (sizeOf (undefined::(D3DMATERIAL9)))+(sizeOf (undefined::(LPSTR)))
+ alignment = const 1
+ poke b (D3DXMATERIAL p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXMATERIAL p1 p2)
+
+data D3DXMESHCONTAINER = D3DXMESHCONTAINER{ d3DXMESHCONTAINER_Name :: !LPSTR,d3DXMESHCONTAINER_MeshData :: !D3DXMESHDATA,d3DXMESHCONTAINER_pMaterials :: !LPD3DXMATERIAL,d3DXMESHCONTAINER_pEffects :: !LPD3DXEFFECTINSTANCE,d3DXMESHCONTAINER_NumMaterials :: !DWORD,d3DXMESHCONTAINER_pAdjacency :: !(Ptr DWORD),d3DXMESHCONTAINER_pSkinInfo :: !LPD3DXSKININFO,d3DXMESHCONTAINER_pNextMeshContainer :: !(Ptr D3DXMESHCONTAINER) } deriving (Show,Eq,Ord)
+type LPD3DXMESHCONTAINER = Ptr D3DXMESHCONTAINER
+instance Storable D3DXMESHCONTAINER where
+ sizeOf _ = (sizeOf (undefined::(LPSTR)))+(sizeOf (undefined::(D3DXMESHDATA)))+(sizeOf (undefined::(LPD3DXMATERIAL)))+(sizeOf (undefined::(LPD3DXEFFECTINSTANCE)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(Ptr DWORD)))+(sizeOf (undefined::(LPD3DXSKININFO)))+(sizeOf (undefined::(Ptr D3DXMESHCONTAINER)))
+ alignment = const 1
+ poke b (D3DXMESHCONTAINER p1 p2 p3 p4 p5 p6 p7 p8)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >>= pokeHelp p8 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p7)
+  p8 <- peekByteOff b 0
+  return (D3DXMESHCONTAINER p1 p2 p3 p4 p5 p6 p7 p8)
+
+data D3DXPASS_DESC = D3DXPASS_DESC{ d3DXPASS_DESC_Name :: !LPCSTR,d3DXPASS_DESC_Annotations :: !UINT,d3DXPASS_DESC_pVertexShaderFunction :: !(Ptr DWORD),d3DXPASS_DESC_pPixelShaderFunction :: !(Ptr DWORD) } deriving (Show,Eq,Ord)
+type LPD3DXPASS_DESC = Ptr D3DXPASS_DESC
+instance Storable D3DXPASS_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(Ptr DWORD)))+(sizeOf (undefined::(Ptr DWORD)))
+ alignment = const 1
+ poke b (D3DXPASS_DESC p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXPASS_DESC p1 p2 p3 p4)
+
+data D3DXPATCHINFO = D3DXPATCHINFO{ d3DXPATCHINFO_PatchType :: !D3DXPATCHMESHTYPE,d3DXPATCHINFO_Degree :: !D3DDEGREETYPE,d3DXPATCHINFO_Basis :: !D3DBASISTYPE } deriving (Show,Eq,Ord)
+type LPD3DXPATCHINFO = Ptr D3DXPATCHINFO
+instance Storable D3DXPATCHINFO where
+ sizeOf _ = (sizeOf (undefined::(D3DXPATCHMESHTYPE)))+(sizeOf (undefined::(D3DDEGREETYPE)))+(sizeOf (undefined::(D3DBASISTYPE)))
+ alignment = const 1
+ poke b (D3DXPATCHINFO p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXPATCHINFO p1 p2 p3)
+
+data D3DXPLANE = D3DXPLANE{ d3DXPLANE_a :: !FLOAT,d3DXPLANE_b :: !FLOAT,d3DXPLANE_c :: !FLOAT,d3DXPLANE_d :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXPLANE = Ptr D3DXPLANE
+instance Storable D3DXPLANE where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXPLANE p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXPLANE p1 p2 p3 p4)
+
+data D3DXQUATERNION = D3DXQUATERNION{ d3DXQUATERNION_x :: !FLOAT,d3DXQUATERNION_y :: !FLOAT,d3DXQUATERNION_z :: !FLOAT,d3DXQUATERNION_w :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXQUATERNION = Ptr D3DXQUATERNION
+instance Storable D3DXQUATERNION where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXQUATERNION p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXQUATERNION p1 p2 p3 p4)
+
+data D3DXRTE_DESC = D3DXRTE_DESC{ d3DXRTE_DESC_Size :: !UINT,d3DXRTE_DESC_MipLevels :: !UINT,d3DXRTE_DESC_Format :: !D3DFORMAT,d3DXRTE_DESC_DepthStencil :: !BOOL,d3DXRTE_DESC_DepthStencilFormat :: !D3DFORMAT } deriving (Show,Eq,Ord)
+type LPD3DXRTE_DESC = Ptr D3DXRTE_DESC
+instance Storable D3DXRTE_DESC where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(D3DFORMAT)))
+ alignment = const 1
+ poke b (D3DXRTE_DESC p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DXRTE_DESC p1 p2 p3 p4 p5)
+
+data D3DXRTS_DESC = D3DXRTS_DESC{ d3DXRTS_DESC_Width :: !UINT,d3DXRTS_DESC_Height :: !UINT,d3DXRTS_DESC_Format :: !D3DFORMAT,d3DXRTS_DESC_DepthStencil :: !BOOL,d3DXRTS_DESC_DepthStencilFormat :: !D3DFORMAT } deriving (Show,Eq,Ord)
+type LPD3DXRTS_DESC = Ptr D3DXRTS_DESC
+instance Storable D3DXRTS_DESC where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(D3DFORMAT)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(D3DFORMAT)))
+ alignment = const 1
+ poke b (D3DXRTS_DESC p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DXRTS_DESC p1 p2 p3 p4 p5)
+
+data D3DXSEMANTIC = D3DXSEMANTIC{ d3DXSEMANTIC_Usage :: !UINT,d3DXSEMANTIC_UsageIndex :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXSEMANTIC = Ptr D3DXSEMANTIC
+instance Storable D3DXSEMANTIC where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXSEMANTIC p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXSEMANTIC p1 p2)
+
+data D3DXSHADER_CONSTANTINFO = D3DXSHADER_CONSTANTINFO{ d3DXSHADER_CONSTANTINFO_Name :: !DWORD,d3DXSHADER_CONSTANTINFO_RegisterSet :: !WORD,d3DXSHADER_CONSTANTINFO_RegisterIndex :: !WORD,d3DXSHADER_CONSTANTINFO_RegisterCount :: !WORD,d3DXSHADER_CONSTANTINFO_Reserved :: !WORD,d3DXSHADER_CONSTANTINFO_TypeInfo :: !DWORD,d3DXSHADER_CONSTANTINFO_DefaultValue :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXSHADER_CONSTANTINFO = Ptr D3DXSHADER_CONSTANTINFO
+instance Storable D3DXSHADER_CONSTANTINFO where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXSHADER_CONSTANTINFO p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DXSHADER_CONSTANTINFO p1 p2 p3 p4 p5 p6 p7)
+
+data D3DXSHADER_CONSTANTTABLE = D3DXSHADER_CONSTANTTABLE{ d3DXSHADER_CONSTANTTABLE_Size :: !DWORD,d3DXSHADER_CONSTANTTABLE_Creator :: !DWORD,d3DXSHADER_CONSTANTTABLE_Version :: !DWORD,d3DXSHADER_CONSTANTTABLE_Constants :: !DWORD,d3DXSHADER_CONSTANTTABLE_ConstantInfo :: !DWORD,d3DXSHADER_CONSTANTTABLE_Flags :: !DWORD,d3DXSHADER_CONSTANTTABLE_Target :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXSHADER_CONSTANTTABLE = Ptr D3DXSHADER_CONSTANTTABLE
+instance Storable D3DXSHADER_CONSTANTTABLE where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXSHADER_CONSTANTTABLE p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DXSHADER_CONSTANTTABLE p1 p2 p3 p4 p5 p6 p7)
+
+data D3DXSHADER_STRUCTMEMBERINFO = D3DXSHADER_STRUCTMEMBERINFO{ d3DXSHADER_STRUCTMEMBERINFO_Name :: !DWORD,d3DXSHADER_STRUCTMEMBERINFO_TypeInfo :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXSHADER_STRUCTMEMBERINFO = Ptr D3DXSHADER_STRUCTMEMBERINFO
+instance Storable D3DXSHADER_STRUCTMEMBERINFO where
+ sizeOf _ = (sizeOf (undefined::(DWORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXSHADER_STRUCTMEMBERINFO p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXSHADER_STRUCTMEMBERINFO p1 p2)
+
+data D3DXSHADER_TYPEINFO = D3DXSHADER_TYPEINFO{ d3DXSHADER_TYPEINFO_Class :: !WORD,d3DXSHADER_TYPEINFO_Type :: !WORD,d3DXSHADER_TYPEINFO_Rows :: !WORD,d3DXSHADER_TYPEINFO_Columns :: !WORD,d3DXSHADER_TYPEINFO_Elements :: !WORD,d3DXSHADER_TYPEINFO_StructMembers :: !WORD,d3DXSHADER_TYPEINFO_StructMemberInfo :: !DWORD } deriving (Show,Eq,Ord)
+type LPD3DXSHADER_TYPEINFO = Ptr D3DXSHADER_TYPEINFO
+instance Storable D3DXSHADER_TYPEINFO where
+ sizeOf _ = (sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(WORD)))+(sizeOf (undefined::(DWORD)))
+ alignment = const 1
+ poke b (D3DXSHADER_TYPEINFO p1 p2 p3 p4 p5 p6 p7)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >>= pokeHelp p7 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p6)
+  p7 <- peekByteOff b 0
+  return (D3DXSHADER_TYPEINFO p1 p2 p3 p4 p5 p6 p7)
+
+data D3DXSHMATERIAL = D3DXSHMATERIAL{ d3DXSHMATERIAL_Diffuse :: !D3DCOLORVALUE,d3DXSHMATERIAL_bMirror :: !BOOL,d3DXSHMATERIAL_bSubSurf :: !BOOL,d3DXSHMATERIAL_RelativeIndexOfRefraction :: !FLOAT,d3DXSHMATERIAL_Absorption :: !D3DCOLORVALUE,d3DXSHMATERIAL_ReducedScattering :: !D3DCOLORVALUE } deriving (Show,Eq,Ord)
+type LPD3DXSHMATERIAL = Ptr D3DXSHMATERIAL
+instance Storable D3DXSHMATERIAL where
+ sizeOf _ = (sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(BOOL)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(D3DCOLORVALUE)))+(sizeOf (undefined::(D3DCOLORVALUE)))
+ alignment = const 1
+ poke b (D3DXSHMATERIAL p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DXSHMATERIAL p1 p2 p3 p4 p5 p6)
+
+data D3DXSHPRTSPLITMESHCLUSTERDATA = D3DXSHPRTSPLITMESHCLUSTERDATA{ d3DXSHPRTSPLITMESHCLUSTERDATA_uVertStart :: !UINT,d3DXSHPRTSPLITMESHCLUSTERDATA_uVertLength :: !UINT,d3DXSHPRTSPLITMESHCLUSTERDATA_uFaceStart :: !UINT,d3DXSHPRTSPLITMESHCLUSTERDATA_uFaceLength :: !UINT,d3DXSHPRTSPLITMESHCLUSTERDATA_uClusterStart :: !UINT,d3DXSHPRTSPLITMESHCLUSTERDATA_uClusterLength :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXSHPRTSPLITMESHCLUSTERDATA = Ptr D3DXSHPRTSPLITMESHCLUSTERDATA
+instance Storable D3DXSHPRTSPLITMESHCLUSTERDATA where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXSHPRTSPLITMESHCLUSTERDATA p1 p2 p3 p4 p5 p6)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >>= pokeHelp p6 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p5)
+  p6 <- peekByteOff b 0
+  return (D3DXSHPRTSPLITMESHCLUSTERDATA p1 p2 p3 p4 p5 p6)
+
+data D3DXSHPRTSPLITMESHVERTDATA = D3DXSHPRTSPLITMESHVERTDATA{ d3DXSHPRTSPLITMESHVERTDATA_uVertRemap :: !UINT,d3DXSHPRTSPLITMESHVERTDATA_uSubCluster :: !UINT,d3DXSHPRTSPLITMESHVERTDATA_ucVertStatus :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXSHPRTSPLITMESHVERTDATA = Ptr D3DXSHPRTSPLITMESHVERTDATA
+instance Storable D3DXSHPRTSPLITMESHVERTDATA where
+ sizeOf _ = (sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXSHPRTSPLITMESHVERTDATA p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXSHPRTSPLITMESHVERTDATA p1 p2 p3)
+
+data D3DXTRACK_DESC = D3DXTRACK_DESC{ d3DXTRACK_DESC_Priority :: !D3DXPRIORITY_TYPE,d3DXTRACK_DESC_Weight :: !FLOAT,d3DXTRACK_DESC_Speed :: !FLOAT,d3DXTRACK_DESC_Position :: !Double,d3DXTRACK_DESC_Enable :: !BOOL } deriving (Show,Eq,Ord)
+type LPD3DXTRACK_DESC = Ptr D3DXTRACK_DESC
+instance Storable D3DXTRACK_DESC where
+ sizeOf _ = (sizeOf (undefined::(D3DXPRIORITY_TYPE)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(Double)))+(sizeOf (undefined::(BOOL)))
+ alignment = const 1
+ poke b (D3DXTRACK_DESC p1 p2 p3 p4 p5)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >>= pokeHelp p5 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p4)
+  p5 <- peekByteOff b 0
+  return (D3DXTRACK_DESC p1 p2 p3 p4 p5)
+
+data D3DXTECHNIQUE_DESC = D3DXTECHNIQUE_DESC{ d3DXTECHNIQUE_DESC_Name :: !LPCSTR,d3DXTECHNIQUE_DESC_Passes :: !UINT,d3DXTECHNIQUE_DESC_Annotations :: !UINT } deriving (Show,Eq,Ord)
+type LPD3DXTECHNIQUE_DESC = Ptr D3DXTECHNIQUE_DESC
+instance Storable D3DXTECHNIQUE_DESC where
+ sizeOf _ = (sizeOf (undefined::(LPCSTR)))+(sizeOf (undefined::(UINT)))+(sizeOf (undefined::(UINT)))
+ alignment = const 1
+ poke b (D3DXTECHNIQUE_DESC p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXTECHNIQUE_DESC p1 p2 p3)
+
+data D3DXVECTOR2 = D3DXVECTOR2{ d3DXVECTOR2_x :: !FLOAT,d3DXVECTOR2_y :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXVECTOR2 = Ptr D3DXVECTOR2
+instance Storable D3DXVECTOR2 where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXVECTOR2 p1 p2)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  return (D3DXVECTOR2 p1 p2)
+
+data D3DXVECTOR3 = D3DXVECTOR3{ d3DXVECTOR3_x :: !FLOAT,d3DXVECTOR3_y :: !FLOAT,d3DXVECTOR3_z :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXVECTOR3 = Ptr D3DXVECTOR3
+instance Storable D3DXVECTOR3 where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXVECTOR3 p1 p2 p3)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  return (D3DXVECTOR3 p1 p2 p3)
+
+data D3DXVECTOR4 = D3DXVECTOR4{ d3DXVECTOR4_x :: !FLOAT,d3DXVECTOR4_y :: !FLOAT,d3DXVECTOR4_z :: !FLOAT,d3DXVECTOR4_w :: !FLOAT } deriving (Show,Eq,Ord)
+type LPD3DXVECTOR4 = Ptr D3DXVECTOR4
+instance Storable D3DXVECTOR4 where
+ sizeOf _ = (sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))+(sizeOf (undefined::(FLOAT)))
+ alignment = const 1
+ poke b (D3DXVECTOR4 p1 p2 p3 p4)
+  = return b >>= pokeHelp p1 >>= pokeHelp p2 >>= pokeHelp p3 >>= pokeHelp p4 >> return()
+ peek b = do
+  p1 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p1)
+  p2 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p2)
+  p3 <- peekByteOff b 0
+  b <- return $ plusPtr b (sizeOf p3)
+  p4 <- peekByteOff b 0
+  return (D3DXVECTOR4 p1 p2 p3 p4)
+
+data ID3DXAllocateHierarchy = ID3DXAllocateHierarchy deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXAllocateHierarchy_CreateFrame"
+  c_ID3DXAllocateHierarchy_CreateFrame::Ptr ID3DXAllocateHierarchy -> LPCSTR -> Ptr LPD3DXFRAME -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAllocateHierarchy_CreateMeshContainer"
+  c_ID3DXAllocateHierarchy_CreateMeshContainer::Ptr ID3DXAllocateHierarchy -> LPCSTR -> Ptr D3DXMESHDATA -> Ptr D3DXMATERIAL -> Ptr D3DXEFFECTINSTANCE -> DWORD -> Ptr DWORD -> LPD3DXSKININFO -> Ptr LPD3DXMESHCONTAINER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAllocateHierarchy_DestroyFrame"
+  c_ID3DXAllocateHierarchy_DestroyFrame::Ptr ID3DXAllocateHierarchy -> LPD3DXFRAME -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAllocateHierarchy_DestroyMeshContainer"
+  c_ID3DXAllocateHierarchy_DestroyMeshContainer::Ptr ID3DXAllocateHierarchy -> LPD3DXMESHCONTAINER -> IO HRESULT
+type LPID3DXAllocateHierarchy = Ptr ID3DXAllocateHierarchy
+type LPD3DXALLOCATEHIERARCHY = Ptr ID3DXAllocateHierarchy
+
+
+data ID3DXAnimationCallbackHandler = ID3DXAnimationCallbackHandler deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXAnimationCallbackHandler_HandleCallback"
+  c_ID3DXAnimationCallbackHandler_HandleCallback::Ptr ID3DXAnimationCallbackHandler -> UINT -> LPVOID -> IO HRESULT
+type LPID3DXAnimationCallbackHandler = Ptr ID3DXAnimationCallbackHandler
+type LPD3DXANIMATIONCALLBACKHANDLER = Ptr ID3DXAnimationCallbackHandler
+
+
+data ID3DXAnimationController = ID3DXAnimationController deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_AdvanceTime"
+  c_ID3DXAnimationController_AdvanceTime::Ptr ID3DXAnimationController -> Double -> LPD3DXANIMATIONCALLBACKHANDLER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_CloneAnimationController"
+  c_ID3DXAnimationController_CloneAnimationController::Ptr ID3DXAnimationController -> UINT -> UINT -> UINT -> UINT -> Ptr LPD3DXANIMATIONCONTROLLER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetAnimationSet"
+  c_ID3DXAnimationController_GetAnimationSet::Ptr ID3DXAnimationController -> UINT -> Ptr LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetAnimationSetByName"
+  c_ID3DXAnimationController_GetAnimationSetByName::Ptr ID3DXAnimationController -> LPCSTR -> Ptr LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetCurrentPriorityBlend"
+  c_ID3DXAnimationController_GetCurrentPriorityBlend::Ptr ID3DXAnimationController -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetCurrentTrackEvent"
+  c_ID3DXAnimationController_GetCurrentTrackEvent::Ptr ID3DXAnimationController -> UINT -> D3DXEVENT_TYPE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetEventDesc"
+  c_ID3DXAnimationController_GetEventDesc::Ptr ID3DXAnimationController -> D3DXEVENTHANDLE -> LPD3DXEVENT_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetMaxNumAnimationOutputs"
+  c_ID3DXAnimationController_GetMaxNumAnimationOutputs::Ptr ID3DXAnimationController -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetMaxNumAnimationSets"
+  c_ID3DXAnimationController_GetMaxNumAnimationSets::Ptr ID3DXAnimationController -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetMaxNumEvents"
+  c_ID3DXAnimationController_GetMaxNumEvents::Ptr ID3DXAnimationController -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetMaxNumTracks"
+  c_ID3DXAnimationController_GetMaxNumTracks::Ptr ID3DXAnimationController -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetNumAnimationSets"
+  c_ID3DXAnimationController_GetNumAnimationSets::Ptr ID3DXAnimationController -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetPriorityBlend"
+  c_ID3DXAnimationController_GetPriorityBlend::Ptr ID3DXAnimationController -> IO FLOAT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetTime"
+  c_ID3DXAnimationController_GetTime::Ptr ID3DXAnimationController -> IO Double
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetTrackAnimationSet"
+  c_ID3DXAnimationController_GetTrackAnimationSet::Ptr ID3DXAnimationController -> UINT -> Ptr LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetTrackDesc"
+  c_ID3DXAnimationController_GetTrackDesc::Ptr ID3DXAnimationController -> UINT -> LPD3DXTRACK_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetUpcomingPriorityBlend"
+  c_ID3DXAnimationController_GetUpcomingPriorityBlend::Ptr ID3DXAnimationController -> D3DXEVENTHANDLE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_GetUpcomingTrackEvent"
+  c_ID3DXAnimationController_GetUpcomingTrackEvent::Ptr ID3DXAnimationController -> UINT -> D3DXEVENTHANDLE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_KeyPriorityBlend"
+  c_ID3DXAnimationController_KeyPriorityBlend::Ptr ID3DXAnimationController -> FLOAT -> Double -> Double -> D3DXTRANSITION_TYPE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_KeyTrackEnable"
+  c_ID3DXAnimationController_KeyTrackEnable::Ptr ID3DXAnimationController -> UINT -> BOOL -> Double -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_KeyTrackPosition"
+  c_ID3DXAnimationController_KeyTrackPosition::Ptr ID3DXAnimationController -> UINT -> Double -> Double -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_KeyTrackSpeed"
+  c_ID3DXAnimationController_KeyTrackSpeed::Ptr ID3DXAnimationController -> UINT -> FLOAT -> Double -> Double -> D3DXTRANSITION_TYPE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_KeyTrackWeight"
+  c_ID3DXAnimationController_KeyTrackWeight::Ptr ID3DXAnimationController -> UINT -> FLOAT -> Double -> Double -> D3DXTRANSITION_TYPE -> IO D3DXEVENTHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_RegisterAnimationOutput"
+  c_ID3DXAnimationController_RegisterAnimationOutput::Ptr ID3DXAnimationController -> LPCSTR -> Ptr D3DXMATRIX -> Ptr D3DXVECTOR3 -> Ptr D3DXQUATERNION -> Ptr D3DXVECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_RegisterAnimationSet"
+  c_ID3DXAnimationController_RegisterAnimationSet::Ptr ID3DXAnimationController -> LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_ResetTime"
+  c_ID3DXAnimationController_ResetTime::Ptr ID3DXAnimationController -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetPriorityBlend"
+  c_ID3DXAnimationController_SetPriorityBlend::Ptr ID3DXAnimationController -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackAnimationSet"
+  c_ID3DXAnimationController_SetTrackAnimationSet::Ptr ID3DXAnimationController -> UINT -> LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackDesc"
+  c_ID3DXAnimationController_SetTrackDesc::Ptr ID3DXAnimationController -> UINT -> LPD3DXTRACK_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackEnable"
+  c_ID3DXAnimationController_SetTrackEnable::Ptr ID3DXAnimationController -> UINT -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackPosition"
+  c_ID3DXAnimationController_SetTrackPosition::Ptr ID3DXAnimationController -> UINT -> Double -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackPriority"
+  c_ID3DXAnimationController_SetTrackPriority::Ptr ID3DXAnimationController -> UINT -> D3DXPRIORITY_TYPE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackSpeed"
+  c_ID3DXAnimationController_SetTrackSpeed::Ptr ID3DXAnimationController -> UINT -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_SetTrackWeight"
+  c_ID3DXAnimationController_SetTrackWeight::Ptr ID3DXAnimationController -> UINT -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_UnkeyAllPriorityBlends"
+  c_ID3DXAnimationController_UnkeyAllPriorityBlends::Ptr ID3DXAnimationController -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_UnkeyAllTrackEvents"
+  c_ID3DXAnimationController_UnkeyAllTrackEvents::Ptr ID3DXAnimationController -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_UnkeyEvent"
+  c_ID3DXAnimationController_UnkeyEvent::Ptr ID3DXAnimationController -> D3DXEVENTHANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_UnregisterAnimationSet"
+  c_ID3DXAnimationController_UnregisterAnimationSet::Ptr ID3DXAnimationController -> LPD3DXANIMATIONSET -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationController_ValidateEvent"
+  c_ID3DXAnimationController_ValidateEvent::Ptr ID3DXAnimationController -> D3DXEVENTHANDLE -> IO HRESULT
+type LPID3DXAnimationController = Ptr ID3DXAnimationController
+type LPD3DXANIMATIONCONTROLLER = Ptr ID3DXAnimationController
+
+
+data ID3DXAnimationSet = ID3DXAnimationSet deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetAnimationIndexByName"
+  c_ID3DXAnimationSet_GetAnimationIndexByName::Ptr ID3DXAnimationSet -> LPCSTR -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetAnimationNameByIndex"
+  c_ID3DXAnimationSet_GetAnimationNameByIndex::Ptr ID3DXAnimationSet -> UINT -> Ptr LPCSTR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetCallback"
+  c_ID3DXAnimationSet_GetCallback::Ptr ID3DXAnimationSet -> Double -> DWORD -> Ptr Double -> Ptr LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetName"
+  c_ID3DXAnimationSet_GetName::Ptr ID3DXAnimationSet -> IO LPCSTR
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetNumAnimations"
+  c_ID3DXAnimationSet_GetNumAnimations::Ptr ID3DXAnimationSet -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetPeriod"
+  c_ID3DXAnimationSet_GetPeriod::Ptr ID3DXAnimationSet -> IO Double
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetPeriodicPosition"
+  c_ID3DXAnimationSet_GetPeriodicPosition::Ptr ID3DXAnimationSet -> Double -> IO Double
+foreign import ccall unsafe "fake.h c_ID3DXAnimationSet_GetSRT"
+  c_ID3DXAnimationSet_GetSRT::Ptr ID3DXAnimationSet -> Double -> UINT -> Ptr D3DXVECTOR3 -> Ptr D3DXQUATERNION -> Ptr D3DXVECTOR3 -> IO HRESULT
+type LPID3DXAnimationSet = Ptr ID3DXAnimationSet
+type LPD3DXANIMATIONSET = Ptr ID3DXAnimationSet
+
+
+data ID3DXBaseEffect = ID3DXBaseEffect deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetAnnotation"
+  c_ID3DXBaseEffect_GetAnnotation::Ptr ID3DXBaseEffect -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetAnnotationByName"
+  c_ID3DXBaseEffect_GetAnnotationByName::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetBool"
+  c_ID3DXBaseEffect_GetBool::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetBoolArray"
+  c_ID3DXBaseEffect_GetBoolArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetDesc"
+  c_ID3DXBaseEffect_GetDesc::Ptr ID3DXBaseEffect -> Ptr D3DXEFFECT_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetFloat"
+  c_ID3DXBaseEffect_GetFloat::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetFloatArray"
+  c_ID3DXBaseEffect_GetFloatArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetFunction"
+  c_ID3DXBaseEffect_GetFunction::Ptr ID3DXBaseEffect -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetFunctionByName"
+  c_ID3DXBaseEffect_GetFunctionByName::Ptr ID3DXBaseEffect -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetFunctionDesc"
+  c_ID3DXBaseEffect_GetFunctionDesc::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXFUNCTION_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetInt"
+  c_ID3DXBaseEffect_GetInt::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr INT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetIntArray"
+  c_ID3DXBaseEffect_GetIntArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr INT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrix"
+  c_ID3DXBaseEffect_GetMatrix::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrixArray"
+  c_ID3DXBaseEffect_GetMatrixArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrixPointerArray"
+  c_ID3DXBaseEffect_GetMatrixPointerArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrixTranspose"
+  c_ID3DXBaseEffect_GetMatrixTranspose::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrixTransposeArray"
+  c_ID3DXBaseEffect_GetMatrixTransposeArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetMatrixTransposePointerArray"
+  c_ID3DXBaseEffect_GetMatrixTransposePointerArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetParameter"
+  c_ID3DXBaseEffect_GetParameter::Ptr ID3DXBaseEffect -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetParameterByName"
+  c_ID3DXBaseEffect_GetParameterByName::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetParameterBySemantic"
+  c_ID3DXBaseEffect_GetParameterBySemantic::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetParameterDesc"
+  c_ID3DXBaseEffect_GetParameterDesc::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXPARAMETER_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetParameterElement"
+  c_ID3DXBaseEffect_GetParameterElement::Ptr ID3DXBaseEffect -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetPass"
+  c_ID3DXBaseEffect_GetPass::Ptr ID3DXBaseEffect -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetPassByName"
+  c_ID3DXBaseEffect_GetPassByName::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetPassDesc"
+  c_ID3DXBaseEffect_GetPassDesc::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXPASS_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetPixelShader"
+  c_ID3DXBaseEffect_GetPixelShader::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr LPDIRECT3DPIXELSHADER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetString"
+  c_ID3DXBaseEffect_GetString::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr LPCSTR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetTechnique"
+  c_ID3DXBaseEffect_GetTechnique::Ptr ID3DXBaseEffect -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetTechniqueByName"
+  c_ID3DXBaseEffect_GetTechniqueByName::Ptr ID3DXBaseEffect -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetTechniqueDesc"
+  c_ID3DXBaseEffect_GetTechniqueDesc::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXTECHNIQUE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetTexture"
+  c_ID3DXBaseEffect_GetTexture::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr LPDIRECT3DBASETEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetValue"
+  c_ID3DXBaseEffect_GetValue::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr () -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetVector"
+  c_ID3DXBaseEffect_GetVector::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetVectorArray"
+  c_ID3DXBaseEffect_GetVectorArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_GetVertexShader"
+  c_ID3DXBaseEffect_GetVertexShader::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr LPDIRECT3DVERTEXSHADER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetArrayRange"
+  c_ID3DXBaseEffect_SetArrayRange::Ptr ID3DXBaseEffect -> D3DXHANDLE -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetBool"
+  c_ID3DXBaseEffect_SetBool::Ptr ID3DXBaseEffect -> D3DXHANDLE -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetBoolArray"
+  c_ID3DXBaseEffect_SetBoolArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetFloat"
+  c_ID3DXBaseEffect_SetFloat::Ptr ID3DXBaseEffect -> D3DXHANDLE -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetFloatArray"
+  c_ID3DXBaseEffect_SetFloatArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetInt"
+  c_ID3DXBaseEffect_SetInt::Ptr ID3DXBaseEffect -> D3DXHANDLE -> INT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetIntArray"
+  c_ID3DXBaseEffect_SetIntArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr INT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrix"
+  c_ID3DXBaseEffect_SetMatrix::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrixArray"
+  c_ID3DXBaseEffect_SetMatrixArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrixPointerArray"
+  c_ID3DXBaseEffect_SetMatrixPointerArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrixTranspose"
+  c_ID3DXBaseEffect_SetMatrixTranspose::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrixTransposeArray"
+  c_ID3DXBaseEffect_SetMatrixTransposeArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetMatrixTransposePointerArray"
+  c_ID3DXBaseEffect_SetMatrixTransposePointerArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetString"
+  c_ID3DXBaseEffect_SetString::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCSTR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetTexture"
+  c_ID3DXBaseEffect_SetTexture::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPDIRECT3DBASETEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetValue"
+  c_ID3DXBaseEffect_SetValue::Ptr ID3DXBaseEffect -> D3DXHANDLE -> LPCVOID -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetVector"
+  c_ID3DXBaseEffect_SetVector::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseEffect_SetVectorArray"
+  c_ID3DXBaseEffect_SetVectorArray::Ptr ID3DXBaseEffect -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> UINT -> IO HRESULT
+type LPID3DXBaseEffect = Ptr ID3DXBaseEffect
+type LPD3DXBASEEFFECT = Ptr ID3DXBaseEffect
+
+
+data ID3DXBaseMesh = ID3DXBaseMesh deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_CloneMesh"
+  c_ID3DXBaseMesh_CloneMesh::Ptr ID3DXBaseMesh -> DWORD -> Ptr D3DVERTEXELEMENT9 -> LPDIRECT3DDEVICE9 -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_CloneMeshFVF"
+  c_ID3DXBaseMesh_CloneMeshFVF::Ptr ID3DXBaseMesh -> DWORD -> DWORD -> LPDIRECT3DDEVICE9 -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_ConvertAdjacencyToPointReps"
+  c_ID3DXBaseMesh_ConvertAdjacencyToPointReps::Ptr ID3DXBaseMesh -> Ptr DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_ConvertPointRepsToAdjacency"
+  c_ID3DXBaseMesh_ConvertPointRepsToAdjacency::Ptr ID3DXBaseMesh -> Ptr DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_DrawSubset"
+  c_ID3DXBaseMesh_DrawSubset::Ptr ID3DXBaseMesh -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GenerateAdjacency"
+  c_ID3DXBaseMesh_GenerateAdjacency::Ptr ID3DXBaseMesh -> FLOAT -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetAttributeTable"
+  c_ID3DXBaseMesh_GetAttributeTable::Ptr ID3DXBaseMesh -> Ptr D3DXATTRIBUTERANGE -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetDeclaration"
+  c_ID3DXBaseMesh_GetDeclaration::Ptr ID3DXBaseMesh -> Ptr D3DVERTEXELEMENT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetDevice"
+  c_ID3DXBaseMesh_GetDevice::Ptr ID3DXBaseMesh -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetFVF"
+  c_ID3DXBaseMesh_GetFVF::Ptr ID3DXBaseMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetIndexBuffer"
+  c_ID3DXBaseMesh_GetIndexBuffer::Ptr ID3DXBaseMesh -> Ptr LPDIRECT3DINDEXBUFFER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetNumBytesPerVertex"
+  c_ID3DXBaseMesh_GetNumBytesPerVertex::Ptr ID3DXBaseMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetNumFaces"
+  c_ID3DXBaseMesh_GetNumFaces::Ptr ID3DXBaseMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetNumVertices"
+  c_ID3DXBaseMesh_GetNumVertices::Ptr ID3DXBaseMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetOptions"
+  c_ID3DXBaseMesh_GetOptions::Ptr ID3DXBaseMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_GetVertexBuffer"
+  c_ID3DXBaseMesh_GetVertexBuffer::Ptr ID3DXBaseMesh -> Ptr LPDIRECT3DVERTEXBUFFER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_LockIndexBuffer"
+  c_ID3DXBaseMesh_LockIndexBuffer::Ptr ID3DXBaseMesh -> DWORD -> Ptr LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_LockVertexBuffer"
+  c_ID3DXBaseMesh_LockVertexBuffer::Ptr ID3DXBaseMesh -> DWORD -> Ptr LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_UnlockIndexBuffer"
+  c_ID3DXBaseMesh_UnlockIndexBuffer::Ptr ID3DXBaseMesh -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_UnlockVertexBuffer"
+  c_ID3DXBaseMesh_UnlockVertexBuffer::Ptr ID3DXBaseMesh -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXBaseMesh_UpdateSemantics"
+  c_ID3DXBaseMesh_UpdateSemantics::Ptr ID3DXBaseMesh -> Ptr D3DVERTEXELEMENT9 -> IO HRESULT
+type LPID3DXBaseMesh = Ptr ID3DXBaseMesh
+type LPD3DXBASEMESH = Ptr ID3DXBaseMesh
+
+
+data ID3DXBuffer = ID3DXBuffer deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXBuffer_GetBufferPointer"
+  c_ID3DXBuffer_GetBufferPointer::Ptr ID3DXBuffer -> IO LPVOID
+foreign import ccall unsafe "fake.h c_ID3DXBuffer_GetBufferSize"
+  c_ID3DXBuffer_GetBufferSize::Ptr ID3DXBuffer -> IO DWORD
+type LPID3DXBuffer = Ptr ID3DXBuffer
+type LPD3DXBUFFER = Ptr ID3DXBuffer
+
+
+data ID3DXCompressedAnimationSet = ID3DXCompressedAnimationSet deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXCompressedAnimationSet_GetCallbackKeys"
+  c_ID3DXCompressedAnimationSet_GetCallbackKeys::Ptr ID3DXCompressedAnimationSet -> LPD3DXKEY_CALLBACK -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXCompressedAnimationSet_GetCompressedData"
+  c_ID3DXCompressedAnimationSet_GetCompressedData::Ptr ID3DXCompressedAnimationSet -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXCompressedAnimationSet_GetNumCallbackKeys"
+  c_ID3DXCompressedAnimationSet_GetNumCallbackKeys::Ptr ID3DXCompressedAnimationSet -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXCompressedAnimationSet_GetPlaybackType"
+  c_ID3DXCompressedAnimationSet_GetPlaybackType::Ptr ID3DXCompressedAnimationSet -> IO D3DXPLAYBACK_TYPE
+foreign import ccall unsafe "fake.h c_ID3DXCompressedAnimationSet_GetSourceTicksPerSecond"
+  c_ID3DXCompressedAnimationSet_GetSourceTicksPerSecond::Ptr ID3DXCompressedAnimationSet -> IO Double
+type LPID3DXCompressedAnimationSet = Ptr ID3DXCompressedAnimationSet
+type LPD3DXCOMPRESSEDANIMATIONSET = Ptr ID3DXCompressedAnimationSet
+
+
+data ID3DXConstantTable = ID3DXConstantTable deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetBufferPointer"
+  c_ID3DXConstantTable_GetBufferPointer::Ptr ID3DXConstantTable -> IO LPVOID
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetBufferSize"
+  c_ID3DXConstantTable_GetBufferSize::Ptr ID3DXConstantTable -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetConstant"
+  c_ID3DXConstantTable_GetConstant::Ptr ID3DXConstantTable -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetConstantByName"
+  c_ID3DXConstantTable_GetConstantByName::Ptr ID3DXConstantTable -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetConstantDesc"
+  c_ID3DXConstantTable_GetConstantDesc::Ptr ID3DXConstantTable -> D3DXHANDLE -> Ptr D3DXCONSTANT_DESC -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetConstantElement"
+  c_ID3DXConstantTable_GetConstantElement::Ptr ID3DXConstantTable -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetDesc"
+  c_ID3DXConstantTable_GetDesc::Ptr ID3DXConstantTable -> Ptr D3DXCONSTANTTABLE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_GetSamplerIndex"
+  c_ID3DXConstantTable_GetSamplerIndex::Ptr ID3DXConstantTable -> D3DXHANDLE -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetBool"
+  c_ID3DXConstantTable_SetBool::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetBoolArray"
+  c_ID3DXConstantTable_SetBoolArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetDefaults"
+  c_ID3DXConstantTable_SetDefaults::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetFloat"
+  c_ID3DXConstantTable_SetFloat::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetFloatArray"
+  c_ID3DXConstantTable_SetFloatArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetInt"
+  c_ID3DXConstantTable_SetInt::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> INT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetIntArray"
+  c_ID3DXConstantTable_SetIntArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr INT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrix"
+  c_ID3DXConstantTable_SetMatrix::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrixArray"
+  c_ID3DXConstantTable_SetMatrixArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrixPointerArray"
+  c_ID3DXConstantTable_SetMatrixPointerArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrixTranspose"
+  c_ID3DXConstantTable_SetMatrixTranspose::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrixTransposeArray"
+  c_ID3DXConstantTable_SetMatrixTransposeArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetMatrixTransposePointerArray"
+  c_ID3DXConstantTable_SetMatrixTransposePointerArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetValue"
+  c_ID3DXConstantTable_SetValue::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> LPCVOID -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetVector"
+  c_ID3DXConstantTable_SetVector::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXConstantTable_SetVectorArray"
+  c_ID3DXConstantTable_SetVectorArray::Ptr ID3DXConstantTable -> LPDIRECT3DDEVICE9 -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> UINT -> IO HRESULT
+type LPID3DXConstantTable = Ptr ID3DXConstantTable
+type LPD3DXCONSTANTTABLE = Ptr ID3DXConstantTable
+
+
+data ID3DXEffect = ID3DXEffect deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXEffect_ApplyParameterBlock"
+  c_ID3DXEffect_ApplyParameterBlock::Ptr ID3DXEffect -> D3DXHANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_Begin"
+  c_ID3DXEffect_Begin::Ptr ID3DXEffect -> Ptr UINT -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_BeginParameterBlock"
+  c_ID3DXEffect_BeginParameterBlock::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_BeginPass"
+  c_ID3DXEffect_BeginPass::Ptr ID3DXEffect -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_CloneEffect"
+  c_ID3DXEffect_CloneEffect::Ptr ID3DXEffect -> LPDIRECT3DDEVICE9 -> Ptr LPD3DXEFFECT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_CommitChanges"
+  c_ID3DXEffect_CommitChanges::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_DeleteParameterBlock"
+  c_ID3DXEffect_DeleteParameterBlock::Ptr ID3DXEffect -> D3DXHANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_End"
+  c_ID3DXEffect_End::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_EndParameterBlock"
+  c_ID3DXEffect_EndParameterBlock::Ptr ID3DXEffect -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXEffect_EndPass"
+  c_ID3DXEffect_EndPass::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_FindNextValidTechnique"
+  c_ID3DXEffect_FindNextValidTechnique::Ptr ID3DXEffect -> D3DXHANDLE -> Ptr D3DXHANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_GetCurrentTechnique"
+  c_ID3DXEffect_GetCurrentTechnique::Ptr ID3DXEffect -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXEffect_GetDevice"
+  c_ID3DXEffect_GetDevice::Ptr ID3DXEffect -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_GetPool"
+  c_ID3DXEffect_GetPool::Ptr ID3DXEffect -> Ptr LPD3DXEFFECTPOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_GetStateManager"
+  c_ID3DXEffect_GetStateManager::Ptr ID3DXEffect -> Ptr LPD3DXEFFECTSTATEMANAGER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_IsParameterUsed"
+  c_ID3DXEffect_IsParameterUsed::Ptr ID3DXEffect -> D3DXHANDLE -> D3DXHANDLE -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXEffect_OnLostDevice"
+  c_ID3DXEffect_OnLostDevice::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_OnResetDevice"
+  c_ID3DXEffect_OnResetDevice::Ptr ID3DXEffect -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_SetRawValue"
+  c_ID3DXEffect_SetRawValue::Ptr ID3DXEffect -> D3DXHANDLE -> Ptr () -> DWORD -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_SetStateManager"
+  c_ID3DXEffect_SetStateManager::Ptr ID3DXEffect -> LPD3DXEFFECTSTATEMANAGER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_SetTechnique"
+  c_ID3DXEffect_SetTechnique::Ptr ID3DXEffect -> D3DXHANDLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffect_ValidateTechnique"
+  c_ID3DXEffect_ValidateTechnique::Ptr ID3DXEffect -> D3DXHANDLE -> IO HRESULT
+type LPID3DXEffect = Ptr ID3DXEffect
+type LPD3DXEFFECT = Ptr ID3DXEffect
+
+
+data ID3DXEffectCompiler = ID3DXEffectCompiler deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXEffectCompiler_CompileEffect"
+  c_ID3DXEffectCompiler_CompileEffect::Ptr ID3DXEffectCompiler -> DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectCompiler_CompileShader"
+  c_ID3DXEffectCompiler_CompileShader::Ptr ID3DXEffectCompiler -> D3DXHANDLE -> LPCSTR -> DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXBUFFER -> Ptr LPD3DXCONSTANTTABLE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectCompiler_GetLiteral"
+  c_ID3DXEffectCompiler_GetLiteral::Ptr ID3DXEffectCompiler -> D3DXHANDLE -> Ptr BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectCompiler_SetLiteral"
+  c_ID3DXEffectCompiler_SetLiteral::Ptr ID3DXEffectCompiler -> D3DXHANDLE -> BOOL -> IO HRESULT
+type LPID3DXEffectCompiler = Ptr ID3DXEffectCompiler
+type LPD3DXEFFECTCOMPILER = Ptr ID3DXEffectCompiler
+
+
+data ID3DXEffectStateManager = ID3DXEffectStateManager deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_LightEnable"
+  c_ID3DXEffectStateManager_LightEnable::Ptr ID3DXEffectStateManager -> DWORD -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetFVF"
+  c_ID3DXEffectStateManager_SetFVF::Ptr ID3DXEffectStateManager -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetLight"
+  c_ID3DXEffectStateManager_SetLight::Ptr ID3DXEffectStateManager -> DWORD -> Ptr D3DLIGHT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetMaterial"
+  c_ID3DXEffectStateManager_SetMaterial::Ptr ID3DXEffectStateManager -> Ptr D3DMATERIAL9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetNPatchMode"
+  c_ID3DXEffectStateManager_SetNPatchMode::Ptr ID3DXEffectStateManager -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetPixelShader"
+  c_ID3DXEffectStateManager_SetPixelShader::Ptr ID3DXEffectStateManager -> LPDIRECT3DPIXELSHADER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetPixelShaderConstantB"
+  c_ID3DXEffectStateManager_SetPixelShaderConstantB::Ptr ID3DXEffectStateManager -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetPixelShaderConstantF"
+  c_ID3DXEffectStateManager_SetPixelShaderConstantF::Ptr ID3DXEffectStateManager -> UINT -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetPixelShaderConstantI"
+  c_ID3DXEffectStateManager_SetPixelShaderConstantI::Ptr ID3DXEffectStateManager -> UINT -> Ptr INT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetRenderState"
+  c_ID3DXEffectStateManager_SetRenderState::Ptr ID3DXEffectStateManager -> D3DRENDERSTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetSamplerState"
+  c_ID3DXEffectStateManager_SetSamplerState::Ptr ID3DXEffectStateManager -> DWORD -> D3DSAMPLERSTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetTexture"
+  c_ID3DXEffectStateManager_SetTexture::Ptr ID3DXEffectStateManager -> DWORD -> LPDIRECT3DBASETEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetTextureStageState"
+  c_ID3DXEffectStateManager_SetTextureStageState::Ptr ID3DXEffectStateManager -> DWORD -> D3DTEXTURESTAGESTATETYPE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetTransform"
+  c_ID3DXEffectStateManager_SetTransform::Ptr ID3DXEffectStateManager -> D3DTRANSFORMSTATETYPE -> Ptr D3DMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetVertexShader"
+  c_ID3DXEffectStateManager_SetVertexShader::Ptr ID3DXEffectStateManager -> LPDIRECT3DVERTEXSHADER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetVertexShaderConstantB"
+  c_ID3DXEffectStateManager_SetVertexShaderConstantB::Ptr ID3DXEffectStateManager -> UINT -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetVertexShaderConstantF"
+  c_ID3DXEffectStateManager_SetVertexShaderConstantF::Ptr ID3DXEffectStateManager -> UINT -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXEffectStateManager_SetVertexShaderConstantI"
+  c_ID3DXEffectStateManager_SetVertexShaderConstantI::Ptr ID3DXEffectStateManager -> UINT -> Ptr INT -> UINT -> IO HRESULT
+type LPID3DXEffectStateManager = Ptr ID3DXEffectStateManager
+type LPD3DXEFFECTSTATEMANAGER = Ptr ID3DXEffectStateManager
+
+
+data ID3DXFont = ID3DXFont deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFont_DrawText"
+  c_ID3DXFont_DrawText::Ptr ID3DXFont -> LPD3DXSPRITE -> LPCTSTR -> INT -> LPRECT -> DWORD -> D3DCOLOR -> IO INT
+foreign import ccall unsafe "fake.h c_ID3DXFont_GetDC"
+  c_ID3DXFont_GetDC::Ptr ID3DXFont -> IO HDC
+foreign import ccall unsafe "fake.h c_ID3DXFont_GetDescW"
+  c_ID3DXFont_GetDescW::Ptr ID3DXFont -> Ptr D3DXFONT_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_GetDevice"
+  c_ID3DXFont_GetDevice::Ptr ID3DXFont -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_GetGlyphData"
+  c_ID3DXFont_GetGlyphData::Ptr ID3DXFont -> UINT -> Ptr LPDIRECT3DTEXTURE9 -> Ptr RECT -> Ptr POINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_GetTextMetrics"
+  c_ID3DXFont_GetTextMetrics::Ptr ID3DXFont -> Ptr TEXTMETRIC -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXFont_OnLostDevice"
+  c_ID3DXFont_OnLostDevice::Ptr ID3DXFont -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_OnResetDevice"
+  c_ID3DXFont_OnResetDevice::Ptr ID3DXFont -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_PreloadCharacters"
+  c_ID3DXFont_PreloadCharacters::Ptr ID3DXFont -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_PreloadGlyphs"
+  c_ID3DXFont_PreloadGlyphs::Ptr ID3DXFont -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFont_PreloadTextW"
+  c_ID3DXFont_PreloadTextW::Ptr ID3DXFont -> Ptr LPCTSTR -> INT -> IO HRESULT
+type LPID3DXFont = Ptr ID3DXFont
+type LPD3DXFONT = Ptr ID3DXFont
+
+
+data ID3DXFile = ID3DXFile deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFile_CreateEnumObject"
+  c_ID3DXFile_CreateEnumObject::Ptr ID3DXFile -> LPCVOID -> D3DXF_FILELOADOPTIONS -> Ptr (Ptr ID3DXFileEnumObject) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFile_CreateSaveObject"
+  c_ID3DXFile_CreateSaveObject::Ptr ID3DXFile -> LPCVOID -> D3DXF_FILESAVEOPTIONS -> D3DXF_FILEFORMAT -> Ptr (Ptr ID3DXFileSaveObject) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFile_RegisterEnumTemplates"
+  c_ID3DXFile_RegisterEnumTemplates::Ptr ID3DXFile -> Ptr ID3DXFileEnumObject -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFile_RegisterTemplates"
+  c_ID3DXFile_RegisterTemplates::Ptr ID3DXFile -> LPCVOID -> SIZE_T -> IO HRESULT
+type LPID3DXFile = Ptr ID3DXFile
+type LPD3DXFILE = Ptr ID3DXFile
+
+
+data ID3DXFileData = ID3DXFileData deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetChild"
+  c_ID3DXFileData_GetChild::Ptr ID3DXFileData -> SIZE_T -> Ptr (Ptr ID3DXFileData) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetChildren"
+  c_ID3DXFileData_GetChildren::Ptr ID3DXFileData -> Ptr SIZE_T -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetEnum"
+  c_ID3DXFileData_GetEnum::Ptr ID3DXFileData -> Ptr (Ptr ID3DXFileEnumObject) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetId"
+  c_ID3DXFileData_GetId::Ptr ID3DXFileData -> LPGUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetName"
+  c_ID3DXFileData_GetName::Ptr ID3DXFileData -> LPSTR -> Ptr SIZE_T -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_GetType"
+  c_ID3DXFileData_GetType::Ptr ID3DXFileData -> Ptr GUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_IsReference"
+  c_ID3DXFileData_IsReference::Ptr ID3DXFileData -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXFileData_Lock"
+  c_ID3DXFileData_Lock::Ptr ID3DXFileData -> Ptr SIZE_T -> Ptr (Ptr ()) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileData_Unlock"
+  c_ID3DXFileData_Unlock::Ptr ID3DXFileData -> IO BOOL
+type LPID3DXFileData = Ptr ID3DXFileData
+type LPD3DXFILEDATA = Ptr ID3DXFileData
+
+
+data ID3DXFileEnumObject = ID3DXFileEnumObject deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFileEnumObject_GetChild"
+  c_ID3DXFileEnumObject_GetChild::Ptr ID3DXFileEnumObject -> SIZE_T -> Ptr (Ptr ID3DXFileData) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileEnumObject_GetChildren"
+  c_ID3DXFileEnumObject_GetChildren::Ptr ID3DXFileEnumObject -> Ptr SIZE_T -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileEnumObject_GetDataObjectById"
+  c_ID3DXFileEnumObject_GetDataObjectById::Ptr ID3DXFileEnumObject -> REFGUID -> Ptr LPD3DXFILEDATA -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileEnumObject_GetDataObjectByName"
+  c_ID3DXFileEnumObject_GetDataObjectByName::Ptr ID3DXFileEnumObject -> LPCSTR -> Ptr (Ptr ID3DXFileData) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileEnumObject_GetFile"
+  c_ID3DXFileEnumObject_GetFile::Ptr ID3DXFileEnumObject -> Ptr (Ptr ID3DXFile) -> IO HRESULT
+type LPID3DXFileEnumObject = Ptr ID3DXFileEnumObject
+type LPD3DXFILEENUMOBJECT = Ptr ID3DXFileEnumObject
+
+
+data ID3DXFileSaveData = ID3DXFileSaveData deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_AddDataObject"
+  c_ID3DXFileSaveData_AddDataObject::Ptr ID3DXFileSaveData -> REFGUID -> LPCSTR -> Ptr GUID -> SIZE_T -> LPCVOID -> Ptr (Ptr ID3DXFileSaveData) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_AddDataReference"
+  c_ID3DXFileSaveData_AddDataReference::Ptr ID3DXFileSaveData -> LPCSTR -> Ptr GUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_GetId"
+  c_ID3DXFileSaveData_GetId::Ptr ID3DXFileSaveData -> LPGUID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_GetName"
+  c_ID3DXFileSaveData_GetName::Ptr ID3DXFileSaveData -> LPSTR -> Ptr SIZE_T -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_GetSave"
+  c_ID3DXFileSaveData_GetSave::Ptr ID3DXFileSaveData -> Ptr (Ptr ID3DXFileSaveObject) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveData_GetType"
+  c_ID3DXFileSaveData_GetType::Ptr ID3DXFileSaveData -> Ptr GUID -> IO HRESULT
+type LPID3DXFileSaveData = Ptr ID3DXFileSaveData
+type LPD3DXFILESAVEDATA = Ptr ID3DXFileSaveData
+
+
+data ID3DXFileSaveObject = ID3DXFileSaveObject deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveObject_AddDataObject"
+  c_ID3DXFileSaveObject_AddDataObject::Ptr ID3DXFileSaveObject -> REFGUID -> LPCSTR -> Ptr GUID -> SIZE_T -> LPCVOID -> Ptr (Ptr ID3DXFileSaveData) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveObject_GetFile"
+  c_ID3DXFileSaveObject_GetFile::Ptr ID3DXFileSaveObject -> Ptr (Ptr ID3DXFile) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFileSaveObject_Save"
+  c_ID3DXFileSaveObject_Save::Ptr ID3DXFileSaveObject -> IO HRESULT
+type LPID3DXFileSaveObject = Ptr ID3DXFileSaveObject
+type LPD3DXFILESAVEOBJECT = Ptr ID3DXFileSaveObject
+
+
+data ID3DXFragmentLinker = ID3DXFragmentLinker deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_AddFragments"
+  c_ID3DXFragmentLinker_AddFragments::Ptr ID3DXFragmentLinker -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_ClearCache"
+  c_ID3DXFragmentLinker_ClearCache::Ptr ID3DXFragmentLinker -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetAllFragments"
+  c_ID3DXFragmentLinker_GetAllFragments::Ptr ID3DXFragmentLinker -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetDevice"
+  c_ID3DXFragmentLinker_GetDevice::Ptr ID3DXFragmentLinker -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetFragment"
+  c_ID3DXFragmentLinker_GetFragment::Ptr ID3DXFragmentLinker -> D3DXHANDLE -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetFragmentDesc"
+  c_ID3DXFragmentLinker_GetFragmentDesc::Ptr ID3DXFragmentLinker -> D3DXHANDLE -> LPD3DXFRAGMENT_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetFragmentHandleByIndex"
+  c_ID3DXFragmentLinker_GetFragmentHandleByIndex::Ptr ID3DXFragmentLinker -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetFragmentHandleByName"
+  c_ID3DXFragmentLinker_GetFragmentHandleByName::Ptr ID3DXFragmentLinker -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_GetNumberOfFragments"
+  c_ID3DXFragmentLinker_GetNumberOfFragments::Ptr ID3DXFragmentLinker -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_LinkPixelShader"
+  c_ID3DXFragmentLinker_LinkPixelShader::Ptr ID3DXFragmentLinker -> LPCSTR -> DWORD -> Ptr D3DXHANDLE -> UINT -> Ptr LPDIRECT3DPIXELSHADER9 -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_LinkShader"
+  c_ID3DXFragmentLinker_LinkShader::Ptr ID3DXFragmentLinker -> LPCSTR -> DWORD -> Ptr D3DXHANDLE -> UINT -> Ptr LPD3DXBUFFER -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXFragmentLinker_LinkVertexShader"
+  c_ID3DXFragmentLinker_LinkVertexShader::Ptr ID3DXFragmentLinker -> LPCSTR -> DWORD -> Ptr D3DXHANDLE -> UINT -> Ptr LPDIRECT3DVERTEXSHADER9 -> Ptr LPD3DXBUFFER -> IO HRESULT
+type LPID3DXFragmentLinker = Ptr ID3DXFragmentLinker
+type LPD3DXFRAGMENTLINKER = Ptr ID3DXFragmentLinker
+
+
+data ID3DXInclude = ID3DXInclude deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXInclude_Close"
+  c_ID3DXInclude_Close::Ptr ID3DXInclude -> LPCVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXInclude_Open"
+  c_ID3DXInclude_Open::Ptr ID3DXInclude -> D3DXINCLUDE_TYPE -> LPCSTR -> LPCVOID -> Ptr LPCVOID -> Ptr UINT -> IO HRESULT
+type LPID3DXInclude = Ptr ID3DXInclude
+type LPD3DXINCLUDE = Ptr ID3DXInclude
+
+
+data ID3DXKeyframedAnimationSet = ID3DXKeyframedAnimationSet deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_Compress"
+  c_ID3DXKeyframedAnimationSet_Compress::Ptr ID3DXKeyframedAnimationSet -> DWORD -> FLOAT -> LPD3DXFRAME -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetCallbackKey"
+  c_ID3DXKeyframedAnimationSet_GetCallbackKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> LPD3DXKEY_CALLBACK -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetCallbackKeys"
+  c_ID3DXKeyframedAnimationSet_GetCallbackKeys::Ptr ID3DXKeyframedAnimationSet -> LPD3DXKEY_CALLBACK -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetNumCallbackKeys"
+  c_ID3DXKeyframedAnimationSet_GetNumCallbackKeys::Ptr ID3DXKeyframedAnimationSet -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetNumRotationKeys"
+  c_ID3DXKeyframedAnimationSet_GetNumRotationKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetNumScaleKeys"
+  c_ID3DXKeyframedAnimationSet_GetNumScaleKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetNumTranslationKeys"
+  c_ID3DXKeyframedAnimationSet_GetNumTranslationKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetPlaybackType"
+  c_ID3DXKeyframedAnimationSet_GetPlaybackType::Ptr ID3DXKeyframedAnimationSet -> IO D3DXPLAYBACK_TYPE
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetRotationKey"
+  c_ID3DXKeyframedAnimationSet_GetRotationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_QUATERNION -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetRotationKeys"
+  c_ID3DXKeyframedAnimationSet_GetRotationKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> LPD3DXKEY_QUATERNION -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetScaleKey"
+  c_ID3DXKeyframedAnimationSet_GetScaleKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetScaleKeys"
+  c_ID3DXKeyframedAnimationSet_GetScaleKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetSourceTicksPerSecond"
+  c_ID3DXKeyframedAnimationSet_GetSourceTicksPerSecond::Ptr ID3DXKeyframedAnimationSet -> IO Double
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetTranslationKey"
+  c_ID3DXKeyframedAnimationSet_GetTranslationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_GetTranslationKeys"
+  c_ID3DXKeyframedAnimationSet_GetTranslationKeys::Ptr ID3DXKeyframedAnimationSet -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_RegisterAnimationSRTKeys"
+  c_ID3DXKeyframedAnimationSet_RegisterAnimationSRTKeys::Ptr ID3DXKeyframedAnimationSet -> LPCSTR -> UINT -> UINT -> UINT -> Ptr LPD3DXKEY_VECTOR3 -> Ptr LPD3DXKEY_QUATERNION -> Ptr LPD3DXKEY_VECTOR3 -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_SetCallbackKey"
+  c_ID3DXKeyframedAnimationSet_SetCallbackKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> LPD3DXKEY_CALLBACK -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_SetRotationKey"
+  c_ID3DXKeyframedAnimationSet_SetRotationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_QUATERNION -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_SetScaleKey"
+  c_ID3DXKeyframedAnimationSet_SetScaleKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_SetTranslationKey"
+  c_ID3DXKeyframedAnimationSet_SetTranslationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> LPD3DXKEY_VECTOR3 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_UnregisterAnimation"
+  c_ID3DXKeyframedAnimationSet_UnregisterAnimation::Ptr ID3DXKeyframedAnimationSet -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_UnregisterRotationKey"
+  c_ID3DXKeyframedAnimationSet_UnregisterRotationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_UnregisterScaleKey"
+  c_ID3DXKeyframedAnimationSet_UnregisterScaleKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXKeyframedAnimationSet_UnregisterTranslationKey"
+  c_ID3DXKeyframedAnimationSet_UnregisterTranslationKey::Ptr ID3DXKeyframedAnimationSet -> UINT -> UINT -> IO HRESULT
+type LPID3DXKeyframedAnimationSet = Ptr ID3DXKeyframedAnimationSet
+type LPD3DXKEYFRAMEDANIMATIONSET = Ptr ID3DXKeyframedAnimationSet
+
+
+data ID3DXLine = ID3DXLine deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXLine_Begin"
+  c_ID3DXLine_Begin::Ptr ID3DXLine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_Draw"
+  c_ID3DXLine_Draw::Ptr ID3DXLine -> Ptr D3DXVECTOR2 -> DWORD -> D3DCOLOR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_DrawTransform"
+  c_ID3DXLine_DrawTransform::Ptr ID3DXLine -> Ptr D3DXVECTOR3 -> DWORD -> Ptr D3DXMATRIX -> D3DCOLOR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_End"
+  c_ID3DXLine_End::Ptr ID3DXLine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetAntialias"
+  c_ID3DXLine_GetAntialias::Ptr ID3DXLine -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetDevice"
+  c_ID3DXLine_GetDevice::Ptr ID3DXLine -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetGLLines"
+  c_ID3DXLine_GetGLLines::Ptr ID3DXLine -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetPattern"
+  c_ID3DXLine_GetPattern::Ptr ID3DXLine -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetPatternScale"
+  c_ID3DXLine_GetPatternScale::Ptr ID3DXLine -> IO FLOAT
+foreign import ccall unsafe "fake.h c_ID3DXLine_GetWidth"
+  c_ID3DXLine_GetWidth::Ptr ID3DXLine -> IO FLOAT
+foreign import ccall unsafe "fake.h c_ID3DXLine_OnLostDevice"
+  c_ID3DXLine_OnLostDevice::Ptr ID3DXLine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_OnResetDevice"
+  c_ID3DXLine_OnResetDevice::Ptr ID3DXLine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_SetAntialias"
+  c_ID3DXLine_SetAntialias::Ptr ID3DXLine -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_SetGLLines"
+  c_ID3DXLine_SetGLLines::Ptr ID3DXLine -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_SetPattern"
+  c_ID3DXLine_SetPattern::Ptr ID3DXLine -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_SetPatternScale"
+  c_ID3DXLine_SetPatternScale::Ptr ID3DXLine -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXLine_SetWidth"
+  c_ID3DXLine_SetWidth::Ptr ID3DXLine -> FLOAT -> IO HRESULT
+type LPID3DXLine = Ptr ID3DXLine
+type LPD3DXLINE = Ptr ID3DXLine
+
+
+data ID3DXMesh = ID3DXMesh deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXMesh_LockAttributeBuffer"
+  c_ID3DXMesh_LockAttributeBuffer::Ptr ID3DXMesh -> DWORD -> Ptr (Ptr DWORD) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXMesh_Optimize"
+  c_ID3DXMesh_Optimize::Ptr ID3DXMesh -> DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXMesh_OptimizeInplace"
+  c_ID3DXMesh_OptimizeInplace::Ptr ID3DXMesh -> DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXMesh_SetAttributeTable"
+  c_ID3DXMesh_SetAttributeTable::Ptr ID3DXMesh -> Ptr D3DXATTRIBUTERANGE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXMesh_UnlockAttributeBuffer"
+  c_ID3DXMesh_UnlockAttributeBuffer::Ptr ID3DXMesh -> IO HRESULT
+type LPID3DXMesh = Ptr ID3DXMesh
+type LPD3DXMESH = Ptr ID3DXMesh
+
+
+data ID3DXPatchMesh = ID3DXPatchMesh deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_CloneMesh"
+  c_ID3DXPatchMesh_CloneMesh::Ptr ID3DXPatchMesh -> DWORD -> Ptr D3DVERTEXELEMENT9 -> Ptr LPD3DXPATCHMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GenerateAdjacency"
+  c_ID3DXPatchMesh_GenerateAdjacency::Ptr ID3DXPatchMesh -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetControlVerticesPerPatch"
+  c_ID3DXPatchMesh_GetControlVerticesPerPatch::Ptr ID3DXPatchMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetDeclaration"
+  c_ID3DXPatchMesh_GetDeclaration::Ptr ID3DXPatchMesh -> Ptr LPD3DVERTEXELEMENT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetDevice"
+  c_ID3DXPatchMesh_GetDevice::Ptr ID3DXPatchMesh -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetDisplaceParam"
+  c_ID3DXPatchMesh_GetDisplaceParam::Ptr ID3DXPatchMesh -> Ptr LPDIRECT3DBASETEXTURE9 -> Ptr D3DTEXTUREFILTERTYPE -> Ptr D3DTEXTUREFILTERTYPE -> Ptr D3DTEXTUREFILTERTYPE -> Ptr D3DTEXTUREADDRESS -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetIndexBuffer"
+  c_ID3DXPatchMesh_GetIndexBuffer::Ptr ID3DXPatchMesh -> Ptr LPDIRECT3DINDEXBUFFER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetNumPatches"
+  c_ID3DXPatchMesh_GetNumPatches::Ptr ID3DXPatchMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetNumVertices"
+  c_ID3DXPatchMesh_GetNumVertices::Ptr ID3DXPatchMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetOptions"
+  c_ID3DXPatchMesh_GetOptions::Ptr ID3DXPatchMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetPatchInfo"
+  c_ID3DXPatchMesh_GetPatchInfo::Ptr ID3DXPatchMesh -> LPD3DXPATCHINFO -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetTessSize"
+  c_ID3DXPatchMesh_GetTessSize::Ptr ID3DXPatchMesh -> FLOAT -> DWORD -> Ptr DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_GetVertexBuffer"
+  c_ID3DXPatchMesh_GetVertexBuffer::Ptr ID3DXPatchMesh -> Ptr LPDIRECT3DVERTEXBUFFER9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_LockAttributeBuffer"
+  c_ID3DXPatchMesh_LockAttributeBuffer::Ptr ID3DXPatchMesh -> DWORD -> Ptr (Ptr DWORD) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_LockIndexBuffer"
+  c_ID3DXPatchMesh_LockIndexBuffer::Ptr ID3DXPatchMesh -> DWORD -> Ptr LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_LockVertexBuffer"
+  c_ID3DXPatchMesh_LockVertexBuffer::Ptr ID3DXPatchMesh -> DWORD -> Ptr LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_Optimize"
+  c_ID3DXPatchMesh_Optimize::Ptr ID3DXPatchMesh -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_SetDisplaceParam"
+  c_ID3DXPatchMesh_SetDisplaceParam::Ptr ID3DXPatchMesh -> LPDIRECT3DBASETEXTURE9 -> D3DTEXTUREFILTERTYPE -> D3DTEXTUREFILTERTYPE -> D3DTEXTUREFILTERTYPE -> D3DTEXTUREADDRESS -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_Tessellate"
+  c_ID3DXPatchMesh_Tessellate::Ptr ID3DXPatchMesh -> FLOAT -> LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_TessellateAdaptive"
+  c_ID3DXPatchMesh_TessellateAdaptive::Ptr ID3DXPatchMesh -> Ptr D3DXVECTOR4 -> DWORD -> DWORD -> LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_UnlockAttributeBuffer"
+  c_ID3DXPatchMesh_UnlockAttributeBuffer::Ptr ID3DXPatchMesh -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_UnlockIndexBuffer"
+  c_ID3DXPatchMesh_UnlockIndexBuffer::Ptr ID3DXPatchMesh -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPatchMesh_UnlockVertexBuffer"
+  c_ID3DXPatchMesh_UnlockVertexBuffer::Ptr ID3DXPatchMesh -> IO HRESULT
+type LPID3DXPatchMesh = Ptr ID3DXPatchMesh
+type LPD3DXPATCHMESH = Ptr ID3DXPatchMesh
+
+
+data ID3DXPMesh = ID3DXPMesh deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_ClonePMesh"
+  c_ID3DXPMesh_ClonePMesh::Ptr ID3DXPMesh -> DWORD -> Ptr D3DVERTEXELEMENT9 -> LPDIRECT3DDEVICE9 -> Ptr (Ptr ID3DXPMesh) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_ClonePMeshFVF"
+  c_ID3DXPMesh_ClonePMeshFVF::Ptr ID3DXPMesh -> DWORD -> DWORD -> LPDIRECT3DDEVICE9 -> Ptr LPD3DXPMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GenerateVertexHistory"
+  c_ID3DXPMesh_GenerateVertexHistory::Ptr ID3DXPMesh -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GetAdjacency"
+  c_ID3DXPMesh_GetAdjacency::Ptr ID3DXPMesh -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GetMaxFaces"
+  c_ID3DXPMesh_GetMaxFaces::Ptr ID3DXPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GetMaxVertices"
+  c_ID3DXPMesh_GetMaxVertices::Ptr ID3DXPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GetMinFaces"
+  c_ID3DXPMesh_GetMinFaces::Ptr ID3DXPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_GetMinVertices"
+  c_ID3DXPMesh_GetMinVertices::Ptr ID3DXPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_Optimize"
+  c_ID3DXPMesh_Optimize::Ptr ID3DXPMesh -> DWORD -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_OptimizeBaseLOD"
+  c_ID3DXPMesh_OptimizeBaseLOD::Ptr ID3DXPMesh -> DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_Save"
+  c_ID3DXPMesh_Save::Ptr ID3DXPMesh -> Ptr IStream -> Ptr D3DXMATERIAL -> Ptr D3DXEFFECTINSTANCE -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_SetNumFaces"
+  c_ID3DXPMesh_SetNumFaces::Ptr ID3DXPMesh -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_SetNumVertices"
+  c_ID3DXPMesh_SetNumVertices::Ptr ID3DXPMesh -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_TrimByFaces"
+  c_ID3DXPMesh_TrimByFaces::Ptr ID3DXPMesh -> DWORD -> DWORD -> Ptr DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPMesh_TrimByVertices"
+  c_ID3DXPMesh_TrimByVertices::Ptr ID3DXPMesh -> DWORD -> DWORD -> Ptr DWORD -> Ptr DWORD -> IO HRESULT
+type LPID3DXPMesh = Ptr ID3DXPMesh
+type LPD3DXPMESH = Ptr ID3DXPMesh
+
+
+data ID3DXPRTBuffer = ID3DXPRTBuffer deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_AddBuffer"
+  c_ID3DXPRTBuffer_AddBuffer::Ptr ID3DXPRTBuffer -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_AttachGH"
+  c_ID3DXPRTBuffer_AttachGH::Ptr ID3DXPRTBuffer -> LPD3DXTEXTUREGUTTERHELPER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_EvalGH"
+  c_ID3DXPRTBuffer_EvalGH::Ptr ID3DXPRTBuffer -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_ExtractTexture"
+  c_ID3DXPRTBuffer_ExtractTexture::Ptr ID3DXPRTBuffer -> UINT -> UINT -> UINT -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_ExtractToMesh"
+  c_ID3DXPRTBuffer_ExtractToMesh::Ptr ID3DXPRTBuffer -> UINT -> D3DDECLUSAGE -> UINT -> LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_GetHeight"
+  c_ID3DXPRTBuffer_GetHeight::Ptr ID3DXPRTBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_GetNumChannels"
+  c_ID3DXPRTBuffer_GetNumChannels::Ptr ID3DXPRTBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_GetNumCoeffs"
+  c_ID3DXPRTBuffer_GetNumCoeffs::Ptr ID3DXPRTBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_GetNumSamples"
+  c_ID3DXPRTBuffer_GetNumSamples::Ptr ID3DXPRTBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_GetWidth"
+  c_ID3DXPRTBuffer_GetWidth::Ptr ID3DXPRTBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_IsTexture"
+  c_ID3DXPRTBuffer_IsTexture::Ptr ID3DXPRTBuffer -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_LockBuffer"
+  c_ID3DXPRTBuffer_LockBuffer::Ptr ID3DXPRTBuffer -> UINT -> UINT -> Ptr (Ptr FLOAT) -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_ReleaseGH"
+  c_ID3DXPRTBuffer_ReleaseGH::Ptr ID3DXPRTBuffer -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_Resize"
+  c_ID3DXPRTBuffer_Resize::Ptr ID3DXPRTBuffer -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_ScaleBuffer"
+  c_ID3DXPRTBuffer_ScaleBuffer::Ptr ID3DXPRTBuffer -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTBuffer_UnlockBuffer"
+  c_ID3DXPRTBuffer_UnlockBuffer::Ptr ID3DXPRTBuffer -> IO HRESULT
+type LPID3DXPRTBuffer = Ptr ID3DXPRTBuffer
+type LPD3DXPRTBUFFER = Ptr ID3DXPRTBuffer
+
+
+data ID3DXPRTCompBuffer = ID3DXPRTCompBuffer deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_ExtractBasis"
+  c_ID3DXPRTCompBuffer_ExtractBasis::Ptr ID3DXPRTCompBuffer -> UINT -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_ExtractClusterIDs"
+  c_ID3DXPRTCompBuffer_ExtractClusterIDs::Ptr ID3DXPRTCompBuffer -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_ExtractPCA"
+  c_ID3DXPRTCompBuffer_ExtractPCA::Ptr ID3DXPRTCompBuffer -> UINT -> UINT -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_ExtractTexture"
+  c_ID3DXPRTCompBuffer_ExtractTexture::Ptr ID3DXPRTCompBuffer -> UINT -> UINT -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_ExtractToMesh"
+  c_ID3DXPRTCompBuffer_ExtractToMesh::Ptr ID3DXPRTCompBuffer -> UINT -> D3DDECLUSAGE -> UINT -> LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetHeight"
+  c_ID3DXPRTCompBuffer_GetHeight::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetNumChannels"
+  c_ID3DXPRTCompBuffer_GetNumChannels::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetNumClusters"
+  c_ID3DXPRTCompBuffer_GetNumClusters::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetNumCoeffs"
+  c_ID3DXPRTCompBuffer_GetNumCoeffs::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetNumPCA"
+  c_ID3DXPRTCompBuffer_GetNumPCA::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetNumSamples"
+  c_ID3DXPRTCompBuffer_GetNumSamples::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_GetWidth"
+  c_ID3DXPRTCompBuffer_GetWidth::Ptr ID3DXPRTCompBuffer -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_IsTexture"
+  c_ID3DXPRTCompBuffer_IsTexture::Ptr ID3DXPRTCompBuffer -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXPRTCompBuffer_NormalizeData"
+  c_ID3DXPRTCompBuffer_NormalizeData::Ptr ID3DXPRTCompBuffer -> IO HRESULT
+type LPID3DXPRTCompBuffer = Ptr ID3DXPRTCompBuffer
+type LPD3DXPRTCOMPBUFFER = Ptr ID3DXPRTCompBuffer
+
+
+data ID3DXPRTEngine = ID3DXPRTEngine deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ClosestRayIntersects"
+  c_ID3DXPRTEngine_ClosestRayIntersects::Ptr ID3DXPRTEngine -> Ptr D3DXVECTOR3 -> Ptr D3DXVECTOR3 -> Ptr DWORD -> Ptr FLOAT -> Ptr FLOAT -> Ptr FLOAT -> IO BOOL
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeBounce"
+  c_ID3DXPRTEngine_ComputeBounce::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeBounceAdaptive"
+  c_ID3DXPRTEngine_ComputeBounceAdaptive::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> FLOAT -> FLOAT -> UINT -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeDirectLightingSH"
+  c_ID3DXPRTEngine_ComputeDirectLightingSH::Ptr ID3DXPRTEngine -> UINT -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeDirectLightingSHAdaptive"
+  c_ID3DXPRTEngine_ComputeDirectLightingSHAdaptive::Ptr ID3DXPRTEngine -> UINT -> FLOAT -> FLOAT -> UINT -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeDirectLightingSHGPU"
+  c_ID3DXPRTEngine_ComputeDirectLightingSHGPU::Ptr ID3DXPRTEngine -> LPDIRECT3DDEVICE9 -> UINT -> UINT -> FLOAT -> FLOAT -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeLDPRTCoeffs"
+  c_ID3DXPRTEngine_ComputeLDPRTCoeffs::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> UINT -> Ptr D3DXVECTOR3 -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeSS"
+  c_ID3DXPRTEngine_ComputeSS::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeSSAdaptive"
+  c_ID3DXPRTEngine_ComputeSSAdaptive::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> FLOAT -> FLOAT -> UINT -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeSurfSamplesBounce"
+  c_ID3DXPRTEngine_ComputeSurfSamplesBounce::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> UINT -> Ptr D3DXVECTOR3 -> Ptr D3DXVECTOR3 -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeSurfSamplesDirectSH"
+  c_ID3DXPRTEngine_ComputeSurfSamplesDirectSH::Ptr ID3DXPRTEngine -> UINT -> UINT -> Ptr D3DXVECTOR3 -> Ptr D3DXVECTOR3 -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeVolumeSamples"
+  c_ID3DXPRTEngine_ComputeVolumeSamples::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> UINT -> UINT -> Ptr D3DXVECTOR3 -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ComputeVolumeSamplesDirectSH"
+  c_ID3DXPRTEngine_ComputeVolumeSamplesDirectSH::Ptr ID3DXPRTEngine -> UINT -> UINT -> UINT -> Ptr D3DXVECTOR3 -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ExtractPerVertexAlbedo"
+  c_ID3DXPRTEngine_ExtractPerVertexAlbedo::Ptr ID3DXPRTEngine -> LPD3DXMESH -> D3DDECLUSAGE -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_FreeBounceData"
+  c_ID3DXPRTEngine_FreeBounceData::Ptr ID3DXPRTEngine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_FreeSSData"
+  c_ID3DXPRTEngine_FreeSSData::Ptr ID3DXPRTEngine -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_GetAdaptedMesh"
+  c_ID3DXPRTEngine_GetAdaptedMesh::Ptr ID3DXPRTEngine -> LPDIRECT3DDEVICE9 -> Ptr UINT -> Ptr UINT -> Ptr FLOAT -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_GetNumFaces"
+  c_ID3DXPRTEngine_GetNumFaces::Ptr ID3DXPRTEngine -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_GetNumVerts"
+  c_ID3DXPRTEngine_GetNumVerts::Ptr ID3DXPRTEngine -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_GetVertexAlbedo"
+  c_ID3DXPRTEngine_GetVertexAlbedo::Ptr ID3DXPRTEngine -> Ptr D3DXCOLOR -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_MultiplyAlbedo"
+  c_ID3DXPRTEngine_MultiplyAlbedo::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ResampleBuffer"
+  c_ID3DXPRTEngine_ResampleBuffer::Ptr ID3DXPRTEngine -> LPD3DXPRTBUFFER -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_RobustMeshRefine"
+  c_ID3DXPRTEngine_RobustMeshRefine::Ptr ID3DXPRTEngine -> FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ScaleMeshChunk"
+  c_ID3DXPRTEngine_ScaleMeshChunk::Ptr ID3DXPRTEngine -> UINT -> FLOAT -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetCallBack"
+  c_ID3DXPRTEngine_SetCallBack::Ptr ID3DXPRTEngine -> LPD3DXSHPRTSIMCB -> FLOAT -> LPVOID -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetMinMaxIntersection"
+  c_ID3DXPRTEngine_SetMinMaxIntersection::Ptr ID3DXPRTEngine -> FLOAT -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetPerTexelAlbedo"
+  c_ID3DXPRTEngine_SetPerTexelAlbedo::Ptr ID3DXPRTEngine -> LPDIRECT3DTEXTURE9 -> UINT -> LPD3DXTEXTUREGUTTERHELPER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetPerTexelNormal"
+  c_ID3DXPRTEngine_SetPerTexelNormal::Ptr ID3DXPRTEngine -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetPerVertexAlbedo"
+  c_ID3DXPRTEngine_SetPerVertexAlbedo::Ptr ID3DXPRTEngine -> Ptr () -> UINT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_SetSamplingInfo"
+  c_ID3DXPRTEngine_SetSamplingInfo::Ptr ID3DXPRTEngine -> UINT -> BOOL -> BOOL -> BOOL -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXPRTEngine_ShadowRayIntersects"
+  c_ID3DXPRTEngine_ShadowRayIntersects::Ptr ID3DXPRTEngine -> Ptr D3DXVECTOR3 -> Ptr D3DXVECTOR3 -> IO BOOL
+type LPID3DXPRTEngine = Ptr ID3DXPRTEngine
+type LPD3DXPRTENGINE = Ptr ID3DXPRTEngine
+
+
+data ID3DXRenderToEnvMap = ID3DXRenderToEnvMap deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_BeginCube"
+  c_ID3DXRenderToEnvMap_BeginCube::Ptr ID3DXRenderToEnvMap -> LPDIRECT3DCUBETEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_BeginHemisphere"
+  c_ID3DXRenderToEnvMap_BeginHemisphere::Ptr ID3DXRenderToEnvMap -> LPDIRECT3DTEXTURE9 -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_BeginParabolic"
+  c_ID3DXRenderToEnvMap_BeginParabolic::Ptr ID3DXRenderToEnvMap -> LPDIRECT3DTEXTURE9 -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_BeginSphere"
+  c_ID3DXRenderToEnvMap_BeginSphere::Ptr ID3DXRenderToEnvMap -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_End"
+  c_ID3DXRenderToEnvMap_End::Ptr ID3DXRenderToEnvMap -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_Face"
+  c_ID3DXRenderToEnvMap_Face::Ptr ID3DXRenderToEnvMap -> D3DCUBEMAP_FACES -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_GetDesc"
+  c_ID3DXRenderToEnvMap_GetDesc::Ptr ID3DXRenderToEnvMap -> Ptr D3DXRTE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_GetDevice"
+  c_ID3DXRenderToEnvMap_GetDevice::Ptr ID3DXRenderToEnvMap -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_OnLostDevice"
+  c_ID3DXRenderToEnvMap_OnLostDevice::Ptr ID3DXRenderToEnvMap -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToEnvMap_OnResetDevice"
+  c_ID3DXRenderToEnvMap_OnResetDevice::Ptr ID3DXRenderToEnvMap -> IO HRESULT
+type LPID3DXRenderToEnvMap = Ptr ID3DXRenderToEnvMap
+type LPD3DXRENDERTOENVMAP = Ptr ID3DXRenderToEnvMap
+
+
+data ID3DXRenderToSurface = ID3DXRenderToSurface deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_BeginScene"
+  c_ID3DXRenderToSurface_BeginScene::Ptr ID3DXRenderToSurface -> LPDIRECT3DSURFACE9 -> Ptr D3DVIEWPORT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_EndScene"
+  c_ID3DXRenderToSurface_EndScene::Ptr ID3DXRenderToSurface -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_GetDesc"
+  c_ID3DXRenderToSurface_GetDesc::Ptr ID3DXRenderToSurface -> Ptr D3DXRTS_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_GetDevice"
+  c_ID3DXRenderToSurface_GetDevice::Ptr ID3DXRenderToSurface -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_OnLostDevice"
+  c_ID3DXRenderToSurface_OnLostDevice::Ptr ID3DXRenderToSurface -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXRenderToSurface_OnResetDevice"
+  c_ID3DXRenderToSurface_OnResetDevice::Ptr ID3DXRenderToSurface -> IO HRESULT
+type LPID3DXRenderToSurface = Ptr ID3DXRenderToSurface
+type LPD3DXRENDERTOSURFACE = Ptr ID3DXRenderToSurface
+
+
+data ID3DXSkinInfo = ID3DXSkinInfo deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_Clone"
+  c_ID3DXSkinInfo_Clone::Ptr ID3DXSkinInfo -> Ptr LPD3DXSKININFO -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_ConvertToBlendedMesh"
+  c_ID3DXSkinInfo_ConvertToBlendedMesh::Ptr ID3DXSkinInfo -> LPD3DXMESH -> DWORD -> Ptr DWORD -> LPDWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_ConvertToIndexedBlendedMesh"
+  c_ID3DXSkinInfo_ConvertToIndexedBlendedMesh::Ptr ID3DXSkinInfo -> LPD3DXMESH -> DWORD -> DWORD -> Ptr DWORD -> LPDWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXBUFFER -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_FindBoneVertexInfluenceIndex"
+  c_ID3DXSkinInfo_FindBoneVertexInfluenceIndex::Ptr ID3DXSkinInfo -> DWORD -> DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetBoneInfluence"
+  c_ID3DXSkinInfo_GetBoneInfluence::Ptr ID3DXSkinInfo -> DWORD -> Ptr DWORD -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetBoneName"
+  c_ID3DXSkinInfo_GetBoneName::Ptr ID3DXSkinInfo -> DWORD -> IO LPCSTR
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetBoneOffsetMatrix"
+  c_ID3DXSkinInfo_GetBoneOffsetMatrix::Ptr ID3DXSkinInfo -> DWORD -> IO LPD3DXMATRIX
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetBoneVertexInfluence"
+  c_ID3DXSkinInfo_GetBoneVertexInfluence::Ptr ID3DXSkinInfo -> DWORD -> DWORD -> Ptr FLOAT -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetDeclaration"
+  c_ID3DXSkinInfo_GetDeclaration::Ptr ID3DXSkinInfo -> Ptr D3DVERTEXELEMENT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetFVF"
+  c_ID3DXSkinInfo_GetFVF::Ptr ID3DXSkinInfo -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetMaxFaceInfluences"
+  c_ID3DXSkinInfo_GetMaxFaceInfluences::Ptr ID3DXSkinInfo -> LPDIRECT3DINDEXBUFFER9 -> DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetMaxVertexInfluences"
+  c_ID3DXSkinInfo_GetMaxVertexInfluences::Ptr ID3DXSkinInfo -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetMinBoneInfluence"
+  c_ID3DXSkinInfo_GetMinBoneInfluence::Ptr ID3DXSkinInfo -> IO FLOAT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetNumBoneInfluences"
+  c_ID3DXSkinInfo_GetNumBoneInfluences::Ptr ID3DXSkinInfo -> DWORD -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_GetNumBones"
+  c_ID3DXSkinInfo_GetNumBones::Ptr ID3DXSkinInfo -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_Remap"
+  c_ID3DXSkinInfo_Remap::Ptr ID3DXSkinInfo -> DWORD -> Ptr DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetBoneInfluence"
+  c_ID3DXSkinInfo_SetBoneInfluence::Ptr ID3DXSkinInfo -> DWORD -> DWORD -> Ptr DWORD -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetBoneName"
+  c_ID3DXSkinInfo_SetBoneName::Ptr ID3DXSkinInfo -> DWORD -> LPCSTR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetBoneOffsetMatrix"
+  c_ID3DXSkinInfo_SetBoneOffsetMatrix::Ptr ID3DXSkinInfo -> DWORD -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetBoneVertexInfluence"
+  c_ID3DXSkinInfo_SetBoneVertexInfluence::Ptr ID3DXSkinInfo -> DWORD -> DWORD -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetDeclaration"
+  c_ID3DXSkinInfo_SetDeclaration::Ptr ID3DXSkinInfo -> Ptr D3DVERTEXELEMENT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetFVF"
+  c_ID3DXSkinInfo_SetFVF::Ptr ID3DXSkinInfo -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_SetMinBoneInfluence"
+  c_ID3DXSkinInfo_SetMinBoneInfluence::Ptr ID3DXSkinInfo -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSkinInfo_UpdateSkinnedMesh"
+  c_ID3DXSkinInfo_UpdateSkinnedMesh::Ptr ID3DXSkinInfo -> Ptr D3DXMATRIX -> Ptr D3DXMATRIX -> LPCVOID -> PVOID -> IO HRESULT
+type LPID3DXSkinInfo = Ptr ID3DXSkinInfo
+type LPD3DXSKININFO = Ptr ID3DXSkinInfo
+
+
+data ID3DXSPMesh = ID3DXSPMesh deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_CloneMesh"
+  c_ID3DXSPMesh_CloneMesh::Ptr ID3DXSPMesh -> DWORD -> Ptr D3DVERTEXELEMENT9 -> LPDIRECT3DDEVICE9 -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_CloneMeshFVF"
+  c_ID3DXSPMesh_CloneMeshFVF::Ptr ID3DXSPMesh -> DWORD -> DWORD -> LPDIRECT3DDEVICE9 -> Ptr DWORD -> Ptr DWORD -> Ptr LPD3DXMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_ClonePMesh"
+  c_ID3DXSPMesh_ClonePMesh::Ptr ID3DXSPMesh -> DWORD -> Ptr D3DVERTEXELEMENT9 -> LPDIRECT3DDEVICE9 -> Ptr DWORD -> Ptr FLOAT -> Ptr LPD3DXPMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_ClonePMeshFVF"
+  c_ID3DXSPMesh_ClonePMeshFVF::Ptr ID3DXSPMesh -> DWORD -> DWORD -> LPDIRECT3DDEVICE9 -> Ptr DWORD -> Ptr FLOAT -> Ptr LPD3DXPMESH -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetDeclaration"
+  c_ID3DXSPMesh_GetDeclaration::Ptr ID3DXSPMesh -> Ptr D3DVERTEXELEMENT9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetDevice"
+  c_ID3DXSPMesh_GetDevice::Ptr ID3DXSPMesh -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetFVF"
+  c_ID3DXSPMesh_GetFVF::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetMaxFaces"
+  c_ID3DXSPMesh_GetMaxFaces::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetMaxVertices"
+  c_ID3DXSPMesh_GetMaxVertices::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetNumFaces"
+  c_ID3DXSPMesh_GetNumFaces::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetNumVertices"
+  c_ID3DXSPMesh_GetNumVertices::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetOptions"
+  c_ID3DXSPMesh_GetOptions::Ptr ID3DXSPMesh -> IO DWORD
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetVertexAttributeWeights"
+  c_ID3DXSPMesh_GetVertexAttributeWeights::Ptr ID3DXSPMesh -> LPD3DXATTRIBUTEWEIGHTS -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_GetVertexWeights"
+  c_ID3DXSPMesh_GetVertexWeights::Ptr ID3DXSPMesh -> Ptr FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_ReduceFaces"
+  c_ID3DXSPMesh_ReduceFaces::Ptr ID3DXSPMesh -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSPMesh_ReduceVertices"
+  c_ID3DXSPMesh_ReduceVertices::Ptr ID3DXSPMesh -> DWORD -> IO HRESULT
+type LPID3DXSPMesh = Ptr ID3DXSPMesh
+type LPD3DXSPMESH = Ptr ID3DXSPMesh
+
+
+data ID3DXSprite = ID3DXSprite deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXSprite_Begin"
+  c_ID3DXSprite_Begin::Ptr ID3DXSprite -> DWORD -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_Draw"
+  c_ID3DXSprite_Draw::Ptr ID3DXSprite -> LPDIRECT3DTEXTURE9 -> Ptr RECT -> Ptr D3DXVECTOR3 -> Ptr D3DXVECTOR3 -> D3DCOLOR -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_End"
+  c_ID3DXSprite_End::Ptr ID3DXSprite -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_GetDevice"
+  c_ID3DXSprite_GetDevice::Ptr ID3DXSprite -> Ptr LPDIRECT3DDEVICE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_GetTransform"
+  c_ID3DXSprite_GetTransform::Ptr ID3DXSprite -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_OnLostDevice"
+  c_ID3DXSprite_OnLostDevice::Ptr ID3DXSprite -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_OnResetDevice"
+  c_ID3DXSprite_OnResetDevice::Ptr ID3DXSprite -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_SetTransform"
+  c_ID3DXSprite_SetTransform::Ptr ID3DXSprite -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_SetWorldViewLH"
+  c_ID3DXSprite_SetWorldViewLH::Ptr ID3DXSprite -> Ptr D3DXMATRIX -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXSprite_SetWorldViewRH"
+  c_ID3DXSprite_SetWorldViewRH::Ptr ID3DXSprite -> Ptr D3DXMATRIX -> Ptr D3DXMATRIX -> IO HRESULT
+type LPID3DXSprite = Ptr ID3DXSprite
+type LPD3DXSPRITE = Ptr ID3DXSprite
+
+
+data ID3DXTextureGutterHelper = ID3DXTextureGutterHelper deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_ApplyGuttersFloat"
+  c_ID3DXTextureGutterHelper_ApplyGuttersFloat::Ptr ID3DXTextureGutterHelper -> Ptr FLOAT -> Ptr UINT -> Ptr UINT -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_ApplyGuttersPRT"
+  c_ID3DXTextureGutterHelper_ApplyGuttersPRT::Ptr ID3DXTextureGutterHelper -> LPD3DXPRTBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_ApplyGuttersTex"
+  c_ID3DXTextureGutterHelper_ApplyGuttersTex::Ptr ID3DXTextureGutterHelper -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetBaryMap"
+  c_ID3DXTextureGutterHelper_GetBaryMap::Ptr ID3DXTextureGutterHelper -> Ptr D3DXVECTOR2 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetFaceMap"
+  c_ID3DXTextureGutterHelper_GetFaceMap::Ptr ID3DXTextureGutterHelper -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetGutterMap"
+  c_ID3DXTextureGutterHelper_GetGutterMap::Ptr ID3DXTextureGutterHelper -> Ptr BYTE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetHeight"
+  c_ID3DXTextureGutterHelper_GetHeight::Ptr ID3DXTextureGutterHelper -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetTexelMap"
+  c_ID3DXTextureGutterHelper_GetTexelMap::Ptr ID3DXTextureGutterHelper -> Ptr D3DXVECTOR2 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_GetWidth"
+  c_ID3DXTextureGutterHelper_GetWidth::Ptr ID3DXTextureGutterHelper -> IO UINT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_ResampleTex"
+  c_ID3DXTextureGutterHelper_ResampleTex::Ptr ID3DXTextureGutterHelper -> LPDIRECT3DTEXTURE9 -> LPD3DXMESH -> D3DDECLUSAGE -> UINT -> LPDIRECT3DTEXTURE9 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_SetBaryMap"
+  c_ID3DXTextureGutterHelper_SetBaryMap::Ptr ID3DXTextureGutterHelper -> Ptr D3DXVECTOR2 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_SetFaceMap"
+  c_ID3DXTextureGutterHelper_SetFaceMap::Ptr ID3DXTextureGutterHelper -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_SetGutterMap"
+  c_ID3DXTextureGutterHelper_SetGutterMap::Ptr ID3DXTextureGutterHelper -> Ptr BYTE -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureGutterHelper_SetTexelMap"
+  c_ID3DXTextureGutterHelper_SetTexelMap::Ptr ID3DXTextureGutterHelper -> Ptr D3DXVECTOR2 -> IO HRESULT
+type LPID3DXTextureGutterHelper = Ptr ID3DXTextureGutterHelper
+type LPD3DXTEXTUREGUTTERHELPER = Ptr ID3DXTextureGutterHelper
+
+
+data ID3DXTextureShader = ID3DXTextureShader deriving (Show)
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetConstant"
+  c_ID3DXTextureShader_GetConstant::Ptr ID3DXTextureShader -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetConstantBuffer"
+  c_ID3DXTextureShader_GetConstantBuffer::Ptr ID3DXTextureShader -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetConstantByName"
+  c_ID3DXTextureShader_GetConstantByName::Ptr ID3DXTextureShader -> D3DXHANDLE -> LPCSTR -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetConstantDesc"
+  c_ID3DXTextureShader_GetConstantDesc::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXCONSTANT_DESC -> Ptr UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetConstantElement"
+  c_ID3DXTextureShader_GetConstantElement::Ptr ID3DXTextureShader -> D3DXHANDLE -> UINT -> IO D3DXHANDLE
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetDesc"
+  c_ID3DXTextureShader_GetDesc::Ptr ID3DXTextureShader -> Ptr D3DXCONSTANTTABLE_DESC -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_GetFunction"
+  c_ID3DXTextureShader_GetFunction::Ptr ID3DXTextureShader -> Ptr LPD3DXBUFFER -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetBool"
+  c_ID3DXTextureShader_SetBool::Ptr ID3DXTextureShader -> D3DXHANDLE -> BOOL -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetBoolArray"
+  c_ID3DXTextureShader_SetBoolArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr BOOL -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetDefaults"
+  c_ID3DXTextureShader_SetDefaults::Ptr ID3DXTextureShader -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetFloat"
+  c_ID3DXTextureShader_SetFloat::Ptr ID3DXTextureShader -> D3DXHANDLE -> FLOAT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetFloatArray"
+  c_ID3DXTextureShader_SetFloatArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr FLOAT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetInt"
+  c_ID3DXTextureShader_SetInt::Ptr ID3DXTextureShader -> D3DXHANDLE -> INT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetIntArray"
+  c_ID3DXTextureShader_SetIntArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr INT -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrix"
+  c_ID3DXTextureShader_SetMatrix::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrixArray"
+  c_ID3DXTextureShader_SetMatrixArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrixPointerArray"
+  c_ID3DXTextureShader_SetMatrixPointerArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrixTranspose"
+  c_ID3DXTextureShader_SetMatrixTranspose::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXMATRIX -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrixTransposeArray"
+  c_ID3DXTextureShader_SetMatrixTransposeArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXMATRIX -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetMatrixTransposePointerArray"
+  c_ID3DXTextureShader_SetMatrixTransposePointerArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr (Ptr D3DXMATRIX) -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetValue"
+  c_ID3DXTextureShader_SetValue::Ptr ID3DXTextureShader -> D3DXHANDLE -> LPCVOID -> UINT -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetVector"
+  c_ID3DXTextureShader_SetVector::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> IO HRESULT
+foreign import ccall unsafe "fake.h c_ID3DXTextureShader_SetVectorArray"
+  c_ID3DXTextureShader_SetVectorArray::Ptr ID3DXTextureShader -> D3DXHANDLE -> Ptr D3DXVECTOR4 -> UINT -> IO HRESULT
+type LPID3DXTextureShader = Ptr ID3DXTextureShader
+type LPD3DXTEXTURESHADER = Ptr ID3DXTextureShader
+
+
+type D3DXCALLBACK_SEARCH_FLAGS = DWORD
+d3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION::D3DXCALLBACK_SEARCH_FLAGS
+d3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION=2
+d3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION::D3DXCALLBACK_SEARCH_FLAGS
+d3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION=1
+
+type D3DXCLEANTYPE = DWORD
+d3DXCLEAN_BOWTIES::D3DXCLEANTYPE
+d3DXCLEAN_BOWTIES=2
+d3DXCLEAN_BACKFACING::D3DXCLEANTYPE
+d3DXCLEAN_BACKFACING=1
+
+type D3DXCOMPRESSION_FLAGS = DWORD
+d3DXCOMPRESS_STRONG::D3DXCOMPRESSION_FLAGS
+d3DXCOMPRESS_STRONG=1
+d3DXCOMPRESS_DEFAULT::D3DXCOMPRESSION_FLAGS
+d3DXCOMPRESS_DEFAULT=0
+
+type D3DXEFFECTDEFAULTTYPE = DWORD
+d3DXEDT_DWORD::D3DXEFFECTDEFAULTTYPE
+d3DXEDT_DWORD=3
+d3DXEDT_FLOATS::D3DXEFFECTDEFAULTTYPE
+d3DXEDT_FLOATS=2
+d3DXEDT_STRING::D3DXEFFECTDEFAULTTYPE
+d3DXEDT_STRING=1
+
+type D3DXEVENT_TYPE = DWORD
+d3DXEVENT_PRIORITYBLEND::D3DXEVENT_TYPE
+d3DXEVENT_PRIORITYBLEND=4
+d3DXEVENT_TRACKENABLE::D3DXEVENT_TYPE
+d3DXEVENT_TRACKENABLE=3
+d3DXEVENT_TRACKPOSITION::D3DXEVENT_TYPE
+d3DXEVENT_TRACKPOSITION=2
+d3DXEVENT_TRACKWEIGHT::D3DXEVENT_TYPE
+d3DXEVENT_TRACKWEIGHT=1
+d3DXEVENT_TRACKSPEED::D3DXEVENT_TYPE
+d3DXEVENT_TRACKSPEED=0
+
+type D3DXIMAGE_FILEFORMAT = DWORD
+d3DXIFF_PFM::D3DXIMAGE_FILEFORMAT
+d3DXIFF_PFM=8
+d3DXIFF_HDR::D3DXIMAGE_FILEFORMAT
+d3DXIFF_HDR=7
+d3DXIFF_DIB::D3DXIMAGE_FILEFORMAT
+d3DXIFF_DIB=6
+d3DXIFF_PPM::D3DXIMAGE_FILEFORMAT
+d3DXIFF_PPM=5
+d3DXIFF_DDS::D3DXIMAGE_FILEFORMAT
+d3DXIFF_DDS=4
+d3DXIFF_PNG::D3DXIMAGE_FILEFORMAT
+d3DXIFF_PNG=3
+d3DXIFF_TGA::D3DXIMAGE_FILEFORMAT
+d3DXIFF_TGA=2
+d3DXIFF_JPG::D3DXIMAGE_FILEFORMAT
+d3DXIFF_JPG=1
+d3DXIFF_BMP::D3DXIMAGE_FILEFORMAT
+d3DXIFF_BMP=0
+
+type D3DXIMT_FLAGS = DWORD
+d3DXIMT_WRAP_UV::D3DXIMT_FLAGS
+d3DXIMT_WRAP_UV=3
+d3DXIMT_WRAP_V::D3DXIMT_FLAGS
+d3DXIMT_WRAP_V=2
+d3DXIMT_WRAP_U::D3DXIMT_FLAGS
+d3DXIMT_WRAP_U=1
+
+type D3DXINCLUDE_TYPE = DWORD
+d3DXINC_SYSTEM::D3DXINCLUDE_TYPE
+d3DXINC_SYSTEM=1
+d3DXINC_LOCAL::D3DXINCLUDE_TYPE
+d3DXINC_LOCAL=0
+
+type D3DXMESH = DWORD
+d3DXMESH_SOFTWAREPROCESSING::D3DXMESH
+d3DXMESH_SOFTWAREPROCESSING=0x18000
+d3DXMESH_DYNAMIC::D3DXMESH
+d3DXMESH_DYNAMIC=0x880
+d3DXMESH_WRITEONLY::D3DXMESH
+d3DXMESH_WRITEONLY=0x440
+d3DXMESH_MANAGED::D3DXMESH
+d3DXMESH_MANAGED=0x220
+d3DXMESH_SYSTEMMEM::D3DXMESH
+d3DXMESH_SYSTEMMEM=0x110
+d3DXMESH_USEHWONLY::D3DXMESH
+d3DXMESH_USEHWONLY=0x2000
+d3DXMESH_VB_SHARE::D3DXMESH
+d3DXMESH_VB_SHARE=0x1000
+d3DXMESH_IB_SOFTWAREPROCESSING::D3DXMESH
+d3DXMESH_IB_SOFTWAREPROCESSING=0x10000
+d3DXMESH_IB_DYNAMIC::D3DXMESH
+d3DXMESH_IB_DYNAMIC=0x800
+d3DXMESH_IB_WRITEONLY::D3DXMESH
+d3DXMESH_IB_WRITEONLY=0x400
+d3DXMESH_IB_MANAGED::D3DXMESH
+d3DXMESH_IB_MANAGED=0x200
+d3DXMESH_IB_SYSTEMMEM::D3DXMESH
+d3DXMESH_IB_SYSTEMMEM=0x100
+d3DXMESH_VB_SOFTWAREPROCESSING::D3DXMESH
+d3DXMESH_VB_SOFTWAREPROCESSING=0x8000
+d3DXMESH_VB_DYNAMIC::D3DXMESH
+d3DXMESH_VB_DYNAMIC=0x080
+d3DXMESH_VB_WRITEONLY::D3DXMESH
+d3DXMESH_VB_WRITEONLY=0x040
+d3DXMESH_VB_MANAGED::D3DXMESH
+d3DXMESH_VB_MANAGED=0x020
+d3DXMESH_VB_SYSTEMMEM::D3DXMESH
+d3DXMESH_VB_SYSTEMMEM=0x010
+d3DXMESH_NPATCHES::D3DXMESH
+d3DXMESH_NPATCHES=0x4000
+d3DXMESH_RTPATCHES::D3DXMESH
+d3DXMESH_RTPATCHES=0x008
+d3DXMESH_POINTS::D3DXMESH
+d3DXMESH_POINTS=0x004
+d3DXMESH_DONOTCLIP::D3DXMESH
+d3DXMESH_DONOTCLIP=0x002
+d3DXMESH_32BIT::D3DXMESH
+d3DXMESH_32BIT=0x001
+
+type D3DXMESHDATATYPE = DWORD
+d3DXMESHTYPE_PATCHMESH::D3DXMESHDATATYPE
+d3DXMESHTYPE_PATCHMESH=0x003
+d3DXMESHTYPE_PMESH::D3DXMESHDATATYPE
+d3DXMESHTYPE_PMESH=0x002
+d3DXMESHTYPE_MESH::D3DXMESHDATATYPE
+d3DXMESHTYPE_MESH=0x001
+
+type D3DXMESHOPT = DWORD
+d3DXMESHOPT_DEVICEINDEPENDENT::D3DXMESHOPT
+d3DXMESHOPT_DEVICEINDEPENDENT=0x40000000
+d3DXMESHOPT_DONOTSPLIT::D3DXMESHOPT
+d3DXMESHOPT_DONOTSPLIT=0x20000000
+d3DXMESHOPT_IGNOREVERTS::D3DXMESHOPT
+d3DXMESHOPT_IGNOREVERTS=0x10000000
+d3DXMESHOPT_STRIPREORDER::D3DXMESHOPT
+d3DXMESHOPT_STRIPREORDER=0x08000000
+d3DXMESHOPT_VERTEXCACHE::D3DXMESHOPT
+d3DXMESHOPT_VERTEXCACHE=0x04000000
+d3DXMESHOPT_ATTRSORT::D3DXMESHOPT
+d3DXMESHOPT_ATTRSORT=0x02000000
+d3DXMESHOPT_COMPACT::D3DXMESHOPT
+d3DXMESHOPT_COMPACT=0x01000000
+
+type D3DXMESHSIMP = DWORD
+d3DXMESHSIMP_FACE::D3DXMESHSIMP
+d3DXMESHSIMP_FACE=2
+d3DXMESHSIMP_VERTEX::D3DXMESHSIMP
+d3DXMESHSIMP_VERTEX=1
+
+type D3DXPARAMETER_CLASS = DWORD
+d3DXPC_STRUCT::D3DXPARAMETER_CLASS
+d3DXPC_STRUCT=5
+d3DXPC_OBJECT::D3DXPARAMETER_CLASS
+d3DXPC_OBJECT=4
+d3DXPC_MATRIX_COLUMNS::D3DXPARAMETER_CLASS
+d3DXPC_MATRIX_COLUMNS=3
+d3DXPC_MATRIX_ROWS::D3DXPARAMETER_CLASS
+d3DXPC_MATRIX_ROWS=2
+d3DXPC_VECTOR::D3DXPARAMETER_CLASS
+d3DXPC_VECTOR=1
+d3DXPC_SCALAR::D3DXPARAMETER_CLASS
+d3DXPC_SCALAR=0
+
+type D3DXPARAMETER_TYPE = DWORD
+d3DXPT_VERTEXFRAGMENT::D3DXPARAMETER_TYPE
+d3DXPT_VERTEXFRAGMENT=18
+d3DXPT_PIXELFRAGMENT::D3DXPARAMETER_TYPE
+d3DXPT_PIXELFRAGMENT=17
+d3DXPT_VERTEXSHADER::D3DXPARAMETER_TYPE
+d3DXPT_VERTEXSHADER=16
+d3DXPT_PIXELSHADER::D3DXPARAMETER_TYPE
+d3DXPT_PIXELSHADER=15
+d3DXPT_SAMPLERCUBE::D3DXPARAMETER_TYPE
+d3DXPT_SAMPLERCUBE=14
+d3DXPT_SAMPLER3D::D3DXPARAMETER_TYPE
+d3DXPT_SAMPLER3D=13
+d3DXPT_SAMPLER2D::D3DXPARAMETER_TYPE
+d3DXPT_SAMPLER2D=12
+d3DXPT_SAMPLER1D::D3DXPARAMETER_TYPE
+d3DXPT_SAMPLER1D=11
+d3DXPT_SAMPLER::D3DXPARAMETER_TYPE
+d3DXPT_SAMPLER=10
+d3DXPT_TEXTURECUBE::D3DXPARAMETER_TYPE
+d3DXPT_TEXTURECUBE=9
+d3DXPT_TEXTURE3D::D3DXPARAMETER_TYPE
+d3DXPT_TEXTURE3D=8
+d3DXPT_TEXTURE2D::D3DXPARAMETER_TYPE
+d3DXPT_TEXTURE2D=7
+d3DXPT_TEXTURE1D::D3DXPARAMETER_TYPE
+d3DXPT_TEXTURE1D=6
+d3DXPT_TEXTURE::D3DXPARAMETER_TYPE
+d3DXPT_TEXTURE=5
+d3DXPT_STRING::D3DXPARAMETER_TYPE
+d3DXPT_STRING=4
+d3DXPT_FLOAT::D3DXPARAMETER_TYPE
+d3DXPT_FLOAT=3
+d3DXPT_INT::D3DXPARAMETER_TYPE
+d3DXPT_INT=2
+d3DXPT_BOOL::D3DXPARAMETER_TYPE
+d3DXPT_BOOL=1
+d3DXPT_VOID::D3DXPARAMETER_TYPE
+d3DXPT_VOID=0
+
+type D3DXPATCHMESH = DWORD
+d3DXPATCHMESH_DEFAULT::D3DXPATCHMESH
+d3DXPATCHMESH_DEFAULT=0
+
+type D3DXPATCHMESHTYPE = DWORD
+d3DXPATCHMESH_NPATCH::D3DXPATCHMESHTYPE
+d3DXPATCHMESH_NPATCH=0x003
+d3DXPATCHMESH_TRI::D3DXPATCHMESHTYPE
+d3DXPATCHMESH_TRI=0x002
+d3DXPATCHMESH_RECT::D3DXPATCHMESHTYPE
+d3DXPATCHMESH_RECT=0x001
+
+type D3DXPLAYBACK_TYPE = DWORD
+d3DXPLAY_PINGPONG::D3DXPLAYBACK_TYPE
+d3DXPLAY_PINGPONG=2
+d3DXPLAY_ONCE::D3DXPLAYBACK_TYPE
+d3DXPLAY_ONCE=1
+d3DXPLAY_LOOP::D3DXPLAYBACK_TYPE
+d3DXPLAY_LOOP=0
+
+type D3DXPRIORITY_TYPE = DWORD
+d3DXPRIORITY_HIGH::D3DXPRIORITY_TYPE
+d3DXPRIORITY_HIGH=1
+d3DXPRIORITY_LOW::D3DXPRIORITY_TYPE
+d3DXPRIORITY_LOW=0
+
+type D3DXREGISTER_SET = DWORD
+d3DXRS_SAMPLER::D3DXREGISTER_SET
+d3DXRS_SAMPLER=3
+d3DXRS_FLOAT4::D3DXREGISTER_SET
+d3DXRS_FLOAT4=2
+d3DXRS_INT4::D3DXREGISTER_SET
+d3DXRS_INT4=1
+d3DXRS_BOOL::D3DXREGISTER_SET
+d3DXRS_BOOL=0
+
+type D3DXSHCOMPRESSQUALITYTYPE = DWORD
+d3DXSHCQUAL_SLOWHIGHQUALITY::D3DXSHCOMPRESSQUALITYTYPE
+d3DXSHCQUAL_SLOWHIGHQUALITY=2
+d3DXSHCQUAL_FASTLOWQUALITY::D3DXSHCOMPRESSQUALITYTYPE
+d3DXSHCQUAL_FASTLOWQUALITY=1
+d3DXSHCQUAL_UNCOMPRESSED::D3DXSHCOMPRESSQUALITYTYPE
+d3DXSHCQUAL_UNCOMPRESSED=1
+
+type D3DXSHGPUSIMOPT = DWORD
+d3DXSHGPUSIMOPT_HIGHQUALITY::D3DXSHGPUSIMOPT
+d3DXSHGPUSIMOPT_HIGHQUALITY=4
+d3DXSHGPUSIMOPT_SHADOWRES2048::D3DXSHGPUSIMOPT
+d3DXSHGPUSIMOPT_SHADOWRES2048=3
+d3DXSHGPUSIMOPT_SHADOWRES1024::D3DXSHGPUSIMOPT
+d3DXSHGPUSIMOPT_SHADOWRES1024=2
+d3DXSHGPUSIMOPT_SHADOWRES512::D3DXSHGPUSIMOPT
+d3DXSHGPUSIMOPT_SHADOWRES512=0
+d3DXSHGPUSIMOPT_SHADOWRES256::D3DXSHGPUSIMOPT
+d3DXSHGPUSIMOPT_SHADOWRES256=1
+
+type D3DXTANGENT = DWORD
+d3DXTANGENT_GENERATE_IN_PLACE::D3DXTANGENT
+d3DXTANGENT_GENERATE_IN_PLACE=0x0400
+d3DXTANGENT_CALCULATE_NORMALS::D3DXTANGENT
+d3DXTANGENT_CALCULATE_NORMALS=0x0200
+d3DXTANGENT_WIND_CW::D3DXTANGENT
+d3DXTANGENT_WIND_CW=0x0100
+d3DXTANGENT_WEIGHT_EQUAL::D3DXTANGENT
+d3DXTANGENT_WEIGHT_EQUAL=0x080
+d3DXTANGENT_WEIGHT_BY_AREA::D3DXTANGENT
+d3DXTANGENT_WEIGHT_BY_AREA=0x040
+d3DXTANGENT_ORTHOGONALIZE_FROM_U::D3DXTANGENT
+d3DXTANGENT_ORTHOGONALIZE_FROM_U=0x020
+d3DXTANGENT_ORTHOGONALIZE_FROM_V::D3DXTANGENT
+d3DXTANGENT_ORTHOGONALIZE_FROM_V=0x010
+d3DXTANGENT_DONT_ORTHOGONALIZE::D3DXTANGENT
+d3DXTANGENT_DONT_ORTHOGONALIZE=0x08
+d3DXTANGENT_DONT_NORMALIZE_PARTIALS::D3DXTANGENT
+d3DXTANGENT_DONT_NORMALIZE_PARTIALS=0x04
+d3DXTANGENT_WRAP_UV::D3DXTANGENT
+d3DXTANGENT_WRAP_UV=0x03
+d3DXTANGENT_WRAP_V::D3DXTANGENT
+d3DXTANGENT_WRAP_V=0x02
+d3DXTANGENT_WRAP_U::D3DXTANGENT
+d3DXTANGENT_WRAP_U=0x01
+
+type D3DXTRANSITION_TYPE = DWORD
+d3DXTRANSITION_EASEINEASEOUT::D3DXTRANSITION_TYPE
+d3DXTRANSITION_EASEINEASEOUT=0x001
+d3DXTRANSITION_LINEAR::D3DXTRANSITION_TYPE
+d3DXTRANSITION_LINEAR=0x000
+
+type D3DXWeldEpsilonsFLAGS = DWORD
+d3DXWeldEpsilons_DONOTSPLIT::D3DXWeldEpsilonsFLAGS
+d3DXWeldEpsilons_DONOTSPLIT=8
+d3DXWeldEpsilons_DONOTREMOVEVERTICES::D3DXWeldEpsilonsFLAGS
+d3DXWeldEpsilons_DONOTREMOVEVERTICES=4
+d3DXWeldEpsilons_WELDPARTIALMATCHES::D3DXWeldEpsilonsFLAGS
+d3DXWeldEpsilons_WELDPARTIALMATCHES=2
+d3DXWeldEpsilons_WELDALL::D3DXWeldEpsilonsFLAGS
+d3DXWeldEpsilons_WELDALL=1
+
diff --git a/gen/extract-d3dx.hs b/gen/extract-d3dx.hs
new file mode 100644
--- /dev/null
+++ b/gen/extract-d3dx.hs
@@ -0,0 +1,185 @@
+module Main
+where
+import Parser
+import System.Environment
+
+---------------------------------------------------------------------------
+-- Main
+
+main = do
+    (path:_) <- getArgs
+    e <- mapM (readEnum path) d3dx_enums
+    i <- mapM (readInterface path) d3dx_interfaces
+    s <- mapM (readStruct path) d3dx_structures
+
+    writeFile "d3dx_c.h" $ concat [
+        concatMap c_def_if i
+        ]
+    writeFile "d3dx_h.h" $ concat [
+        concatMap h_def_s s,
+        concatMap h_def_i i,
+        concatMap (h_def_e enum_types) e
+        ]
+    return ()
+
+
+enum_types = [
+    ("D3DDECLTYPE", "BYTE"),
+    ("D3DDECLMETHOD", "BYTE"),
+    ("D3DDECLUSAGE", "BYTE")
+    ]
+
+
+d3dx_enums = [
+    "D3DXCALLBACK_SEARCH_FLAGS",
+    "D3DXCLEANTYPE",
+    "D3DXCOMPRESSION_FLAGS",
+    "D3DXEFFECTDEFAULTTYPE",
+    --"D3DXERR",
+    "D3DXEVENT_TYPE",
+    "D3DXIMAGE_FILEFORMAT",
+    "D3DXIMT_FLAGS",
+    "D3DXINCLUDE_TYPE",
+    "D3DXMESH",
+    "D3DXMESHDATATYPE",
+    "D3DXMESHOPT",
+    "D3DXMESHSIMP",
+    "D3DXPARAMETER_CLASS",
+    "D3DXPARAMETER_TYPE",
+    "D3DXPATCHMESH",
+    "D3DXPATCHMESHTYPE",
+    "D3DXPLAYBACK_TYPE",
+    "D3DXPRIORITY_TYPE",
+    "D3DXREGISTER_SET",
+    "D3DXSHCOMPRESSQUALITYTYPE",
+    "D3DXSHGPUSIMOPT",
+    "D3DXTANGENT",
+    "D3DXTRANSITION_TYPE",
+    "D3DXWeldEpsilonsFLAGS"
+    --"MAX_FVF_DECL_SIZE"
+    ]
+
+
+d3dx_interfaces = [
+    ("ID3DXAllocateHierarchy"  ,"IUnknown",             id),
+    ("ID3DXAnimationCallbackHandler"  ,"IUnknown",             id),
+    ("ID3DXAnimationController"  ,"IUnknown",             id),
+    ("ID3DXAnimationSet"  ,"IUnknown",             id),
+    ("ID3DXBaseEffect"  ,"IUnknown",             fix_base_eff),
+    ("ID3DXBaseMesh"  ,"IUnknown",             id),
+    ("ID3DXBuffer"  ,"IUnknown",             id),
+    ("ID3DXCompressedAnimationSet"  ,"IUnknown",             id),
+    ("ID3DXConstantTable"  ,"IUnknown",             id),
+    ("ID3DXEffect"  ,"IUnknown",             id),
+    ("ID3DXEffectCompiler"  ,"IUnknown",             id),
+    --("ID3DXEffectPool"  ,"IUnknown",             id),
+    ("ID3DXEffectStateManager"  ,"IUnknown",             id),
+    ("ID3DXFont"  ,"IUnknown",             fix_font),
+    ("ID3DXFile", "IUnknown",             id),
+    ("ID3DXFileData", "IUnknown",             id),
+    ("ID3DXFileEnumObject", "IUnknown",             id),
+    ("ID3DXFileSaveData", "IUnknown",             id),
+    ("ID3DXFileSaveObject", "IUnknown",             fix_file_so),
+    ("ID3DXFragmentLinker"  ,"IUnknown",             id),
+    ("ID3DXInclude"  ,"IUnknown",             id),
+    ("ID3DXKeyframedAnimationSet"  ,"IUnknown",             id),
+    ("ID3DXLine"  ,"IUnknown",             id),
+    --("ID3DXLoadUserData"  ,"IUnknown",             id),  --user callbacks, but causes errors
+    --("ID3DXMATRIXStack"  ,"IUnknown",             id),
+    ("ID3DXMesh"  ,"IUnknown",             id),
+    ("ID3DXPatchMesh"  ,"IUnknown",             id),
+    ("ID3DXPMesh"  ,"IUnknown",             id),
+    ("ID3DXPRTBuffer"  ,"IUnknown",             id),
+    ("ID3DXPRTCompBuffer"  ,"IUnknown",             id),
+    ("ID3DXPRTEngine"  ,"IUnknown",             id),
+    ("ID3DXRenderToEnvMap"  ,"IUnknown",             id),
+    ("ID3DXRenderToSurface"  ,"IUnknown",             id),
+    -- ("ID3DXSaveUserData"  ,"IUnknown",             id),  -- user callbacks, errors
+    ("ID3DXSkinInfo"  ,"IUnknown",             id),
+    ("ID3DXSPMesh"  ,"IUnknown",             id),
+    ("ID3DXSprite"  ,"IUnknown",             id),
+    ("ID3DXTextureGutterHelper"  ,"IUnknown",             id),
+    ("ID3DXTextureShader"  ,"IUnknown",             id)
+    ]
+
+
+fix_file_so :: (String, String, [(String,Type,[(String,Type)])]) -> (String, String, [(String,Type,[(String,Type)])])
+fix_file_so (n,b,f) = (n,b,funs f)
+    where 
+        funs [] = []
+        funs (x:xs) = (fun x):(funs xs)
+        fun (f,t,p)
+            | f=="GetFile"       = 
+                ("GetFile", Base "HRESULT", [("ppFile", Pointer $ Pointer $ Base "ID3DXFile")])
+            | otherwise             = (f,t,p)
+
+fix_base_eff :: (String, String, [(String,Type,[(String,Type)])]) -> (String, String, [(String,Type,[(String,Type)])])
+fix_base_eff  (n,b,f) = (n,b,funs f)
+    where 
+        funs [] = []
+        funs (x:xs) = (fun x):(funs xs)
+        fun (f,t,p)
+            | f=="GetValue"       = 
+                ("GetValue", Base "HRESULT", [
+                    ("hParam1", Base "D3DXHANDLE"), -- ("hParam2", Base "D3DXHANDLE"),
+                    ("pData", Pointer $ Base "void"), ("Bytes", Base "UINT")])
+            | otherwise             = (f,t,p)
+
+
+fix_font :: (String, String, [(String,Type,[(String,Type)])]) -> (String, String, [(String,Type,[(String,Type)])])
+fix_font (n,b,f) = (n,b,funs f)
+    where 
+        funs [] = []
+        funs (x:xs) = (fun x):(funs xs)
+        fun (f,t,p)
+            | f=="GetDesc"          = ("GetDescW",t,p)
+            | f=="PreloadText"      = ("PreloadTextW",t,p)
+            | otherwise             = (f,t,p)
+
+d3dx_structures = [
+    "D3DXATTRIBUTERANGE",
+    "D3DXATTRIBUTEWEIGHTS",
+    "D3DXBONECOMBINATION",
+    "D3DXCOLOR",
+    "D3DXCONSTANT_DESC",
+    "D3DXCONSTANTTABLE_DESC",
+    "D3DXEFFECTDEFAULT",
+    "D3DXEFFECTINSTANCE",
+    "D3DXEFFECT_DESC",
+    "D3DXFLOAT16",
+    "D3DXFONT_DESC",
+    "D3DXFRAGMENT_DESC",
+    "D3DXFRAME",
+    "D3DXFUNCTION_DESC",
+    "D3DXIMAGE_INFO",
+    "D3DXINTERSECTINFO",
+    "D3DXKEY_CALLBACK",
+    "D3DXKEY_QUATERNION",
+    "D3DXKEY_VECTOR3",
+    "D3DXMACRO",
+    "D3DXMATERIAL",
+    --"D3DXMATRIX",
+    --"D3DXMATRIXA16",
+    "D3DXMESHCONTAINER",
+    -- "D3DXMESHDATA",  -- uses union
+    "D3DXPASS_DESC",
+    "D3DXPATCHINFO",
+    "D3DXPLANE",
+    "D3DXQUATERNION",
+    "D3DXRTE_DESC",
+    "D3DXRTS_DESC",
+    "D3DXSEMANTIC",
+    "D3DXSHADER_CONSTANTINFO",
+    "D3DXSHADER_CONSTANTTABLE",
+    "D3DXSHADER_STRUCTMEMBERINFO",
+    "D3DXSHADER_TYPEINFO",
+    "D3DXSHMATERIAL",
+    "D3DXSHPRTSPLITMESHCLUSTERDATA",
+    "D3DXSHPRTSPLITMESHVERTDATA",
+    "D3DXTRACK_DESC",
+    "D3DXTECHNIQUE_DESC",
+    "D3DXVECTOR2",
+    "D3DXVECTOR3",
+    "D3DXVECTOR4"
+    --"D3DXWeldEpsilons"
+    ]
diff --git a/gen/extract-dx.hs b/gen/extract-dx.hs
new file mode 100644
--- /dev/null
+++ b/gen/extract-dx.hs
@@ -0,0 +1,177 @@
+module Main
+where
+import Parser
+import System.Environment
+
+---------------------------------------------------------------------------
+-- Main
+
+main = do
+    (path:_) <- getArgs
+    e <- mapM (readEnum path) d3d_enums
+    i <- mapM (readInterface path) d3d_interfaces
+    s <- mapM (readStruct path) d3d_structures
+    {- putStrLn $
+        concat [
+            "#ifndef HASKELL_DEFS\n",
+            concatMap c_def_e2 e,
+            c_decl s,
+            c_decl3 i,
+            concatMap c_def_i i,
+            "#else\n",
+            concatMap h_def_s s,
+            concatMap h_def_i i,
+            concatMap h_def_e e,
+            "#endif\n\n"]
+    -}
+    writeFile "d3d_c.h" $ concat [
+        concatMap c_def_if i
+        ]
+    writeFile "d3d_h.h" $ concat [
+        concatMap h_def_s s,
+        concatMap h_def_i i,
+        concatMap (h_def_e d3d_enum_types) e
+        ]
+    return ()
+--    where
+--        path = "D:\\source\\dxsdk\\feb2006\\Documentation\\DirectX9\\directx9_c"
+
+d3d_enum_types = [
+    ("D3DDECLTYPE", "BYTE"),
+    ("D3DDECLMETHOD", "BYTE"),
+    ("D3DDECLUSAGE", "BYTE")
+    ]
+    
+d3d_enums = [
+    "D3DBACKBUFFER_TYPE",
+    "D3DBASISTYPE",
+    "D3DBLEND",
+    "D3DBLENDOP",
+    "D3DCMPFUNC",
+    "D3DCUBEMAP_FACES",
+    "D3DCULL",
+    "D3DDEBUGMONITORTOKENS",
+    "D3DDECLMETHOD",
+    "D3DDECLTYPE",
+    "D3DDECLUSAGE",
+    "D3DDEGREETYPE",
+    "D3DDEVTYPE",
+    --"D3DERR",
+    "D3DFILLMODE",
+    "D3DFOGMODE",
+    --"D3DFORMAT",
+    "D3DLIGHTTYPE",
+    "D3DMATERIALCOLORSOURCE",
+    "D3DMULTISAMPLE_TYPE",
+    "D3DPATCHEDGESTYLE",
+    "D3DPOOL",
+    "D3DPRIMITIVETYPE",
+    "D3DQUERYTYPE",
+    "D3DRENDERSTATETYPE",
+    "D3DRESOURCETYPE",
+    --"D3DSAMPLER_TEXTURE_TYPE",
+    "D3DSAMPLERSTATETYPE",
+    "D3DSHADEMODE",
+    "D3DSTATEBLOCKTYPE",
+    "D3DSTENCILOP",
+    "D3DSWAPEFFECT",
+    "D3DTEXTUREADDRESS",
+    "D3DTEXTUREFILTERTYPE",
+    "D3DTEXTUREOP",
+    "D3DTEXTURESTAGESTATETYPE",
+    "D3DTEXTURETRANSFORMFLAGS",
+    "D3DTRANSFORMSTATETYPE",
+    "D3DVERTEXBLENDFLAGS",
+    --"D3DXFERR",
+    "D3DZBUFFERTYPE"
+    ]
+
+d3d_interfaces = [
+    --"ID3DXFile",
+    --"ID3DXFileData",
+    --"ID3DXFileEnumObject",
+    --"ID3DXFileSaveData",
+    --"ID3DXFileSaveObject",
+    ("IDirect3D9",              "IUnknown",             id),
+    ("IDirect3DDevice9",        "IUnknown",             fix_dev9),
+    ("IDirect3DPixelShader9",   "IUnknown",             id),
+    ("IDirect3DQuery9",         "IUnknown",             id),
+    ("IDirect3DStateBlock9",    "IUnknown",             id),
+    ("IDirect3DSwapChain9",     "IUnknown",             id),
+    ("IDirect3DVertexDeclaration9", "IUnknown",         id),
+    ("IDirect3DVertexShader9",  "IUnknown",             id),
+
+    ("IDirect3DResource9",      "IUnknown",             fix_resource9),
+    ("IDirect3DBaseTexture9",   "IDirect3DResource9",   id),
+    ("IDirect3DCubeTexture9",   "IDirect3DBaseTexture9", id),
+    ("IDirect3DVolumeTexture9", "IDirect3DBaseTexture9", id),
+    ("IDirect3DTexture9",       "IDirect3DBaseTexture9", id),
+    ("IDirect3DIndexBuffer9",   "IDirect3DResource9",   id),
+    ("IDirect3DSurface9",       "IDirect3DResource9",   id),
+    ("IDirect3DVertexBuffer9",  "IDirect3DResource9",   id),
+    ("IDirect3DVolume9",        "IDirect3DResource9",   id)
+    ]
+
+fix_resource9 :: (String, String, [(String,Type,[(String,Type)])]) -> (String, String, [(String,Type,[(String,Type)])])
+fix_resource9 (n,b,f) = (n,b,funs f)
+    where 
+        funs [] = []
+        funs (x:xs) = (fun x):(funs xs)
+        fun (f,t,p)
+            | t==(Base "PreLoad")   = ("PreLoad", Base "void", [])
+            | otherwise             = (f,t,p)
+
+
+fix_dev9 :: (String, String, [(String,Type,[(String,Type)])]) -> (String, String, [(String,Type,[(String,Type)])])
+fix_dev9 (n,b,f) = (n,b,funs f)
+    where 
+        funs [] = []
+        funs (x:xs) = (fun x):(funs xs)
+        fun (f,t,p)
+            | f=="GetIndices"       = 
+                ("GetIndices", Base "HRESULT", [("ppIndexData", Pointer $ Pointer $ Base "IDirect3DIndexBuffer9")])
+            | otherwise             = (f,t,p)
+
+d3d_structures = [
+    "D3DADAPTER_IDENTIFIER9",
+    "D3DBOX",
+    "D3DCAPS9",
+    "D3DCLIPSTATUS9",
+    "D3DCOLORVALUE",
+    "D3DDEVICE_CREATION_PARAMETERS",
+    "D3DDEVINFO_D3D9BANDWIDTHTIMINGS",
+    "D3DDEVINFO_D3D9CACHEUTILIZATION",
+    "D3DDEVINFO_D3D9INTERFACETIMINGS",
+    "D3DDEVINFO_D3D9PIPELINETIMINGS",
+    "D3DDEVINFO_D3D9STAGETIMINGS",
+    --"D3DDEVINFO_D3DVERTEXSTATS",
+    "D3DDEVINFO_ResourceManager",
+    "D3DDEVINFO_VCACHE",
+    "D3DDISPLAYMODE",
+    "D3DGAMMARAMP",
+    "D3DINDEXBUFFER_DESC",
+    "D3DLIGHT9",
+    "D3DLOCKED_BOX",
+    "D3DLOCKED_RECT",
+    "D3DMATERIAL9",
+    --"D3DMATRIX",
+    "D3DPRESENT_PARAMETERS",
+    "D3DPSHADERCAPS2_0",
+    "D3DRANGE",
+    "D3DRASTER_STATUS",
+    "D3DRECT",
+    "D3DRECTPATCH_INFO",
+    "D3DRESOURCESTATS",
+    "D3DSURFACE_DESC",
+    "D3DTRIPATCH_INFO",
+    "D3DVECTOR",
+    "D3DVERTEXBUFFER_DESC",
+    "D3DVERTEXELEMENT9",
+    "D3DVIEWPORT9",
+    "D3DVOLUME_DESC",
+    "D3DVSHADERCAPS2_0",
+    --"D3DXF_FILELOADMEMORY",
+    "PALETTEENTRY"
+    --"XFILECOMPRESSEDANIMATIONSET"
+    ]
+
diff --git a/gen/fix_decl.h b/gen/fix_decl.h
new file mode 100644
--- /dev/null
+++ b/gen/fix_decl.h
@@ -0,0 +1,13 @@
+#undef DECLARE_INTERFACE
+#undef const
+#undef CONST
+#define const
+#define CONST
+#undef LPVOID
+#define LPVOID void*
+
+#define DECLARE_INTERFACE(i)                    \
+    interface i { struct i##Vtbl *lpVtbl; };    \
+    typedef struct i##Vtbl i##Vtbl;             \
+    struct i##Vtbl                              \
+   // empty line
diff --git a/gen/fix_decl_x.h b/gen/fix_decl_x.h
new file mode 100644
--- /dev/null
+++ b/gen/fix_decl_x.h
@@ -0,0 +1,9 @@
+#define FIX_DECLARE(a) typedef struct a a;
+
+//FIX_DECLARE(LPD3DXMESH)
+FIX_DECLARE(ID3DXSkinInfo)
+FIX_DECLARE(ID3DXPatchMesh)
+FIX_DECLARE(ID3DXSPMesh)
+FIX_DECLARE(ID3DXPMesh)
+FIX_DECLARE(ID3DXMesh)
+FIX_DECLARE(ID3DXBaseMesh)
