Skip to content

Commit c5d348f

Browse files
committed
Fix DFHACK_EXPORT prefixed methods
1 parent a8eab94 commit c5d348f

File tree

5 files changed

+105
-33
lines changed

5 files changed

+105
-33
lines changed

dist/library/modules/dfhack.lua

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,69 @@
44
---@class dfhack_module
55
dfhack = {}
66

7+
---@return string
78
function dfhack.getOSType() end
89

10+
---@return integer
911
function dfhack.getArchitecture() end
1012

13+
---@return string
1114
function dfhack.getArchitectureName() end
1215

16+
---@return string
1317
function dfhack.getDFVersion() end
1418

19+
---@return string
1520
function dfhack.getDFPath() end
1621

22+
---@return integer
1723
function dfhack.getTickCount() end
1824

25+
---@return string
1926
function dfhack.getHackPath() end
2027

28+
---@return boolean
2129
function dfhack.isWorldLoaded() end
2230

31+
---@return boolean
2332
function dfhack.isMapLoaded() end
2433

34+
---@return boolean
2535
function dfhack.isSiteLoaded() end
2636

2737
function dfhack.TranslateName() end
2838

29-
function dfhack.df2utf() end
39+
---@param s string
40+
---@return string
41+
function dfhack.df2utf(s) end
3042

31-
function dfhack.utf2df() end
43+
---@param s string
44+
---@return string
45+
function dfhack.utf2df(s) end
3246

33-
function dfhack.df2console() end
47+
---@param s string
48+
---@return string
49+
function dfhack.df2console(s) end
3450

35-
function dfhack.upperCp437() end
51+
---@param s string
52+
---@return string
53+
function dfhack.upperCp437(s) end
3654

37-
function dfhack.lowerCp437() end
55+
---@param s string
56+
---@return string
57+
function dfhack.lowerCp437(s) end
3858

39-
function dfhack.toSearchNormalized() end
59+
---@param s string
60+
---@return string
61+
function dfhack.toSearchNormalized(s) end
4062

41-
function dfhack.capitalizeStringWords() end
63+
---@param s string
64+
---@return string
65+
function dfhack.capitalizeStringWords(s) end
4266

43-
function dfhack.addCommandToHistory() end
67+
---@param id string
68+
---@param srcfile string
69+
---@param command string
70+
---@return nil
71+
function dfhack.addCommandToHistory(id, srcfile, command) end
4472

dist/library/modules/gui.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ function dfhack.gui.getAnyStockpile(top) end
7777
---@return plant
7878
function dfhack.gui.getAnyPlant(top) end
7979

80-
function dfhack.gui.writeToGamelog() end
80+
---@param message string
81+
---@return nil
82+
function dfhack.gui.writeToGamelog(message) end
8183

8284
---@param pause boolean|nil
8385
---@return nil

dist/library/modules/job.lua

Lines changed: 54 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,27 @@
44
---@class job_module
55
dfhack.job = {}
66

7-
function dfhack.job.attachJobItem() end
7+
---@param job job
8+
---@param item item
9+
---@param role job_item_ref::T_role
10+
---@param filteridx integer
11+
---@param insertidx integer
12+
---@return boolean
13+
function dfhack.job.attachJobItem(job, item, role, filteridx, insertidx) end
814

9-
function dfhack.job.cloneJobStruct() end
15+
---@param job job
16+
---@param keepEverything boolean|nil
17+
---@return job
18+
function dfhack.job.cloneJobStruct(job, keepEverything) end
1019

11-
function dfhack.job.printItemDetails() end
20+
---@param item job_item
21+
---@param idx integer
22+
---@return nil
23+
function dfhack.job.printItemDetails(item, idx) end
1224

13-
function dfhack.job.printJobDetails() end
25+
---@param job job
26+
---@return nil
27+
function dfhack.job.printJobDetails(job) end
1428

1529
---@param job job
1630
---@param type general_ref_type
@@ -22,16 +36,29 @@ function dfhack.job.getGeneralRef(job, type) end
2236
---@return specific_ref
2337
function dfhack.job.getSpecificRef(job, type) end
2438

25-
function dfhack.job.getHolder() end
39+
---@param job job
40+
---@return building
41+
function dfhack.job.getHolder(job) end
2642

27-
function dfhack.job.getWorker() end
43+
---@param job job
44+
---@return unit
45+
function dfhack.job.getWorker(job) end
2846

29-
function dfhack.job.setJobCooldown() end
47+
---@param workshop building
48+
---@param worker unit
49+
---@param cooldown integer
50+
---@return nil
51+
function dfhack.job.setJobCooldown(workshop, worker, cooldown) end
3052

