Nikolay Sivov : comctl32/dpa: Implement DPA_GetSize().

Alexandre Julliard julliard at winehq.org
Tue Sep 15 17:47:29 CDT 2009


Module: wine
Branch: master
Commit: 28998999d0add43d8dbc7e57b7366b02f3438c76
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=28998999d0add43d8dbc7e57b7366b02f3438c76

Author: Nikolay Sivov <bunglehead at gmail.com>
Date:   Sun Sep 13 03:13:42 2009 +0400

comctl32/dpa: Implement DPA_GetSize().

---

 dlls/comctl32/comctl32.spec |    1 +
 dlls/comctl32/dpa.c         |   24 ++++++++++++++++++++++--
 include/commctrl.h          |    1 +
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/dlls/comctl32/comctl32.spec b/dlls/comctl32/comctl32.spec
index e852916..4249d56 100644
--- a/dlls/comctl32/comctl32.spec
+++ b/dlls/comctl32/comctl32.spec
@@ -125,6 +125,7 @@
 @ stdcall DestroyPropertySheetPage(long)
 @ stdcall -private DllGetVersion(ptr)
 @ stdcall -private DllInstall(long wstr)
+@ stdcall DPA_GetSize(ptr)
 @ stdcall DrawShadowText(long wstr long ptr long long long long long)
 @ stdcall DrawStatusText(long ptr ptr long) DrawStatusTextA
 @ stdcall DrawStatusTextW(long ptr wstr long)
diff --git a/dlls/comctl32/dpa.c b/dlls/comctl32/dpa.c
index 722e2fa..e3c03c8 100644
--- a/dlls/comctl32/dpa.c
+++ b/dlls/comctl32/dpa.c
@@ -45,14 +45,14 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dpa);
 
-struct _DPA
+typedef struct _DPA
 {
     INT    nItemCount;
     LPVOID   *ptrs;
     HANDLE hHeap;
     INT    nGrow;
     INT    nMaxCount;
-};
+} DPA;
 
 typedef struct _STREAMDATA
 {
@@ -997,3 +997,23 @@ void WINAPI DPA_DestroyCallback (HDPA hdpa, PFNDPAENUMCALLBACK enumProc,
     DPA_EnumCallback (hdpa, enumProc, lParam);
     DPA_Destroy (hdpa);
 }
+
+/**************************************************************************
+ * DPA_GetSize [COMCTL32.@]
+ *
+ * Returns all array allocated memory size
+ *
+ * PARAMS
+ *     hdpa     [I] handle to the dynamic pointer array
+ *
+ * RETURNS
+ *     Size in bytes
+ */
+ULONGLONG WINAPI DPA_GetSize(HDPA hdpa)
+{
+    TRACE("(%p)\n", hdpa);
+
+    if (!hdpa) return 0;
+
+    return sizeof(DPA) + hdpa->nMaxCount*sizeof(PVOID);
+}
diff --git a/include/commctrl.h b/include/commctrl.h
index bda13de..ae417c0 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -5003,6 +5003,7 @@ BOOL   WINAPI DPA_DeleteAllPtrs(HDPA);
 BOOL   WINAPI DPA_SetPtr(HDPA, INT, LPVOID);
 LPVOID WINAPI DPA_GetPtr(HDPA, INT);
 INT    WINAPI DPA_GetPtrIndex(HDPA, LPCVOID);
+ULONGLONG WINAPI DPA_GetSize(HDPA);
 BOOL   WINAPI DPA_Grow(HDPA, INT);
 INT    WINAPI DPA_InsertPtr(HDPA, INT, LPVOID);
 BOOL   WINAPI DPA_Sort(HDPA, PFNDPACOMPARE, LPARAM);




More information about the wine-cvs mailing list