oleview: Added typedef handling to idl viewer
Piotr Caban
piotr.caban at gmail.com
Mon Aug 21 04:36:35 CDT 2006
Hi,
Changelog:
- Added typedef handling to idl viewer
programs/oleview/typelib.c | 67
++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 67 insertions(+), 0 deletions(-)
--
Piotr
-------------- next part --------------
diff --git a/programs/oleview/typelib.c b/programs/oleview/typelib.c
index c5088d3..52a500e 100644
--- a/programs/oleview/typelib.c
+++ b/programs/oleview/typelib.c
@@ -755,6 +755,49 @@ #define ENUM_FLAGS(x) if(pTypeAttr->wTyp
AddToStrW(pTLData->wszInsertAfter, wszNewLine);
}
+void CreateTypedefHeader(ITypeInfo *pTypeInfo,
+ TYPEATTR *pTypeAttr, TYPELIB_DATA *pTLData)
+{
+ BOOL bFirst = TRUE;
+ WCHAR wszGuid[MAX_LOAD_STRING];
+ const WCHAR wszTypedef[] = { 't','y','p','e','d','e','f',' ','\0' };
+ const WCHAR wszPublic[] = { 'p','u','b','l','i','c','\0' };
+
+ AddToTLDataStrW(pTLData, wszTypedef);
+ if(memcmp(&pTypeAttr->guid, &GUID_NULL, sizeof(GUID)))
+ {
+ if(bFirst) AddToTLDataStrW(pTLData, wszOpenBrackets1);
+ else
+ {
+ AddToTLDataStrW(pTLData, wszComa);
+ AddToTLDataStrW(pTLData, wszSpace);
+ }
+ bFirst = FALSE;
+ 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(pTypeAttr->typekind == TKIND_ALIAS)
+ {
+ if(bFirst) AddToTLDataStrW(pTLData, wszOpenBrackets1);
+ else
+ {
+ AddToTLDataStrW(pTLData, wszComa);
+ AddToTLDataStrW(pTLData, wszSpace);
+ }
+ bFirst = FALSE;
+ AddToTLDataStrW(pTLData, wszPublic);
+ }
+ if(!bFirst)
+ {
+ AddToTLDataStrW(pTLData, wszCloseBrackets1);
+ AddToTLDataStrW(pTLData, wszNewLine);
+ }
+}
+
int PopulateTree(void)
{
TVINSERTSTRUCT tvis;
@@ -883,6 +926,23 @@ int PopulateTree(void)
case TKIND_ENUM:
AddToStrW(wszText, wszTKIND_ENUM);
AddToStrW(wszText, bstrName);
+
+ CreateTypedefHeader(pTypeInfo, pTypeAttr,
+ (TYPELIB_DATA*)(U(tvis).item.lParam));
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam),
+ &wszTKIND_ENUM[lstrlenW(wszTKIND_ALIAS)]);
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszOpenBrackets3);
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam),wszNewLine);
+ AddToStrW(((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter,
+ wszCloseBrackets3);
+ AddToStrW(((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter,
+ wszSpace);
+ AddToStrW(((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter,
+ bstrName);
+ AddToStrW(((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter,
+ wszSemicolon);
+ AddToStrW(((TYPELIB_DATA*)(U(tvis).item.lParam))->wszInsertAfter,
+ wszNewLine);
break;
case TKIND_RECORD:
AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszTKIND_RECORD);
@@ -961,6 +1021,13 @@ int PopulateTree(void)
AddToStrW(wszText, wszSpace);
AddToStrW(wszText, bstrName);
AddToStrW(wszText, wszAfter);
+
+ CreateTypedefHeader(pTypeInfo, pTypeAttr,
+ (TYPELIB_DATA*)(U(tvis).item.lParam));
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam),
+ &wszText[lstrlenW(wszTKIND_ALIAS)]);
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszSemicolon);
+ AddToTLDataStrW((TYPELIB_DATA*)(U(tvis).item.lParam), wszNewLine);
break;
default:
lstrcpyW(wszText, bstrName);
More information about the wine-patches
mailing list