annotate snippets/ole/Snippet81.d @ 159:ab5728d2a610

removed debug output
author Frank Benoit <benoit@tionex.de>
date Sat, 30 Aug 2008 13:57:54 +0200
parents 8907b6374258
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
1 /*******************************************************************************
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
2 * Copyright (c) 2000, 2004 IBM Corporation and others.
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
3 * All rights reserved. This program and the accompanying materials
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
5 * which accompanies this distribution, and is available at
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
7 *
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
8 * Contributors:
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
9 * IBM Corporation - initial API and implementation
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
10 * Port to the D programming language:
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
11 * Enzo Petrelli
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
12 *******************************************************************************/
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
13 module ole.Snippet81;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
14
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
15 /*
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
16 * OLE and ActiveX example snippet: browse the typelibinfo for a program id (win32 only)
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
17 * NOTE: This snippet uses internal SWT packages that are
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
18 * subject to change without notice.
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
19 *
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
20 * For a list of all SWT example snippets see
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
21 * http://www.eclipse.org/swt/snippets/
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
22 */
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
23
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
24 import dwt.DWT;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
25 import dwt.widgets.Display;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
26 import dwt.widgets.Shell;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
27
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
28 import dwt.dwthelper.utils; // String
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
29 import dwt.internal.ole.win32.OAIDL;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
30 import dwt.ole.win32.OLE;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
31 import dwt.ole.win32.OleAutomation;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
32 import dwt.ole.win32.OleControlSite;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
33 import dwt.ole.win32.OleFrame;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
34 import dwt.ole.win32.OleFunctionDescription;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
35 import dwt.ole.win32.OlePropertyDescription;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
36
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
37 import tango.io.Stdout;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
38 import tango.io.Print;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
39 import tango.text.convert.Format;
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
40
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
41 int main() {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
42 int iRes = 0;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
43
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
44 String progID = "Shell.Explorer";
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
45 //String progID = "Excel.Application";
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
46
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
47 Display oDisplay = new Display();
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
48 Shell oShell = new Shell(oDisplay);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
49
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
50 OleFrame frame = new OleFrame(oShell, DWT.NONE);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
51 OleControlSite oOleSite = null;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
52 OleAutomation oOleAutoObj = null;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
53 try {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
54 oOleSite = new OleControlSite(frame, DWT.NONE, progID);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
55 }
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
56 catch (Exception oExc) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
57 Stdout.formatln("Exception {} creating OleControlSite on type library for {}", oExc.toString(), progID);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
58 return 1;
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
59 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
60 try {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
61 oOleAutoObj = new OleAutomation(oOleSite);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
62 }
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
63 catch (Exception oExc) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
64 Stdout.formatln("Exception {} OleAutomation on type library for {}", oExc.toString(), progID);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
65 return 1;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
66 }
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
67
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
68 Stdout.formatln("TypeLibrary for: '{}'", progID);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
69 printTypeInfo(oOleAutoObj, Stdout);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
70
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
71 oShell.dispose();
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
72 oDisplay.dispose();
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
73 return iRes;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
74 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
75
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
76 private static void printTypeInfo(OleAutomation oOleAutoObj, Print!(char) oOut)
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
77 {
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
78 dwt.internal.ole.win32.OAIDL.TYPEATTR * pTypeAttr = oOleAutoObj.getTypeInfoAttributes();
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
79 if (pTypeAttr !is null) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
80 if (pTypeAttr.cFuncs > 0) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
81 oOut.formatln("Functions :");
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
82 for (int iIdx = 0; iIdx < pTypeAttr.cFuncs; ++iIdx) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
83 OleFunctionDescription oData = oOleAutoObj.getFunctionDescription(iIdx);
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
84 char[] sArgList = "";
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
85 int iFirstOptionalArgIndex = oData.args.length - oData.optionalArgCount;
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
86 for (int iArg = 0; iArg < oData.args.length; ++iArg) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
87 sArgList ~= "[";
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
88 if (iArg >= iFirstOptionalArgIndex){
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
89 sArgList ~= "optional, ";
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
90 }
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
91 sArgList ~= getDirection(oData.args[iArg].flags) ~ "] " ~
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
92 getTypeName(oData.args[iArg].type) ~ " " ~
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
93 oData.args[iArg].name
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
94 ;
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
95 if (iArg < oData.args.length - 1){
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
96 sArgList ~= ", ";
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
97 }
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
98 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
99 oOut.formatln("{} (id = {} (0x{:X8}))", getInvokeKind(oData.invokeKind), oData.id, oData.id);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
100 oOut.formatln("\tSignature : {} {}({})", getTypeName(oData.returnType), oData.name, sArgList);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
101 oOut.formatln("\tDescription: {}", oData.documentation);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
102 oOut.formatln("\tHelp File : {}", oData.helpFile);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
103 oOut.formatln("");
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
104 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
105 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
106
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
107 if (pTypeAttr.cVars > 0) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
108 oOut.formatln("\n\nVariables :");
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
109 for (int iIdx = 0; iIdx < pTypeAttr.cVars; ++iIdx) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
110 OlePropertyDescription oData = oOleAutoObj.getPropertyDescription(iIdx);
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
111 oOut.formatln("PROPERTY (id = {} (0x{:X8})", oData.id, oData.id);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
112 oOut.formatln("\tName : {}", oData.name);
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
113 oOut.formatln("\tType : {}", getTypeName(oData.type));
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
114 oOut.formatln("");
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
115 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
116 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
117 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
118 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
119 private static char[] getTypeName(int iType) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
120 int iBase = iType & ~OLE.VT_BYREF;
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
121 char[] sDsc = null;
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
122 switch (iBase) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
123 case OLE.VT_BOOL : sDsc = "boolean"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
124 case OLE.VT_R4 : sDsc = "float"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
125 case OLE.VT_R8 : sDsc = "double"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
126 case OLE.VT_I4 : sDsc = "int"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
127 case OLE.VT_DISPATCH : sDsc = "IDispatch"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
128 case OLE.VT_UNKNOWN : sDsc = "IUnknown"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
129 case OLE.VT_I2 : sDsc = "short"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
130 case OLE.VT_BSTR : sDsc = "String"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
131 case OLE.VT_VARIANT : sDsc = "Variant"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
132 case OLE.VT_CY : sDsc = "Currency"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
133 case OLE.VT_DATE : sDsc = "Date"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
134 case OLE.VT_UI1 : sDsc = "unsigned char"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
135 case OLE.VT_UI4 : sDsc = "unsigned int"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
136 case OLE.VT_USERDEFINED : sDsc = "UserDefined"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
137 case OLE.VT_HRESULT : sDsc = "HRESULT"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
138 case OLE.VT_VOID : sDsc = "void"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
139 case OLE.VT_UI2 : sDsc = "unsigned short"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
140 case OLE.VT_UINT : sDsc = "unsigned int"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
141 case OLE.VT_PTR : sDsc = "void *"; break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
142 default: break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
143 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
144 if (sDsc !is null) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
145 if ((iType & OLE.VT_BYREF) == OLE.VT_BYREF){
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
146 return sDsc ~ " *";
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
147 }
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
148 return sDsc;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
149 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
150 return Format("unknown {} (0x{:X4})", iType, iType);
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
151 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
152
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
153 char[] getDirection(int bDirection) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
154 char[] sDirString = "";
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
155 bool bComma = false;
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
156 if ((bDirection & OLE.IDLFLAG_FIN) != 0) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
157 sDirString ~= "in";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
158 bComma = true;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
159 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
160 if ((bDirection & OLE.IDLFLAG_FOUT) != 0) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
161 if (bComma) sDirString ~= ", ";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
162 sDirString ~= "out";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
163 bComma = true;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
164 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
165 if ((bDirection & OLE.IDLFLAG_FLCID) != 0) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
166 if (bComma) sDirString ~= ", ";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
167 sDirString ~= "lcid";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
168 bComma = true;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
169 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
170 if ((bDirection & OLE.IDLFLAG_FRETVAL) != 0) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
171 if (bComma) sDirString ~= ", ";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
172 sDirString ~= "retval";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
173 }
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
174 return sDirString;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
175 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
176 private static char[] getInvokeKind(int iInvKind) {
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
177 switch (iInvKind) {
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
178 case OLE.INVOKE_FUNC : return "METHOD";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
179 case OLE.INVOKE_PROPERTYGET : return "PROPERTY GET";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
180 case OLE.INVOKE_PROPERTYPUT : return "PROPERTY PUT";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
181 case OLE.INVOKE_PROPERTYPUTREF : return "PROPERTY PUT BY REF";
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
182 default: break;
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
183 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
184 return Format("unknown {}", iInvKind);
151
47a861d0d0f2 changed filetype to unix
Frank Benoit <benoit@tionex.de>
parents: 150
diff changeset
185 }
153
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
186
8907b6374258 Tangofied the OLE snippet 81
Frank Benoit <benoit@tionex.de>
parents: 151
diff changeset
187