MCPcopy Create free account
hub / github.com/PolygonTek/BlueshiftEngine / TestCallByReference

Function TestCallByReference

Source/TestBase/TestLua.cpp:168–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

166};
167
168static void TestCallByReference(LuaCpp::State &lua) {
169 lua["XXX"].SetClass<XXX>();
170 lua["XXX"].AddClassMembers<XXX>("x", &XXX::x);
171
172 lua["YYY"].SetClass<YYY>();
173 lua["YYY"].AddClassMembers<YYY>("y", &YYY::y);
174
175 lua(R"(
176 function exchange_value(x, y)
177 local tmp = x:x()
178 x:set_x(y:y())
179 y:set_y(tmp)
180 end
181 )");
182
183 XXX x = { 1 };
184 YYY y = { 2 };
185 lua["exchange_value"](x, y); // call by lvalue reference
186 assert(x.x == 2 && y.y == 1);
187
188 lua["exchange_value"](x, YYY{ 3 }); // call by lvaue / rvalue reference
189 assert(x.x == 3);
190}
191
192static void TestVec3(LuaCpp::State &lua) {
193 auto luaVec3 = lua["Vec3"];

Callers 1

TestLuaFunction · 0.85

Calls 1

luaClass · 0.50

Tested by

no test coverage detected