31-
function dfhack.job.removeWorker() end
53+
---@param job job
54+
---@param cooldown integer
55+
---@return boolean
56+
function dfhack.job.removeWorker(job, cooldown) end
3257

58+
---@return nil
3359
function dfhack.job.checkBuildingsNow() end
3460

61+
---@return nil
3562
function dfhack.job.checkDesignationsNow() end
3663

3764
---@param item job_item
@@ -51,13 +78,27 @@ function dfhack.job.isSuitableMaterial(item, mattype, matindex, itype) end
5178
---@return string
5279
function dfhack.job.getName(job) end
5380

54-
function dfhack.job.linkIntoWorld() end
81+
---@param job job
82+
---@param newid boolean|nil
83+
---@return boolean
84+
function dfhack.job.linkIntoWorld(job, newid) end
5585

56-
function dfhack.job.removePostings() end
86+
---@param job job
87+
---@param removeall boolean|nil
88+
---@return boolean
89+
function dfhack.job.removePostings(job, removeall) end
5790

58-
function dfhack.job.disconnectJobItem() end
91+
---@param job job
92+
---@param itemref job_item_ref
93+
---@return nil
94+
function dfhack.job.disconnectJobItem(job, itemref) end
5995

60-
function dfhack.job.disconnectJobGeneralRef() end
96+
---@param job job
97+
---@param ref general_ref
98+
---@return boolean
99+
function dfhack.job.disconnectJobGeneralRef(job, ref) end
61100

62-
function dfhack.job.removeJob() end
101+
---@param job job
102+
---@return boolean
103+
function dfhack.job.removeJob(job) end
63104

lib/cpp.rb

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,9 @@ def parse_type(string)
5353
end
5454

5555
def sanitize(string)
56-
string.gsub(/[^A-Za-z0-9]/, '')
56+
return nil unless string
57+
58+
string.gsub(/[^A-Za-z0-9]/, '').strip
5759
end
5860
end
5961
end

lib/generate.rb

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,16 @@ def parse_cpp_modules(files)
4545

4646
output << "---@class #{module_name}_module\n"
4747
prefix = module_name == 'dfhack' ? '' : 'dfhack.'
48+
namespace = module_name == 'dfhack' ? '' : "#{module_name.capitalize}::"
4849
output << "#{prefix}#{module_name} = {}\n\n"
4950

5051
cpp_module.scan(/(?:WRAP|WRAPM)\((.+)?\),?/) do |function_name,|
5152
function_name = Regexp.last_match(1) if function_name =~ /,\s?(\S+)/
52-
signature = "#{module_name.capitalize}::#{function_name}"
53+
signature = "#{namespace}#{function_name}"
5354

54-
module_file[/^(?:static)?(\S+)\s+\S?#{signature}\s?\(([^)]+)?\)/]
55-
# binding.irb if function_name == 'dhasSupport'
55+
module_file[/^(?:static\s)?(?:DFHACK_EXPORT\s)?(\S+).*?#{signature}\s?\(([^)]+)?\)/]
5656
return_type = DFHackLuaDefinitions::CPP.parse_type(Regexp.last_match(1))
5757
arguments = Regexp.last_match(2)&.gsub(/const\s|[*&]/, '')&.split(',')&.map(&:strip)
58-
# binding.irb if function_name == 'chdirfun'
5958

6059
arguments = arguments&.map do |argument|
6160
type, name = argument.split(' ')
@@ -226,13 +225,13 @@ def generate_annotations
226225
lua_api = './dfhack/library/LuaApi.cpp'
227226
parse_cpp_modules(lua_api)
228227

229-
print "Parsing DFHack Lua library\n"
230-
library_files = Dir.glob('./dfhack/library/lua/**/*.lua')
231-
parse_lua_files(library_files)
228+
# print "Parsing DFHack Lua library\n"
229+
# library_files = Dir.glob('./dfhack/library/lua/**/*.lua')
230+
# parse_lua_files(library_files)
232231

233-
print "Parsing DF-Structures XML files\n"
234-
structure_files = Dir.glob('./df-structures/df.*.xml')
235-
parse_xml_files(structure_files)
232+
# print "Parsing DF-Structures XML files\n"
233+
# structure_files = Dir.glob('./df-structures/df.*.xml')
234+
# parse_xml_files(structure_files)
236235
end
237236

238237
generate_annotations if $PROGRAM_NAME == __FILE__

0 commit comments

Comments
 (0)