Skip to content

Commit 428b7b4

Browse files
authored
Merge pull request #263 from Architector4/patch-luabind-ownership
LuaBindings - fix some ownership semantics
2 parents 87f1a49 + 9bd0609 commit 428b7b4

File tree

3 files changed

+20
-19
lines changed

3 files changed

+20
-19
lines changed

Source/Lua/LuaBindingsEntities.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, Entity) {
2121
.property("RandomWeight", &Entity::GetRandomWeight)
2222
.property("Groups", &Entity::GetGroups, luabind::return_stl_iterator)
2323

24-
.def("Clone", &LuaAdaptersEntityClone::CloneEntity)
24+
.def("Clone", &LuaAdaptersEntityClone::CloneEntity, luabind::adopt(luabind::result))
2525
.def("Reset", &Entity::Reset)
2626
.def("GetModuleAndPresetName", &Entity::GetModuleAndPresetName)
2727
.def("AddToGroup", &Entity::AddToGroup)
@@ -252,8 +252,8 @@ LuaBindingRegisterFunctionDefinitionForType(EntityLuaBindings, Actor) {
252252
.def("RemoveInventoryItem", (void(Actor::*)(const std::string&)) & Actor::RemoveInventoryItem)
253253
.def("RemoveInventoryItem", (void(Actor::*)(const std::string&, const std::string&)) & Actor::RemoveInventoryItem)
254254
.def("RemoveInventoryItemAtIndex", &Actor::RemoveInventoryItemAtIndex, luabind::adopt(luabind::return_value))
255-
.def("SwapNextInventory", &Actor::SwapNextInventory)
256-
.def("SwapPrevInventory", &Actor::SwapPrevInventory)
255+
.def("SwapNextInventory", &Actor::SwapNextInventory, luabind::adopt(luabind::result) + luabind::adopt(_2))
256+
.def("SwapPrevInventory", &Actor::SwapPrevInventory, luabind::adopt(luabind::result) + luabind::adopt(_2))
257257
.def("DropAllInventory", &Actor::DropAllInventory)
258258
.def("DropAllGold", &Actor::DropAllGold)
259259
.def("IsInventoryEmpty", &Actor::IsInventoryEmpty)

Source/Lua/LuaBindingsGUI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ LuaBindingRegisterFunctionDefinitionForType(GUILuaBindings, SceneEditorGUI) {
7272

7373
.def("SetCursorPos", &SceneEditorGUI::SetCursorPos)
7474
.def("GetCurrentObject", &SceneEditorGUI::GetCurrentObject)
75-
.def("SetCurrentObject", &SceneEditorGUI::SetCurrentObject)
75+
.def("SetCurrentObject", &SceneEditorGUI::SetCurrentObject, luabind::adopt(_2))
7676
.def("SetModuleSpace", &SceneEditorGUI::SetModuleSpace)
7777
.def("SetNativeTechModule", &SceneEditorGUI::SetNativeTechModule)
7878
.def("SetForeignCostMultiplier", &SceneEditorGUI::SetForeignCostMultiplier)

Source/Lua/LuaBindingsSystem.cpp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Make sure that binding definition files are always set to NOT use pre-compiled headers and conformance mode (/permissive) otherwise everything will be on fire!
22

33
#include "LuaBindingRegisterDefinitions.h"
4+
#include "return_reference_to_policy.hpp"
45

56
using namespace RTE;
67

@@ -206,30 +207,30 @@ LuaBindingRegisterFunctionDefinitionForType(SystemLuaBindings, Vector) {
206207

207208
.def("MagnitudeIsGreaterThan", &Vector::MagnitudeIsGreaterThan)
208209
.def("MagnitudeIsLessThan", &Vector::MagnitudeIsLessThan)
209-
.def("SetMagnitude", &Vector::SetMagnitude)
210+
.def("SetMagnitude", &Vector::SetMagnitude, luabind::return_reference_to(_1))
210211
.def("GetXFlipped", &Vector::GetXFlipped)
211212
.def("GetYFlipped", &Vector::GetYFlipped)
212-
.def("CapMagnitude", &Vector::CapMagnitude)
213-
.def("ClampMagnitude", &Vector::ClampMagnitude)
214-
.def("FlipX", &Vector::FlipX)
215-
.def("FlipY", &Vector::FlipY)
213+
.def("CapMagnitude", &Vector::CapMagnitude, luabind::return_reference_to(_1))
214+
.def("ClampMagnitude", &Vector::ClampMagnitude, luabind::return_reference_to(_1))
215+
.def("FlipX", &Vector::FlipX, luabind::return_reference_to(_1))
216+
.def("FlipY", &Vector::FlipY, luabind::return_reference_to(_1))
216217
.def("IsZero", &Vector::IsZero)
217218
.def("IsOpposedTo", &Vector::IsOpposedTo)
218219
.def("Dot", &Vector::Dot)
219220
.def("Cross", &Vector::Cross)
220-
.def("Round", &Vector::Round)
221-
.def("ToHalf", &Vector::ToHalf)
222-
.def("Floor", &Vector::Floor)
223-
.def("Ceiling", &Vector::Ceiling)
224-
.def("Normalize", &Vector::Normalize)
225-
.def("Perpendicularize", &Vector::Perpendicularize)
221+
.def("Round", &Vector::Round, luabind::return_reference_to(_1))
222+
.def("ToHalf", &Vector::ToHalf, luabind::return_reference_to(_1))
223+
.def("Floor", &Vector::Floor, luabind::return_reference_to(_1))
224+
.def("Ceiling", &Vector::Ceiling, luabind::return_reference_to(_1))
225+
.def("Normalize", &Vector::Normalize, luabind::return_reference_to(_1))
226+
.def("Perpendicularize", &Vector::Perpendicularize, luabind::return_reference_to(_1))
226227
.def("Reset", &Vector::Reset)
227-
.def("RadRotate", &Vector::RadRotate)
228-
.def("DegRotate", &Vector::DegRotate)
228+
.def("RadRotate", &Vector::RadRotate, luabind::return_reference_to(_1))
229+
.def("DegRotate", &Vector::DegRotate, luabind::return_reference_to(_1))
229230
.def("GetRadRotatedCopy", &Vector::GetRadRotatedCopy)
230231
.def("GetDegRotatedCopy", &Vector::GetDegRotatedCopy)
231-
.def("AbsRotateTo", &Vector::AbsRotateTo)
232-
.def("SetXY", &Vector::SetXY);
232+
.def("AbsRotateTo", &Vector::AbsRotateTo, luabind::return_reference_to(_1))
233+
.def("SetXY", &Vector::SetXY, luabind::return_reference_to(_1));
233234
}
234235

235236
LuaBindingRegisterFunctionDefinitionForType(SystemLuaBindings, PathRequest) {

0 commit comments

Comments
 (0)