summaryrefslogtreecommitdiff
path: root/library/LuaWrapper.cpp
diff options
context:
space:
mode:
authorAlexander Gavrilov2012-03-22 10:56:32 +0400
committerAlexander Gavrilov2012-03-22 10:56:32 +0400
commit27824642d90a8bca445af4e6f5d51a89d8317708 (patch)
treec30921b54f0971c37c775f11aeabaa258fe5b217 /library/LuaWrapper.cpp
parentad10303cecd1e60a2e50b85a5f6f08656ff1bbf9 (diff)
downloaddfhack-27824642d90a8bca445af4e6f5d51a89d8317708.tar.gz
dfhack-27824642d90a8bca445af4e6f5d51a89d8317708.tar.bz2
dfhack-27824642d90a8bca445af4e6f5d51a89d8317708.tar.xz
Minor refactoring of container indexing and object allocation.
Diffstat (limited to 'library/LuaWrapper.cpp')
-rw-r--r--library/LuaWrapper.cpp25
1 files changed, 7 insertions, 18 deletions
diff --git a/library/LuaWrapper.cpp b/library/LuaWrapper.cpp
index a7d83047..770f8f5a 100644
--- a/library/LuaWrapper.cpp
+++ b/library/LuaWrapper.cpp
@@ -265,29 +265,29 @@ int container_identity::lua_item_count(lua_State *state, void *ptr)
int container_identity::lua_item_read(lua_State *state, int fname_idx, void *ptr, int idx)
{
- void *pitem = item_pointer(ptr, idx);
auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
+ void *pitem = item_pointer(id, ptr, idx);
return id->lua_read(state, fname_idx, pitem);
}
void container_identity::lua_item_write(lua_State *state, int fname_idx, void *ptr, int idx, int val_index)
{
- void *pitem = item_pointer(ptr, idx);
auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
+ void *pitem = item_pointer(id, ptr, idx);
id->lua_write(state, fname_idx, pitem, val_index);
}
int ptr_container_identity::lua_item_read(lua_State *state, int fname_idx, void *ptr, int idx)
{
- void *pitem = item_pointer(ptr, idx);
auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
+ void *pitem = item_pointer(&df::identity_traits<void*>::identity, ptr, idx);
return df::pointer_identity::lua_read(state, fname_idx, pitem, id);
}
void ptr_container_identity::lua_item_write(lua_State *state, int fname_idx, void *ptr, int idx, int val_index)
{
- void *pitem = item_pointer(ptr, idx);
auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
+ void *pitem = item_pointer(&df::identity_traits<void*>::identity, ptr, idx);
df::pointer_identity::lua_write(state, fname_idx, pitem, id, val_index);
}
@@ -307,25 +307,12 @@ void bit_container_identity::lua_item_write(lua_State *state, int fname_idx, voi
field_error(state, fname_idx, "boolean or number expected", "write");
}
-int df::buffer_container_identity::lua_item_read(lua_State *state, int fname_idx, void *ptr, int idx)
-{
- auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
- void *pitem = ((uint8_t*)ptr) + idx * id->byte_size();
- return id->lua_read(state, fname_idx, pitem);
-}
-
-void df::buffer_container_identity::lua_item_write(lua_State *state, int fname_idx, void *ptr, int idx, int val_index)
-{
- auto id = (type_identity*)lua_touserdata(state, UPVAL_ITEM_ID);
- void *pitem = ((uint8_t*)ptr) + idx * id->byte_size();
- id->lua_write(state, fname_idx, pitem, val_index);
-}
-
/* */
static int change_error(lua_State *state)
{
luaL_error(state, "Attempt to change a read-only table.\n");
+ return 0;
}
/**
@@ -618,6 +605,8 @@ static int read_field(lua_State *state, const struct_field_info *field, void *pt
case struct_field_info::END:
return 0;
}
+
+ return 0;
}
static void write_field(lua_State *state, const struct_field_info *field, void *ptr, int value_idx)