Make std::vector<> wrappers conform to List interface in Java
Derive the class wrapping std::vector<> in Java from java.util.AbstractList<>. This makes it possible to use it with various algorithms working with Java collections and, maybe even more importantly, makes it possible to iterate over the wrapped vectors using for-each loops. This commit is based on the original patch by Volker Diels-Grabsch from https://sourceforge.net/p/swig/patches/278/
This commit is contained in:
parent
7c4109c701
commit
c79dd9d420
4 changed files with 126 additions and 7 deletions
|
|
@ -19,6 +19,9 @@ public class li_std_vector_runme {
|
|||
|
||||
v1.add(123);
|
||||
if (v1.get(0) != 123) throw new RuntimeException("v1 test failed");
|
||||
for (int n : v1) {
|
||||
if (n != 123) throw new RuntimeException("v1 loop test failed");
|
||||
}
|
||||
|
||||
StructVector v4 = li_std_vector.vecstruct(new StructVector());
|
||||
StructPtrVector v5 = li_std_vector.vecstructptr(new StructPtrVector());
|
||||
|
|
@ -28,9 +31,18 @@ public class li_std_vector_runme {
|
|||
v5.add(new Struct(34));
|
||||
v6.add(new Struct(56));
|
||||
|
||||
Struct s = null;
|
||||
if (v4.get(0).getNum() != 12) throw new RuntimeException("v4 test failed");
|
||||
if (v5.get(0).getNum() != 34) throw new RuntimeException("v5 test failed");
|
||||
if (v6.get(0).getNum() != 56) throw new RuntimeException("v6 test failed");
|
||||
|
||||
for (Struct s : v4) {
|
||||
if (s.getNum() != 12) throw new RuntimeException("v4 loop test failed");
|
||||
}
|
||||
for (Struct s : v5) {
|
||||
if (s.getNum() != 34) throw new RuntimeException("v5 loop test failed");
|
||||
}
|
||||
for (Struct s : v6) {
|
||||
if (s.getNum() != 56) throw new RuntimeException("v6 loop test failed");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue