- If Octave segfaults during cleanup, it usually cannot dump its core and therefore just freezes, which hold up e.g Travis build jobs
65 lines
1.3 KiB
Matlab
65 lines
1.3 KiB
Matlab
# do not dump Octave core
|
|
if exist("crash_dumps_octave_core", "builtin")
|
|
crash_dumps_octave_core(0);
|
|
endif
|
|
|
|
# This file illustrates the manipulation of C++ references in Octave
|
|
|
|
swigexample
|
|
|
|
# ----- Object creation -----
|
|
|
|
printf("Creating some objects:\n");
|
|
a = swigexample.Vector(3,4,5)
|
|
b = swigexample.Vector(10,11,12)
|
|
|
|
printf(" Created %s\n",a.cprint());
|
|
printf(" Created %s\n",b.cprint());
|
|
|
|
# ----- Call an overloaded operator -----
|
|
|
|
# This calls the wrapper we placed around
|
|
#
|
|
# operator+(const Vector &a, const Vector &)
|
|
#
|
|
# It returns a new allocated object.
|
|
|
|
printf("Adding a+b\n");
|
|
c = swigexample.addv(a,b);
|
|
printf(" a+b = %s\n", c.cprint());
|
|
|
|
clear c
|
|
|
|
# ----- Create a vector array -----
|
|
|
|
# Note: Using the high-level interface here
|
|
printf("Creating an array of vectors\n");
|
|
va = swigexample.VectorArray(10)
|
|
|
|
# ----- 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);
|
|
|
|
va.set(2,swigexample.addv(a,b))
|
|
|
|
# Get some values from the array
|
|
|
|
printf("Getting some array values\n");
|
|
for i=0:4,
|
|
printf(" va(%d) = %s\n",i,va.get(i).cprint());
|
|
end;
|
|
|
|
# Watch under resource meter to check on this
|
|
printf("Making sure we don't leak memory.\n");
|
|
for i=0:1000000-1,
|
|
c = va.get(mod(i,10));
|
|
end
|
|
|
|
# ----- Clean up -----
|
|
printf("Cleaning up\n");
|
|
|
|
clear va
|
|
clear a
|
|
clear b
|