LuaModule

class rlogic::LuaModule : public rlogic::LogicObject

LuaModule represents Lua source code in form of a reusable Lua module which can be used in Lua scripts of one or more rlogic::LuaScript instances. Lua modules are expected to follow these guidelines https://www.tutorialspoint.com/lua/lua_modules.htm and have some limitations:

  • the name of the module given when creating it is only used to differentiate between LuaModule instances on Ramses logic API, not to access them from a script or to resolve a file on a filesystem

  • the module is not supposed to be resolved with the ‘require’ keyword in Lua scripts where used (due to security concerns) but must be provided explicitly when creating rlogic::LuaScript instance rlogic::LuaModule source code is loaded into its own Lua environment and is accessible in other rlogic::LuaScript and/or LuaModule instances in their own environments under the alias name given when creating those.

LuaModule can also be used to help provide property types for rlogic::LuaScript interface declarations, for example a module with a ‘struct’ type:

local mytypes = {}
function mytypes.mystruct()
    return {
        name = STRING,
        address =
        {
            street = STRING,
            number = INT
        }
    }
end
return mytypes
And script using above module to define its interface:
function interface()
    IN.input_struct = mytypes.mystruct()
    OUT.output_struct = mytypes.mystruct()
end

The labels (INT, FLOAT, etc.) are reserved keywords and must not be overwritten for other purposes (e.g. name of variable or function).

Public Functions

~LuaModule() noexcept override

Destructor of LuaModule

LuaModule(const LuaModule&) = delete

Copy Constructor of LuaModule is deleted because LuaModule is not supposed to be copied

LuaModule(LuaModule&&) = delete

Move Constructor of LuaModule is deleted because LuaModule is not supposed to be moved

LuaModule &operator=(const LuaModule&) = delete

Assignment operator of LuaModule is deleted because LuaModule is not supposed to be copied

LuaModule &operator=(LuaModule&&) = delete

Move assignment operator of LuaModule is deleted because LuaModule is not supposed to be moved

LuaModule(std::unique_ptr<internal::LuaModuleImpl> impl) noexcept

Internal constructor of LuaModule. Use rlogic::LogicEngine::createLuaModule for user code.

Parameters
  • impl: implementation details of the LuaModule

Public Members

internal::LuaModuleImpl &m_impl

Implementation detail of LuaModule