swig/Examples/test-suite/java/cpp11_move_only_runme.java
William S Fulton 1ece69cafd Test copy constructor and assignment operator calls for movable types
This is the current state of play where the copy constructor and copy
assignment operators are called, even for movable types passed as
function parameters.
2022-07-08 08:01:55 +01:00

51 lines
1.2 KiB
Java

import cpp11_move_only.*;
public class cpp11_move_only_runme {
static {
try {
System.loadLibrary("cpp11_move_only");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load. See the chapter on Dynamic Linking Problems in the SWIG Java documentation for help.\n" + e);
System.exit(1);
}
}
public static void main(String argv[]) {
// Output
{
Counter.reset_counts();
MoveOnly mo = MoveOnly.create();
mo.delete();
Counter.check_counts(1, 0, 0, 2, 0, 3);
}
{
Counter.reset_counts();
MovableCopyable mo = MovableCopyable.create();
mo.delete();
Counter.check_counts(2, 1, 0, 0, 1, 3);
}
// Move semantics not used
{
Counter.reset_counts();
MovableCopyable mo = MovableCopyable.createConst();
mo.delete();
Counter.check_counts(2, 1, 1, 0, 0, 3);
}
// Input
{
Counter.reset_counts();
MovableCopyable mo = new MovableCopyable(222);
Counter.check_counts(1, 0, 0, 0, 0, 0);
MovableCopyable.take(mo);
Counter.check_counts(2, 1, 1, 0, 0, 2);
mo.delete();
Counter.check_counts(2, 1, 1, 0, 0, 3);
}
}
}