Piotr Caban : oleview: CreateCoclassHeader partially implemented.

Alexandre Julliard julliard at winehq.org
Fri Apr 11 06:28:22 CDT 2008


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

Author: Piotr Caban <piotr.caban at gmail.com>
Date:   Fri Apr 11 01:11:45 2008 +0200

oleview: CreateCoclassHeader partially implemented.

---

 programs/oleview/main.h    |    1 +
 programs/oleview/typelib.c |   60 ++++++++++++++++++++++++++++++++++++-------
 2 files changed, 51 insertions(+), 10 deletions(-)

diff --git a/programs/oleview/main.h b/programs/oleview/main.h
index c196883..a6f199a 100644
--- a/programs/oleview/main.h
+++ b/programs/oleview/main.h
@@ -37,6 +37,7 @@
 #define MAX_WINDOW_WIDTH 30000
 #define MIN_FUNC_ID 0x60000000
 #define MIN_VAR_ID 0x40000000
+#define TAB_SIZE 4
 
 #define STATUS_WINDOW 2000
 #define TREE_WINDOW 2001
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c
index 7215980..626abea 100644
--- a/programs/oleview/typelib.c
+++ b/programs/oleview/typelib.c
@@ -634,7 +634,7 @@ static int EnumFuncs(ITypeInfo *pTypeInfo, TYPEATTR *pTypeAttr, HTREEITEM hParen
             if(pFuncDesc->cParams != 1)
             {
                 AddToTLDataStrW(tld, wszNewLine);
-                AddSpaces(tld, 4);
+                AddSpaces(tld, TAB_SIZE);
             }
             bFirst = TRUE;
 #define ENUM_PARAM_FLAG(x)\
@@ -808,7 +808,7 @@ static void EnumCoclassImplTypes(ITypeInfo *pTypeInfo,
             continue;
         }
 
-        AddSpaces(pTLData, 4);
+        AddSpaces(pTLData, TAB_SIZE);
         ITypeInfo_GetImplTypeFlags(pTypeInfo, i, &flags);
         bFirst = TRUE;
 #define ENUM_IMPLTYPEFLAG(x)\
@@ -943,12 +943,12 @@ static void CreateInterfaceInfo(ITypeInfo *pTypeInfo, int cImplTypes, WCHAR *wsz
     AddToTLDataStrW(pTLData, wszNewLine);
     if(pTypeAttr->typekind != TKIND_DISPATCH)
     {
-        AddSpaces(pTLData, 4);
+        AddSpaces(pTLData, TAB_SIZE);
         AddToTLDataStrW(pTLData, wszOdl);
         AddToTLDataStrW(pTLData, wszComa);
         AddToTLDataStrW(pTLData, wszNewLine);
     }
-    AddSpaces(pTLData, 4);
+    AddSpaces(pTLData, TAB_SIZE);
     AddToTLDataStrW(pTLData, wszUUID);
     AddToTLDataStrW(pTLData, wszOpenBrackets2);
     StringFromGUID2(&(pTypeAttr->guid), wszGuid, MAX_LOAD_STRING);
@@ -959,7 +959,7 @@ static void CreateInterfaceInfo(ITypeInfo *pTypeInfo, int cImplTypes, WCHAR *wsz
     {
         AddToTLDataStrW(pTLData, wszComa);
         AddToTLDataStrW(pTLData, wszNewLine);
-        AddSpaces(pTLData, 4);
+        AddSpaces(pTLData, TAB_SIZE);
         AddToTLDataStrW(pTLData, wszHelpstring);
         AddToTLDataStrW(pTLData, wszOpenBrackets2);
         AddToTLDataStrW(pTLData, wszInvertedComa);
@@ -971,7 +971,7 @@ static void CreateInterfaceInfo(ITypeInfo *pTypeInfo, int cImplTypes, WCHAR *wsz
     {
         AddToTLDataStrW(pTLData, wszComa);
         AddToTLDataStrW(pTLData, wszNewLine);
-        AddSpaces(pTLData, 4);
+        AddSpaces(pTLData, TAB_SIZE);
         AddToTLDataStrW(pTLData, wszHelpcontext);
         AddToTLDataStrW(pTLData, wszOpenBrackets2);
         wsprintfW(wszHelpContext, wszFormat, ulHelpContext);
@@ -985,7 +985,7 @@ static void CreateInterfaceInfo(ITypeInfo *pTypeInfo, int cImplTypes, WCHAR *wsz
         {\
             AddToTLDataStrW(pTLData, wszComa);\
             AddToTLDataStrW(pTLData, wszNewLine);\
-            AddSpaces(pTLData, 4);\
+            AddSpaces(pTLData, TAB_SIZE);\
             AddToTLDataStrW(pTLData, wsz##x);\
         }
         ENUM_FLAGS(TYPEFLAG_FAPPOBJECT);
@@ -1078,9 +1078,49 @@ static void CreateTypedefHeader(ITypeInfo *pTypeInfo,
 static void CreateCoclassHeader(ITypeInfo *pTypeInfo,
         TYPEATTR *pTypeAttr, TYPELIB_DATA *pTLData)
 {
+    WCHAR wszGuid[MAX_LOAD_STRING];
+    BSTR bstrHelpString;
+    const WCHAR wszNoncreatable[]
+        = { 'n','o','n','c','r','e','a','t','a','b','l','e','\0' };
+
     AddToTLDataStrW(pTLData, wszOpenBrackets1);
     AddToTLDataStrW(pTLData, wszNewLine);
 
+    AddSpaces(pTLData, TAB_SIZE);
+    AddToTLDataStrW(pTLData, wszUUID);
+    AddToTLDataStrW(pTLData, wszOpenBrackets2);
+    StringFromGUID2(&(pTypeAttr->guid), wszGuid, MAX_LOAD_STRING);
+    wszGuid[lstrlenW(wszGuid)-1] = '\0';
+    AddToTLDataStrW(pTLData, &wszGuid[1]);
+    AddToTLDataStrW(pTLData, wszCloseBrackets2);
+
+    if(SUCCEEDED(ITypeInfo_GetDocumentation(pTypeInfo, MEMBERID_NIL, NULL,
+            &bstrHelpString, NULL, NULL)))
+    {
+        if(SysStringLen(bstrHelpString))
+        {
+            AddToTLDataStrW(pTLData, wszComa);
+            AddToTLDataStrW(pTLData, wszNewLine);
+            AddSpaces(pTLData, TAB_SIZE);
+            AddToTLDataStrW(pTLData, wszHelpstring);
+            AddToTLDataStrW(pTLData, wszOpenBrackets1);
+            AddToTLDataStrW(pTLData, wszInvertedComa);
+            AddToTLDataStrW(pTLData, bstrHelpString);
+            AddToTLDataStrW(pTLData, wszInvertedComa);
+            AddToTLDataStrW(pTLData, wszCloseBrackets1);
+        }
+        SysFreeString(bstrHelpString);
+    }
+
+    if(!(pTypeAttr->wTypeFlags & TYPEFLAG_FCANCREATE))
+    {
+        AddToTLDataStrW(pTLData, wszComa);
+        AddToTLDataStrW(pTLData, wszNewLine);
+        AddSpaces(pTLData, TAB_SIZE);
+        AddToTLDataStrW(pTLData, wszNoncreatable);
+    }
+
+    AddToTLDataStrW(pTLData, wszNewLine);
     AddToTLDataStrW(pTLData, wszCloseBrackets1);
     AddToTLDataStrW(pTLData, wszNewLine);
 }
@@ -1165,7 +1205,7 @@ static int PopulateTree(void)
     AddToTLDataStrW(tld, wszNewLine);
     AddToTLDataStrW(tld, wszOpenBrackets1);
     AddToTLDataStrW(tld, wszNewLine);
-    AddSpaces(tld, 4);
+    AddSpaces(tld, TAB_SIZE);
     AddToTLDataStrW(tld, wszUUID);
     AddToTLDataStrW(tld, wszOpenBrackets2);
     StringFromGUID2(&(pTLibAttr->guid), wszText, MAX_LOAD_STRING);
@@ -1174,12 +1214,12 @@ static int PopulateTree(void)
     AddToTLDataStrW(tld, wszCloseBrackets2);
     AddToTLDataStrW(tld, wszComa);
     AddToTLDataStrW(tld, wszNewLine);
-    AddSpaces(tld, 4);
+    AddSpaces(tld, TAB_SIZE);
     wsprintfW(wszText, wszFormat2, pTLibAttr->wMajorVerNum, pTLibAttr->wMinorVerNum);
     AddToTLDataStrW(tld, wszText);
     AddToTLDataStrW(tld, wszComa);
     AddToTLDataStrW(tld, wszNewLine);
-    AddSpaces(tld, 4);
+    AddSpaces(tld, TAB_SIZE);
     AddToTLDataStrW(tld, wszHelpstring);
     AddToTLDataStrW(tld, wszOpenBrackets2);
     AddToTLDataStrW(tld, wszInvertedComa);




More information about the wine-cvs mailing list