annotate lua/luadyncall/test/test_smartptr.lua @ 29:6cc2b7fc7ea2

bigger pydc update: - cleanups and refactoring - python 2 fixes in var conversions (especially w/ respect to int vs long) - fix to pydc.free() which didn't work at all - fix to return python bool as actual bool - test lib covering all conversions (manual verification, though :-/)
author Tassilo Philipp
date Wed, 08 Apr 2020 22:17:43 +0200
parents 0cfcc391201f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 require "smartptr"
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 -- test tolightuserdata
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 x = smartptr.tolightuserdata(0xCAFEbabe)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 print(x)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
8 -- test newsmartptr and finalizer
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
9
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 function finalizer(x)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
11 print("finalizer:"..tostring(x) )
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
12 end
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
13
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 y = smartptr.new(x, finalizer)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 print("dump smartptr : ".. tostring(y) )
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
16 print("dump address : " .. tostring(y()))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 y = nil -- should print FINALIZER
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
18 collectgarbage("collect")
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 -- test setfinalizer
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
21 y = smartptr.new( smartptr.tolightuserdata(0xdeadc0de), finalizer)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 print("smartptr : ".. tostring(y) )
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 print("address : " .. tostring(y()))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24 function newfinalizer(x)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 print("newfinalizer:"..tostring(x))
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 end
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
27 smartptr.setfinalizer(y, newfinalizer)
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 y = nil
0cfcc391201f initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29