Skip to content

Commit 07c948d

Browse files
Laeeth IsharcLaeeth Isharc
authored andcommitted
wrapping works
1 parent f028a18 commit 07c948d

File tree

3 files changed

+139
-164
lines changed

3 files changed

+139
-164
lines changed

genericwithwrap.d

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ import core.stdc.wctype:towlower;
8383
import std.format;
8484
import xlld.wrap;
8585

86-
num GWLP_WNDPROC=-4;
86+
enum GWLP_WNDPROC=-4;
8787
enum MAXWORD = 0xFFFF;
8888
debug=0;
8989
extern(Windows)
@@ -153,7 +153,7 @@ wchar[20] g_szBuffer = ""w;
153153
g_rgWorksheetFuncsRows define the number of rows in the table. The
154154
g_rgWorksheetFuncsCols represents the number of columns in the table.
155155
*/
156-
enum g_rgWorksheetFuncsRows =3;
156+
enum g_rgWorksheetFuncsRows =4;
157157
enum g_rgWorksheetFuncsCols =10;
158158

159159
__gshared wstring[g_rgWorksheetFuncsCols][g_rgWorksheetFuncsRows] g_rgWorksheetFuncs =
@@ -181,10 +181,10 @@ __gshared wstring[g_rgWorksheetFuncsCols][g_rgWorksheetFuncsRows] g_rgWorksheetF
181181
"Adds the arguments"w,
182182
"Number1,number2,... are 1 to 29 arguments for which you want to sum."w
183183
],
184-
[ "WrapSquare"w,
185-
"UUUUUUUUUUUUUUUUUUUUUUUUUUUUUU"w, // up to 255 args in Excel 2007 and later,
184+
[ "WrapSquare3"w,
185+
"QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ"w, // up to 255 args in Excel 2007 and later,
186186
// upto 29 args in Excel 2003 and earlier versions
187-
"WrapSquare"w,
187+
"WrapSquare3"w,
188188
"number1,number2,..."w,
189189
"1"w,
190190
"Generic Add-In"w,
@@ -461,7 +461,8 @@ extern(Windows) BOOL /*APIENTRY*/ DllMain( HANDLE hDLL, DWORD dwReason, LPVOID l
461461
extern(Windows) int /*WINAPI*/ xlAutoOpen()
462462
{
463463
import std.conv;
464-
464+
import core.runtime:rt_init;
465+
rt_init();
465466
static XLOPER12 xDLL, // name of this DLL //
466467
xMenu, // xltypeMulti containing the menu //
467468
xTool, // xltypeMulti containing the toolbar //
@@ -687,6 +688,9 @@ extern(Windows) int /*WINAPI*/ xlAutoClose()
687688
Excel12f(xlFree, cast(XLOPER12*)0, [cast(LPXLOPER12) &xRes]);
688689
}
689690

691+
import core.runtime:rt_term;
692+
rt_term();
693+
690694
return 1;
691695
}
692696

@@ -1297,7 +1301,7 @@ extern(Windows) LPXLOPER12 /*WINAPI*/ Func1 (LPXLOPER12 x)
12971301
History: Date Author Reason
12981302
*/
12991303

1300-
extern(Windows) LPXLOPER12 FuncSquare(
1304+
extern(Windows) LPXLOPER12 WrapSquare3(
13011305
LPXLOPER12 px1,LPXLOPER12 px2,LPXLOPER12 px3,LPXLOPER12 px4,
13021306
LPXLOPER12 px5,LPXLOPER12 px6,LPXLOPER12 px7,LPXLOPER12 px8,
13031307
LPXLOPER12 px9,LPXLOPER12 px10,LPXLOPER12 px11,LPXLOPER12 px12,
@@ -1307,8 +1311,21 @@ extern(Windows) LPXLOPER12 FuncSquare(
13071311
LPXLOPER12 px25,LPXLOPER12 px26,LPXLOPER12 px27,LPXLOPER12 px28,
13081312
LPXLOPER12 px29)
13091313
{
1314+
import std.algorithm:map,sum;
1315+
import std.experimental.allocator;
1316+
import std.conv:to;
13101317
auto args=px1.fromXLOPER12!(double[]);
1311-
return args.map(arg=>arg*arg).sum.makeXLOPer12;
1318+
double[][] retD;
1319+
retD.length=args.length;
1320+
foreach(i;0..args.length)
1321+
{
1322+
retD[i].length=args.length;
1323+
foreach(j;0..args.length)
1324+
{
1325+
retD[i][j]=args[0..j+1].map!(arg=>arg*arg).sum;
1326+
}
1327+
}
1328+
return makeXLOPER12(retD);
13121329
}
13131330

13141331
extern(Windows) LPXLOPER12 /*WINAPI*/ FuncSum(

make64wrap.bat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
rm generic64.xll
1+
rm generic64e.xll
22
dmd -c -gc -m64 -map -ofgeneric64.obj genericwithwrap.d memorymanager.d memorypool.d xlcall.d xlcallcpp.d framework.d wrap.d
3-
dmd -m64 -g -L/OUT:generic64.xll -L/NOLOGO -L generic64.obj generic64.def xlcall64d.lib
3+
dmd -m64 -g -L/OUT:generic64e.xll -L/NOLOGO -L generic64.obj generic64.def xlcall64d.lib

0 commit comments

Comments
 (0)