MCPcopy Create free account
hub / github.com/OGSR/OGSR-Engine / load_buffer

Method load_buffer

ogsr_engine/COMMON_AI/script_engine.cpp:567–598  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

565}
566
567bool CScriptEngine::load_buffer(lua_State* L, const char* caBuffer, size_t tSize, const char* caScriptName,
568 const char* caNameSpaceName) // KRodin: эта функция форматирует содержимое скрипта используя FILE_HEADER и после этого загружает его в lua
569{
570 int l_iErrorCode = 0;
571 const std::string_view strbuf{caBuffer, tSize};
572 if (strcmp(GlobalNamespace, caNameSpaceName)) // Все скрипты кроме _G
573 {
574 // KRodin: обращаться к _G только с большой буквы! Иначе он загрузится ещё раз и это неизвестно к чему приведёт!
575 // Глобальное пространство инитится один раз после запуска луаджита, и никогда больше.
576 if (!strcmp("_g", caNameSpaceName))
577 return false;
578
579 const std::string script = std::format(FILE_HEADER, caNameSpaceName, strbuf);
580
581 // Log("[CScriptStorage::load_buffer(1)] Loading buffer:");
582 // Log(script.c_str());
583 l_iErrorCode = luaL_loadbuffer(L, script.c_str(), script.size(), caScriptName);
584 }
585 else //_G.script и только он.
586 {
587 // Log("[CScriptStorage::load_buffer(2)] Loading buffer:");
588 // Log(strbuf.c_str());
589 l_iErrorCode = luaL_loadbuffer(L, strbuf.data(), strbuf.size(), caScriptName);
590 }
591 if (l_iErrorCode)
592 {
593 print_output(L, caScriptName, l_iErrorCode);
594 R_ASSERT(false); // НЕ ЗАКОММЕНТИРОВАТЬ!
595 return false;
596 }
597 return true;
598}
599
600bool CScriptEngine::do_file(
601 const char* caScriptName,

Callers

nothing calls this directly

Calls 6

formatEnum · 0.85
luaL_loadbufferFunction · 0.50
print_outputFunction · 0.50
c_strMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected