Piotr Caban : oleview: Added idl formatting.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Aug 21 05:58:54 CDT 2006
Module: wine
Branch: master
Commit: 96a0da24879ddf2edd0d3d3081cf3c42099584c0
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=96a0da24879ddf2edd0d3d3081cf3c42099584c0
Author: Piotr Caban <piotr.caban at gmail.com>
Date: Sun Aug 20 13:57:21 2006 +0200
oleview: Added idl formatting.
---
programs/oleview/typelib.c | 65 ++++++++++++++++++++++++++++++++++++++++----
1 files changed, 59 insertions(+), 6 deletions(-)
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c
index d3c5109..632b028 100644
--- a/programs/oleview/typelib.c
+++ b/programs/oleview/typelib.c
@@ -105,6 +105,47 @@ void AddToTLDataStrW(TYPELIB_DATA *pTLDa
pTLData->idlLen += SourceLen;
}
+void AddToTLDataStrWithTabsW(TYPELIB_DATA *pTLData, const WCHAR *wszSource)
+{
+ int lineLen = lstrlenW(wszSource);
+ int newLinesNo = 0;
+ WCHAR *pSourcePos = (WCHAR *)wszSource;
+ WCHAR *pSourceBeg;
+
+ while(*pSourcePos)
+ {
+ if(*pSourcePos == *wszNewLine) newLinesNo++;
+ pSourcePos += 1;
+ }
+
+ pTLData->idl = HeapReAlloc(GetProcessHeap(), 0, pTLData->idl,
+ sizeof(WCHAR)*(pTLData->idlLen+lineLen+4*newLinesNo+1));
+
+ pSourcePos = (WCHAR *)wszSource;
+ pSourceBeg = (WCHAR *)wszSource;
+ while(*pSourcePos)
+ {
+ if(*pSourcePos != *wszNewLine)
+ {
+ pSourcePos += 1;
+ continue;
+ }
+ *pSourcePos = '\0';
+ lineLen = lstrlenW(pSourceBeg)+1;
+ *pSourcePos = '\n';
+ pSourcePos += 1;
+
+ pTLData->idl[pTLData->idlLen] = *wszSpace;
+ pTLData->idl[pTLData->idlLen+1] = *wszSpace;
+ pTLData->idl[pTLData->idlLen+2] = *wszSpace;
+ pTLData->idl[pTLData->idlLen+3] = *wszSpace;
+ memcpy(&pTLData->idl[pTLData->idlLen+4], pSourceBeg, sizeof(WCHAR)*lineLen);
+ pTLData->idlLen += lineLen + 4;
+
+ pSourceBeg = pSourcePos;
+ }
+}
+
LPARAM InitializeTLData(void)
{
TYPELIB_DATA *pTLData;
@@ -139,10 +180,8 @@ void AddChildrenData(HTREEITEM hParent,
tvi.hItem = hCur;
SendMessage(typelib.hTree, TVM_GETITEM, 0, (LPARAM)&tvi);
if(tvi.lParam && ((TYPELIB_DATA *)(tvi.lParam))->idlLen)
- AddToTLDataStrW(pData, ((TYPELIB_DATA *)(tvi.lParam))->idl);
+ AddToTLDataStrWithTabsW(pData, ((TYPELIB_DATA *)(tvi.lParam))->idl);
}while((hCur = TreeView_GetNextSibling(typelib.hTree, hCur)));
-
- AddToTLDataStrW(pData, pData->wszInsertAfter);
}
void CreateTypeInfo(WCHAR *wszAddTo, WCHAR *wszAddAfter, TYPEDESC tdesc, ITypeInfo *pTypeInfo)
@@ -321,8 +360,11 @@ int EnumFuncs(ITypeInfo *pTypeInfo, int
for(j=0; j<pFuncDesc->cParams; j++)
{
if(j != 0) AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszComa);
- AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
- AddSpaces((TYPELIB_DATA*)(U(tvis).item.lParam), tabSize);
+ if(pFuncDesc->cParams != 1)
+ {
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
+ AddSpaces((TYPELIB_DATA*)(U(tvis).item.lParam), tabSize);
+ }
bFirst = TRUE;
#define ENUM_PARAM_FLAG(x)\
if(pFuncDesc->lprgelemdescParam[j].paramdesc.wParamFlags & x)\
@@ -462,9 +504,11 @@ void CreateInterfaceInfo(ITypeInfo *pTyp
AddToTLDataStrW(pTLData, wszOpenBrackets1);
AddToTLDataStrW(pTLData, wszNewLine);
+ AddSpaces(pTLData, 4);
AddToTLDataStrW(pTLData, wszOdl);
AddToTLDataStrW(pTLData, wszComa);
AddToTLDataStrW(pTLData, wszNewLine);
+ AddSpaces(pTLData, 4);
AddToTLDataStrW(pTLData, wszUUID);
AddToTLDataStrW(pTLData, wszOpenBrackets2);
StringFromGUID2(&(pTypeAttr->guid), wszGuid, MAX_LOAD_STRING);
@@ -475,6 +519,7 @@ void CreateInterfaceInfo(ITypeInfo *pTyp
{
AddToTLDataStrW(pTLData, wszComa);
AddToTLDataStrW(pTLData, wszNewLine);
+ AddSpaces(pTLData, 4);
AddToTLDataStrW(pTLData, wszHelpstring);
AddToTLDataStrW(pTLData, wszOpenBrackets2);
AddToTLDataStrW(pTLData, wszInvertedComa);
@@ -486,6 +531,7 @@ void CreateInterfaceInfo(ITypeInfo *pTyp
{
AddToTLDataStrW(pTLData, wszComa);
AddToTLDataStrW(pTLData, wszNewLine);
+ AddSpaces(pTLData, 4);
AddToTLDataStrW(pTLData, wszHelpcontext);
AddToTLDataStrW(pTLData, wszOpenBrackets2);
wsprintfW(wszHelpContext, wszFormat, ulHelpContext);
@@ -497,6 +543,7 @@ void CreateInterfaceInfo(ITypeInfo *pTyp
bFirst = TRUE;
AddToTLDataStrW(pTLData, wszComa);
AddToTLDataStrW(pTLData, wszNewLine);
+ AddSpaces(pTLData, 4);
#define ENUM_FLAGS(x) if(pTypeAttr->wTypeFlags & x)\
{\
if(!bFirst)\
@@ -624,6 +671,7 @@ int PopulateTree(void)
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszOpenBrackets1);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
+ AddSpaces((TYPELIB_DATA*)(U(tvis).item.lParam), 4);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszUUID);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszOpenBrackets2);
StringFromGUID2(&(pTLibAttr->guid), wszText, MAX_LOAD_STRING);
@@ -632,10 +680,12 @@ int PopulateTree(void)
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszCloseBrackets2);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszComa);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
+ AddSpaces((TYPELIB_DATA*)(U(tvis).item.lParam), 4);
wsprintfW(wszText, wszFormat2, pTLibAttr->wMajorVerNum, pTLibAttr->wMinorVerNum);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszText);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszComa);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
+ AddSpaces((TYPELIB_DATA*)(U(tvis).item.lParam), 4);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszHelpString);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszOpenBrackets2);
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), bstrData);
@@ -761,7 +811,10 @@ int PopulateTree(void)
EnumFuncs(pTypeInfo, pTypeAttr->cFuncs, hParent);
EnumImplTypes(pTypeInfo, pTypeAttr->cImplTypes, hParent);
- AddChildrenData(hParent, (TYPELIB_DATA*)(U(tvis).item.lParam));
+ if(memcmp(bstrName, wszVT_UNKNOWN, sizeof(wszVT_UNKNOWN)))
+ AddChildrenData(hParent, (TYPELIB_DATA*)(U(tvis).item.lParam));
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam),
+ ((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter);
ITypeInfo_ReleaseTypeAttr(pTypeInfo, pTypeAttr);
ITypeInfo_Release(pTypeInfo);
More information about the wine-cvs
mailing list