vallode
7b3c03d1fd
Fix usage hint for _field method
2023-11-14 11:23:28 +01:00
lethosor
574fa08747
Add index_enum, ref_target
2023-08-12 22:12:45 -04:00
lethosor
396b2d7832
Adapt tests to dynamically-generated field info
...
No need to freeze the field info tables anymore
2023-08-12 21:59:14 -04:00
lethosor
fc6d4caa8e
Dynamically generate field info in __index
...
Constructing the complete tables when the types were initialized made it
impossible to populate the "type" field, because not all types had been added to
the global type tables yet.
2023-08-12 20:18:22 -04:00
lethosor
4a9a83daa5
Expose more fields, refactor
2023-08-12 20:01:03 -04:00
lethosor
29f99733fe
Add tests
2023-08-12 19:04:51 -04:00
lethosor
92549f3c56
Add _fields table to struct types
2023-08-12 19:04:49 -04:00
lethosor
6bd0819635
Fix crash in df.global:_field() when global address is unknown
...
and add a test
2023-08-11 02:31:54 -04:00
Ben Lubar
c06d1f8e52
tagged union support for lua ( #1818 )
2021-03-30 15:55:06 -05:00
lethosor
f0ad730a37
Lua: Fix off-by-one preventing accessing last df-other-vectors item by ID, add tests
2020-07-26 02:11:27 -04:00
lethosor
4891b4fd5e
Fix indexing primitive refs with integers (broken in #1543 ), add tests
...
Apparently lua_tostring has the side effect of *converting* numbers to strings
2020-07-25 20:22:52 -04:00
lethosor
df6f3a0455
Mark ref_target as a metafield so meta_primitive_newindex fails properly
...
unit:_field('hist_figure_id').ref_target = 4 now fails with "Cannot write field int32_t.ref_target: builtin property or method" instead of "not found"
2020-07-14 02:31:18 -04:00
lethosor
a44a2e2298
Merge branch 'develop' into lua-ref-target
2020-07-14 01:31:23 -04:00
Ben Lubar
6c20fe4c80
implement df-other-vectors-type for lua
2020-05-09 18:28:40 -05:00
lethosor
2108c2363d
Use strcmp
2020-04-28 01:21:11 -04:00
lethosor
125f4b129b
Add ref_target attribute to primitive field references
2020-04-09 00:02:07 -04:00
Ben Lubar
b29d009b14
update structures; implement struct_field_info_extra
2020-03-21 13:21:35 -05:00
Ben Lubar
37e7bed779
add df.global:_field method. add test case to check for overlapping globals.
2020-03-20 09:41:58 -05:00
Ben Lubar
508ab79af2
document where tagged unions should be implemented for Lua
2020-03-06 16:33:02 -06:00
Ben Lubar
a30678cee3
subclass struct_identity for unions
2020-02-29 13:11:23 -06:00
lethosor
c1e2633e17
Refactor DFHack exception classes
...
Move implementations out of MiscUtils.cpp to Error.cpp and make what() return a
more useful description
2018-02-05 19:18:35 -05:00
lethosor
0332a5c25a
Replace a call to abort() with a VTableMissing exception
...
This makes some scripts crash less when the viewscreen vtable is unavailable,
for example.
2017-12-25 20:13:15 -05:00
lethosor
d280863bc8
Avoid iterating over "has-bad-pointers" fields of IDTYPE_STRUCT and others
...
dfhack/df-structures@4c224dd205
2017-08-05 21:34:16 -04:00
lethosor
fa1adbbac4
Allow lua integer writes to accept anything that can be converted to an integer
...
May address #1044
2017-03-18 17:55:51 -04:00
lethosor
3bae9d9d65
Lua API: Make bitfield.whole return an integer, not a decimal
2016-12-10 12:27:43 -05:00
lethosor
9f541481ea
Fix some warnings with GCC -Wall
2016-10-15 00:37:18 -04:00
lethosor
7b7f7a1b79
Fix support for integer fields in Lua 5.3
2016-07-28 16:36:02 -04:00
Vitaly Pronkin
fe18f176f7
More 64-bit fixes
...
Cherry-picked from 7eb3ba6
- Lua update already done in e2c6350
, 4dd411e
- Excluded library/modules/Buildings.cpp
2016-07-26 23:47:53 -04:00
lethosor
29a0aee44c
Implement strnlen on OS X <= 10.6
...
Fixes #182
2015-08-24 17:51:42 -04:00
lethosor
2aba2da56d
Avoid DataStaticsFields dependency on PluginManager.h
2015-08-11 22:59:19 -04:00
Alexander Gavrilov
6046d68639
Support std::fstream in data structures and add file_compressorst to xml.
...
One tricky thing is that fstream does not have operator=, so the new
file_compressorst requires a manually implemented one that skips it.
2014-09-24 22:47:04 +04:00
Petr Mrázek
8812238bf6
Update license, add contributors file, bump release number
2012-09-30 04:03:37 +02:00
Alexander Gavrilov
e0097d8d43
Fix access to unnamed bits in bitfields, and allow hook.apply(false)
2012-09-01 11:25:24 +04:00
Alexander Gavrilov
30f71ff510
Implement support for lua-backed viewscreens.
2012-08-19 14:27:44 +04:00
Alexander Gavrilov
c6694e386f
Add rather inefficient type_identity wrapping for std::set.
...
Accessing an element is O(N), as if it was walking a list.
2012-08-18 14:34:20 +04:00
Alexander Gavrilov
149f175909
Make primitive refs (i.e. pointers to numbers, etc) behave as arrays.
2012-06-13 22:40:39 +04:00
Alexander Gavrilov
5afe2ca002
Update dfhack for specific_ref.
2012-05-03 11:47:04 +04:00
Alexander Gavrilov
2303a25bde
Implement unconstructed building instance creation and linking into world.
...
For more flexibility, the base api is split into 3 phases:
alloc, setSize, and construct. No support for non-actual
buildings like stockpiles and activity zones at the moment.
2012-04-29 21:07:39 +04:00
Alexander Gavrilov
0a6982f404
Enable warnings correctly on linux and fix a lot of them.
2012-04-20 13:30:37 +04:00
Alexander Gavrilov
378a1fb914
Support the '#' string as index for wrapper vector insert at end.
2012-04-17 12:15:45 +04:00
Alexander Gavrilov
14709e5d45
Add an official core lua context, and allow plugins to send events to it.
...
- This context requires core suspend lock and asserts it in a few places.
- Special 'event' objects are introduced. They can be invoked as
functions, in which case they iterate all their fields and call
them as functions. Errors are printed and consumed.
- When a plugin is opened by the core context, events registered in
a special array are linked to it. The system is organized so as to
avoid even trying to pass the event to lua if the module isn't loaded.
2012-04-15 19:09:25 +04:00
Alexander Gavrilov
cb49c92b99
Allow plugins to export functions to lua with safe reload support.
...
- To ensure reload safety functions have to be wrapped. Every call
checks the loaded state and locks a mutex in Plugin. If the plugin
is unloaded, calling its functions throws a lua error. Therefore,
plugins may not create closures or export yieldable functions.
- The set of function argument and return types supported by
LuaWrapper is severely limited when compared to being compiled
inside the main library.
Currently supported types: numbers, bool, std::string, df::foo,
df::foo*, std::vector<bool>, std::vector<df::foo*>.
- To facilitate postponing initialization until after all plugins
have been loaded, the core sends a SC_CORE_INITIALIZED event.
- As an example, the burrows plugin now exports its functions.
2012-04-14 19:44:07 +04:00
Alexander Gavrilov
61245711f7
Export a few maps functions to lua.
2012-04-11 16:20:16 +04:00
Alexander Gavrilov
0e0740fddf
Stop printall(df.global) from breaking if there are unknown addresses.
2012-04-10 10:34:03 +04:00
Alexander Gavrilov
9eed9f0d24
Wrap a few utility functions defined on the c++ side for lua.
2012-04-05 19:55:59 +04:00
Alexander Gavrilov
3afed43cdb
Experimental: try wrapping a dfhack api function.
2012-04-05 11:59:39 +04:00
Alexander Gavrilov
e3d50b9b04
Optimize wrapper: use pointers instead of strings as most frequent keys.
2012-04-01 18:34:04 +04:00
Alexander Gavrilov
9384f0c842
Update lua to 5.2 and fix obvious breakage due to obsolete api.
2012-03-31 12:11:43 +04:00
Alexander Gavrilov
a9b7c74a23
Allow assigning NULL lightuserdata to pointers, and export a global.
...
Otherwise there is no way to specify NULL via recursive lua table assign.
2012-03-29 14:47:33 +04:00
Alexander Gavrilov
85c91c92d8
Implement __pairs and __ipairs for DF objects.
...
Structs enumerate fields in memory order in pairs().
Containers & biftields enumerate int indexes in ipairs, and
string keys in pairs (i.e. using index-enum for arrays).
2012-03-29 14:39:13 +04:00