@@ -124,27 +124,38 @@ void LuaState::open_libraries(BitField<Library> libraries) {
124124 if (libraries.has_flag (GODOT_ENUMS)) {
125125 lua_state.require (module_names::enums, &luaopen_godot_enums, false );
126126 }
127+ if (libraries.has_flag (GODOT_LOCAL_PATHS)) {
128+ lua_state.require (module_names::local_paths, &luaopen_godot_local_paths, false );
129+ }
127130 }
128131}
129132
130133Ref<LuaTable> LuaState::create_table (const Dictionary& initial_values) {
131134 return memnew (LuaTable (to_table (lua_state, initial_values)));
132135}
133136
137+ Variant LuaState::load_buffer (const PackedByteArray& chunk, const String& chunkname, LoadMode mode, LuaTable *env) {
138+ return ::luagdextension::load_buffer (lua_state, chunk, chunkname, (sol::load_mode) mode, env);
139+ }
140+
134141Variant LuaState::load_string (const String& chunk, const String& chunkname, LuaTable *env) {
135- return ::luagdextension::load_string (lua_state, chunk, chunkname, env);
142+ return ::luagdextension::load_buffer (lua_state, chunk. to_utf8_buffer () , chunkname, sol::load_mode::text , env);
136143}
137144
138- Variant LuaState::load_file (const String& filename, int buffer_size, LuaTable *env) {
139- return ::luagdextension::load_file (lua_state, filename, buffer_size, env);
145+ Variant LuaState::load_file (const String& filename, LoadMode mode, LuaTable *env) {
146+ return ::luagdextension::load_file (lua_state, filename, (sol::load_mode) mode, env);
147+ }
148+
149+ Variant LuaState::do_buffer (const PackedByteArray& chunk, const String& chunkname, LoadMode mode, LuaTable *env) {
150+ return ::luagdextension::do_buffer (lua_state, chunk, chunkname, (sol::load_mode) mode, env);
140151}
141152
142153Variant LuaState::do_string (const String& chunk, const String& chunkname, LuaTable *env) {
143- return ::luagdextension::do_string (lua_state, chunk, chunkname, env);
154+ return ::luagdextension::do_buffer (lua_state, chunk. to_utf8_buffer () , chunkname, sol::load_mode::text , env);
144155}
145156
146- Variant LuaState::do_file (const String& filename, int buffer_size , LuaTable *env) {
147- return ::luagdextension::do_file (lua_state, filename, buffer_size , env);
157+ Variant LuaState::do_file (const String& filename, LoadMode mode , LuaTable *env) {
158+ return ::luagdextension::do_file (lua_state, filename, (sol::load_mode) mode , env);
148159}
149160
150161LuaTable *LuaState::get_globals () const {
@@ -187,17 +198,25 @@ void LuaState::_bind_methods() {
187198 BIND_BITFIELD_FLAG (GODOT_SINGLETONS);
188199 BIND_BITFIELD_FLAG (GODOT_CLASSES);
189200 BIND_BITFIELD_FLAG (GODOT_ENUMS);
201+ BIND_BITFIELD_FLAG (GODOT_LOCAL_PATHS);
190202 BIND_BITFIELD_FLAG (GODOT_ALL_LIBS);
191203
192204 BIND_BITFIELD_FLAG (ALL_LIBS);
193205
206+ // LoadMode enum
207+ BIND_ENUM_CONSTANT (LOAD_MODE_ANY);
208+ BIND_ENUM_CONSTANT (LOAD_MODE_TEXT);
209+ BIND_ENUM_CONSTANT (LOAD_MODE_BINARY);
210+
194211 // Methods
195212 ClassDB::bind_method (D_METHOD (" open_libraries" , " libraries" ), &LuaState::open_libraries, DEFVAL (BitField<Library>(ALL_LIBS)));
196213 ClassDB::bind_method (D_METHOD (" create_table" , " initial_values" ), &LuaState::create_table, DEFVAL (Dictionary ()));
214+ ClassDB::bind_method (D_METHOD (" load_buffer" , " chunk" , " chunkname" , " mode" , " env" ), &LuaState::load_buffer, DEFVAL (" " ), DEFVAL (LOAD_MODE_ANY), DEFVAL (nullptr ));
197215 ClassDB::bind_method (D_METHOD (" load_string" , " chunk" , " chunkname" , " env" ), &LuaState::load_string, DEFVAL (" " ), DEFVAL (nullptr ));
198- ClassDB::bind_method (D_METHOD (" load_file" , " filename" , " buffer_size" , " env" ), &LuaState::load_file, DEFVAL (1024 ), DEFVAL (nullptr ));
216+ ClassDB::bind_method (D_METHOD (" load_file" , " filename" , " mode" , " env" ), &LuaState::load_file, DEFVAL (LOAD_MODE_ANY), DEFVAL (nullptr ));
217+ ClassDB::bind_method (D_METHOD (" do_buffer" , " chunk" , " chunkname" , " mode" , " env" ), &LuaState::do_buffer, DEFVAL (" " ), DEFVAL (LOAD_MODE_ANY), DEFVAL (nullptr ));
199218 ClassDB::bind_method (D_METHOD (" do_string" , " chunk" , " chunkname" , " env" ), &LuaState::do_string, DEFVAL (" " ), DEFVAL (nullptr ));
200- ClassDB::bind_method (D_METHOD (" do_file" , " filename" , " buffer_size " , " env" ), &LuaState::do_file, DEFVAL (1024 ), DEFVAL (nullptr ));
219+ ClassDB::bind_method (D_METHOD (" do_file" , " filename" , " mode " , " env" ), &LuaState::do_file, DEFVAL (LOAD_MODE_ANY ), DEFVAL (nullptr ));
201220 ClassDB::bind_method (D_METHOD (" get_globals" ), &LuaState::get_globals);
202221 ClassDB::bind_method (D_METHOD (" get_registry" ), &LuaState::get_registry);
203222
0 commit comments