]> git.cworth.org Git - apitrace/blobdiff - winapi.py
Bundle Snappy source code.
[apitrace] / winapi.py
index eec3fde014470244d7f44d2aedca964c3d6ad7df..ee9c91f94b0ecbcc96d925eecd3d44eee6f3e9f0 100644 (file)
--- a/winapi.py
+++ b/winapi.py
@@ -25,7 +25,7 @@
 
 """Win32 API type description."""
 
-from base import *
+from stdapi import *
 
 SHORT = Alias("SHORT", Short)
 USHORT = Alias("USHORT", UShort)
@@ -36,20 +36,20 @@ ULONG = Alias("ULONG", ULong)
 LONGLONG = Alias("LONGLONG", LongLong)
 FLOAT = Alias("FLOAT", Float)
 
-INT32 = Literal("INT32", "UInt")
+INT32 = Literal("INT32", "SInt")
 UINT32 = Literal("UINT32", "UInt")
 
 BYTE = Literal("BYTE", "UInt", base=16)
 WORD = Literal("WORD", "UInt", base=16)
 DWORD = Literal("DWORD", "UInt", base=16)
 
+
 BOOL = Alias("BOOL", Bool)
 
 LPLONG = Pointer(LONG)
 LPWORD = Pointer(WORD)
 LPDWORD = Pointer(DWORD)
 LPBOOL = Pointer(BOOL)
-LPSIZE = LPDWORD
 
 LPSTR = CString
 LPCSTR = Const(CString)
@@ -76,14 +76,7 @@ GUID = Struct("GUID", [
     (DWORD, "Data1"),
     (WORD, "Data2"),
     (WORD, "Data3"),
-    (BYTE, "Data4[0]"),
-    (BYTE, "Data4[1]"),
-    (BYTE, "Data4[2]"),
-    (BYTE, "Data4[3]"),
-    (BYTE, "Data4[4]"),
-    (BYTE, "Data4[5]"),
-    (BYTE, "Data4[6]"),
-    (BYTE, "Data4[7]"),
+    (Array(BYTE, "8"), "Data4"),
 ])
 LPGUID = Pointer(GUID)
 
@@ -109,6 +102,12 @@ POINT = Struct("POINT", (
 )) 
 LPPOINT = Pointer(POINT)
 
+SIZE = Struct("SIZE", (
+  (LONG, "cx"),
+  (LONG, "cy"),
+)) 
+LPSIZE = Pointer(SIZE)
+
 RECT = Struct("RECT", (
   (LONG, "left"),
   (LONG, "top"),
@@ -144,80 +143,16 @@ HMODULE = Opaque("HMODULE")
 
 IUnknown = Interface("IUnknown")
 
+HRESULT_com = FakeEnum(HRESULT, [
+    "S_OK",
+    "E_NOINTERFACE",
+    "E_POINTER",
+])
+
 IUnknown.methods = (
-       Method(HRESULT, "QueryInterface", ((REFIID, "riid"), (Pointer(OpaquePointer(Void)), "ppvObj"))),
+       Method(HRESULT_com, "QueryInterface", ((REFIID, "riid"), Out(Pointer(OpaquePointer(Void)), "ppvObj"))),
        Method(ULONG, "AddRef", ()),
        Method(ULONG, "Release", ()),
 )
 
 
-class DllFunction(Function):
-
-    def get_true_pointer(self):
-        ptype = self.pointer_type()
-        pvalue = self.pointer_value()
-        print '    if(!g_hDll) {'
-        print '        g_hDll = LoadLibrary(g_szDll);'
-        print '        if(!g_hDll)'
-        self.fail_impl()
-        print '    }'
-        print '    if(!%s) {' % (pvalue,)
-        print '        %s = (%s)GetProcAddress(g_hDll, "%s");' % (pvalue, ptype, self.name)
-        print '        if(!%s)' % (pvalue,)
-        self.fail_impl()
-        print '    }'
-
-
-class Dll:
-
-    def __init__(self, name):
-        self.name = name
-        self.functions = []
-        if self not in towrap:
-            towrap.append(self)
-
-    def wrap_name(self):
-        return "Wrap" + self.name
-
-    def wrap_pre_decl(self):
-        pass
-
-    def wrap_decl(self):
-        print 'static HINSTANCE g_hDll = NULL;'
-        print 'static TCHAR g_szDll[MAX_PATH] = {0};'
-        print
-        print 'BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved);'
-        print
-        for function in self.functions:
-            function.wrap_decl()
-        print
-
-    def wrap_impl(self):
-        print r'BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {'
-        print r'    switch(fdwReason) {'
-        print r'    case DLL_PROCESS_ATTACH:'
-        print r'        if(!GetSystemDirectory(g_szDll, MAX_PATH))'
-        print r'            return FALSE;'
-        print r'        _tcscat(g_szDll, TEXT("\\%s.dll"));' % self.name
-        print r'        Log::Open("%s");' % self.name
-        print r'    case DLL_THREAD_ATTACH:'
-        print r'        return TRUE;'
-        print r'    case DLL_THREAD_DETACH:'
-        print r'        return TRUE;'
-        print r'    case DLL_PROCESS_DETACH:'
-        print r'        Log::Close();'
-        print r'        if(g_hDll) {'
-        print r'            FreeLibrary(g_hDll);'
-        print r'            g_hDll = NULL;'
-        print r'        }'
-        print r'        return TRUE;'
-        print r'    }'
-        print r'    (void)hinstDLL;'
-        print r'    (void)lpvReserved;'
-        print r'    return TRUE;'
-        print r'}'
-        print
-        for function in self.functions:
-            function.wrap_impl()
-        print
-