diff options
| author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2009-08-18 20:56:02 +0000 |
|---|---|---|
| committer | Lorry <lorry@roadtrain.codethink.co.uk> | 2012-09-25 16:59:08 +0000 |
| commit | 9f8a09ed743cedd9547bf0661d518647966ab114 (patch) | |
| tree | 9c7803d3b27a8ec22e91792ac7f7932efa128b20 /Examples/tcl/reference/runme.tcl | |
| download | swig-tarball-master.tar.gz | |
Imported from /srv/lorry/lorry-area/swig-tarball/swig-1.3.40.tar.gz.HEADswig-1.3.40master
Diffstat (limited to 'Examples/tcl/reference/runme.tcl')
| -rw-r--r-- | Examples/tcl/reference/runme.tcl | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/Examples/tcl/reference/runme.tcl b/Examples/tcl/reference/runme.tcl new file mode 100644 index 0000000..6560cf4 --- /dev/null +++ b/Examples/tcl/reference/runme.tcl @@ -0,0 +1,76 @@ +# file: runme.tcl + +# This file illustrates the manipulation of C++ references in Tcl + +catch { load ./example[info sharedlibextension] example} + +# ----- Object creation ----- + +puts "Creating some objects:" +set a [new_Vector 3 4 5] +set b [new_Vector 10 11 12] + +puts " Created [Vector_print $a]" +puts " Created [Vector_print $b]" + +# ----- Call an overloaded operator ----- + +# This calls the wrapper we placed around +# +# operator+(const Vector &a, const Vector &) +# +# It returns a new allocated object. + +puts "Adding a+b" +set c [addv $a $b] +puts " a+b = [Vector_print $c]" + +# Note: Unless we free the result, a memory leak will occur +delete_Vector $c + +# ----- Create a vector array ----- + +# Note: Using the high-level interface here +puts "Creating an array of vectors" +VectorArray va 10 +puts " va = [va cget -this]" + + +# ----- Set some values in the array ----- + +# These operators copy the value of $a and $b to the vector array +va set 0 $a +va set 1 $b + +# This will work, but it will cause a memory leak! + +va set 2 [addv $a $b] + +# The non-leaky way to do it + +set c [addv $a $b] +va set 3 $c +delete_Vector $c + +# Get some values from the array + +puts "Getting some array values" +for {set i 0} {$i < 5} {incr i 1} { + puts " va($i) = [Vector_print [va get $i]]" +} + +# Watch under resource meter to check on this +puts "Making sure we don't leak memory." +for {set i 0} {$i < 1000000} {incr i 1} { + set c [va get [expr {$i % 10}]] +} + +# ----- Clean up ----- +puts "Cleaning up" + +rename va "" + +delete_Vector $a +delete_Vector $b + + |
