Получение информации API от C до Lua? - PullRequest
0 голосов
/ 25 сентября 2010

как я могу получить список всех функций C API с помощью Lua? Например, в игре есть множество функций C (Crysis), которые можно вызвать с помощью

Lua: g_gameRules.game:FunctionInC()

Я знаю много функций, но как мне получить все доступные функции?

Ответы [ 3 ]

1 голос
/ 27 сентября 2010

Может быть или не быть простым способом перечислить все функции языка Си.

На самом деле g_gameRules.game может содержать функции, но это было бы необычно.Что-то вроде следующего перечислит эти функции:

for k,v in pairs(g_gameRules.game) do if print(k,v) end

Скорее всего, g_gameRules.game будет иметь мета-таблицу с записью __index, которая является либо таблицей, либо функцией.Если запись __index представляет собой таблицу, в следующем списке будут перечислены все функции.

for k,v in pairs(getmetatable(g_gameRules.game).__index) do print(k,v) end

Это будет определять только имена функций, список параметров по-прежнему будет неизвестен.

Если, однако, значение __index для мета-таблицы является функцией, то не будет простого способа перечислить функции.

1 голос
/ 18 ноября 2011
for i,v in pairs(getmetatable(g_gameRules).__index) do 
    System.LogAlways(i.." : "..v); 
end

OR

    for i,v in pairs(g_gameRules) do 
    System.LogAlways(i.." : "..v); 
end
1 голос
/ 26 сентября 2010

Если g_gameRules.game - таблица, просмотрите ее в поисках функций. Если это пользовательские данные, загляните внутрь их метатаблицы. (Также, если это таблица.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...