72 lines
1.5 KiB
Lua

require("luacom")
local cube = {}
cube[1] = {}
cube[2] = {}
cube[3] = {}
cube[4] = {}
cube[1][1] = {"[1,1,1]", "[1,1,2]"}
cube[1][2] = {"[1,2,1]", "[1,2,2]"}
cube[1][3] = {"[1,3,1]", "[1,3,2]"}
cube[2][1] = {"[2,1,1]", "[2,1,2]"}
cube[2][2] = {"[2,2,1]", "[2,2,2]"}
cube[2][3] = {"[2,3,1]", "[2,3,2]"}
cube[3][1] = {"[3,1,1]", "[3,1,2]"}
cube[3][2] = {"[3,2,1]", "[3,2,2]"}
cube[3][3] = {"[3,3,1]", "[3,3,2]"}
cube[4][1] = {"[4,1,1]", "[4,1,2]"}
cube[4][2] = {"[4,2,1]", "[4,2,2]"}
cube[4][3] = {"[4,3,1]", "[4,3,2]"}
local matrix = {}
matrix[1] = {"a","b","c"}
matrix[2] = {"d","e","f"}
function PrintDimension(dimension, indices)
indices = indices or {}
for k,v in ipairs(dimension) do
indices[#indices + 1] = tostring(k)
if type(v) == "table" then
PrintDimension(v, indices)
else
print("["..table.concat(indices, ",").."] => ", v)
end
indices[#indices] = nil
end
end
print("LuaCOM <--> Visual C++")
do
local test = luacom.CreateObject("TestSafeArray.Test")
assert(test)
print("Testing SafeArray COM->Lua")
local array = test:GetArray()
assert(array)
PrintDimension(array)
print("\r\nTesting SafeArray (4,3,2) Lua->COM")
local out = test:SetArray(cube)
assert(#out == #cube, "dimensions mismatch")
print("\r\nTesting SafeArray (2,3) Lua->COM")
local out = test:SetArray(matrix)
assert(#out == #matrix, "dimensions mismatch")
end
print("\r\n\r\n")
print("LuaCOM <--> Visual Basic")
do
local test = luacom.CreateObject("PruebaSafeArrayVB.Test")
assert(test)
array = test:GetArray432()
PrintDimension(array)
end