aboutsummaryrefslogtreecommitdiff
path: root/tests/embind/embind_test.cpp
diff options
context:
space:
mode:
authorChad Austin <chad@imvu.com>2013-04-01 19:13:17 -0700
committerJukka Jylänki <jujjyl@gmail.com>2013-04-12 14:27:04 +0300
commitecb01ee4b190a7351e8240df103614e705540f90 (patch)
tree08e83d7f3f96c467681a9736aa29bd2792576a1d /tests/embind/embind_test.cpp
parente5af621a189f729d8c1513f739a6a085adf39842 (diff)
Support accessing value struct and tuple fields and elements via base class pointers.
Diffstat (limited to 'tests/embind/embind_test.cpp')
-rw-r--r--tests/embind/embind_test.cpp32
1 files changed, 15 insertions, 17 deletions
diff --git a/tests/embind/embind_test.cpp b/tests/embind/embind_test.cpp
index 156c8680..229d30d1 100644
--- a/tests/embind/embind_test.cpp
+++ b/tests/embind/embind_test.cpp
@@ -720,15 +720,25 @@ std::map<std::string, int> embind_test_get_string_int_map() {
return m;
};
-struct TupleVector {
+struct Vector {
float x, y, z;
};
-float readTupleVectorZ(const TupleVector& v) {
+struct DummyDataToTestPointerAdjustment {
+ std::string dummy;
+};
+
+struct TupleVector : DummyDataToTestPointerAdjustment, Vector {
+};
+
+struct StructVector : DummyDataToTestPointerAdjustment, Vector {
+};
+
+float readVectorZ(const Vector& v) {
return v.z;
}
-void writeTupleVectorZ(TupleVector& v, float z) {
+void writeVectorZ(Vector& v, float z) {
v.z = z;
}
@@ -754,18 +764,6 @@ TupleVectorTuple emval_test_return_TupleVectorTuple() {
return cvt;
}
-struct StructVector {
- float x, y, z;
-};
-
-float readStructVectorZ(const StructVector& v) {
- return v.z;
-}
-
-void writeStructVectorZ(StructVector& v, float z) {
- v.z = z;
-}
-
StructVector emval_test_return_StructVector() {
StructVector v;
v.x = 1;
@@ -1347,7 +1345,7 @@ EMSCRIPTEN_BINDINGS(tests) {
.element(&TupleVector::x)
.element(&TupleVector::y)
//.element(&TupleVector::z)
- .element(&readTupleVectorZ, &writeTupleVectorZ)
+ .element(&readVectorZ, &writeVectorZ)
;
function("emval_test_return_TupleVector", &emval_test_return_TupleVector);
@@ -1362,7 +1360,7 @@ EMSCRIPTEN_BINDINGS(tests) {
value_struct<StructVector>("StructVector")
.field("x", &StructVector::x)
.field("y", &StructVector::y)
- .field("z", &readStructVectorZ, &writeStructVectorZ)
+ .field("z", &readVectorZ, &writeVectorZ)
;
function("emval_test_return_StructVector", &emval_test_return_StructVector);