From a82f70ea9f98ed0a602a20f7fe8954f6e4200b25 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Thu, 19 Nov 2020 16:54:07 +0100 Subject: [HTML5] Libraries refactor for linting. Initial work to make liniting easier. This includes: - Rename http_request.js to library_godot_http_request.js. - Rename externs.js to engine.externs.js. - New library_godot_runtime.js (GodotRuntime) wraps around emscripten functions. - Refactor of XMLHttpRequest handler in engine/preloader.js. - Few fixes to bugs spotted by early stage linting. --- .../javascript/js/libs/library_godot_runtime.js | 120 +++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 platform/javascript/js/libs/library_godot_runtime.js (limited to 'platform/javascript/js/libs/library_godot_runtime.js') diff --git a/platform/javascript/js/libs/library_godot_runtime.js b/platform/javascript/js/libs/library_godot_runtime.js new file mode 100644 index 0000000000..1769f83623 --- /dev/null +++ b/platform/javascript/js/libs/library_godot_runtime.js @@ -0,0 +1,120 @@ +/*************************************************************************/ +/* library_godot_runtime.js */ +/*************************************************************************/ +/* This file is part of: */ +/* GODOT ENGINE */ +/* https://godotengine.org */ +/*************************************************************************/ +/* Copyright (c) 2007-2020 Juan Linietsky, Ariel Manzur. */ +/* Copyright (c) 2014-2020 Godot Engine contributors (cf. AUTHORS.md). */ +/* */ +/* Permission is hereby granted, free of charge, to any person obtaining */ +/* a copy of this software and associated documentation files (the */ +/* "Software"), to deal in the Software without restriction, including */ +/* without limitation the rights to use, copy, modify, merge, publish, */ +/* distribute, sublicense, and/or sell copies of the Software, and to */ +/* permit persons to whom the Software is furnished to do so, subject to */ +/* the following conditions: */ +/* */ +/* The above copyright notice and this permission notice shall be */ +/* included in all copies or substantial portions of the Software. */ +/* */ +/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */ +/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */ +/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ +/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */ +/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */ +/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */ +/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/*************************************************************************/ + +const GodotRuntime = { + $GodotRuntime: { + /* + * Functions + */ + get_func: function(ptr) { + return wasmTable.get(ptr); // eslint-disable-line no-undef + }, + + /* + * Prints + */ + error: function() { + err.apply(null, Array.from(arguments)); // eslint-disable-line no-undef + }, + + print: function() { + out.apply(null, Array.from(arguments)); // eslint-disable-line no-undef + }, + + /* + * Memory + */ + malloc: function(p_size) { + return _malloc(p_size); // eslint-disable-line no-undef + }, + + free: function(p_ptr) { + _free(p_ptr); // eslint-disable-line no-undef + }, + + getHeapValue: function (p_ptr, p_type) { + return getValue(p_ptr, p_type); // eslint-disable-line no-undef + }, + + setHeapValue: function(p_ptr, p_value, p_type) { + setValue(p_ptr, p_value, p_type); // eslint-disable-line no-undef + }, + + heapSub: function(p_heap, p_ptr, p_len) { + const bytes = p_heap.BYTES_PER_ELEMENT; + return p_heap.subarray(p_ptr / bytes, p_ptr / bytes + p_len); + }, + + heapCopy: function(p_heap, p_ptr, p_len) { + const bytes = p_heap.BYTES_PER_ELEMENT; + return p_heap.slice(p_ptr / bytes, p_ptr / bytes + p_len); + }, + + /* + * Strings + */ + parseString: function(p_ptr) { + return UTF8ToString(p_ptr); // eslint-disable-line no-undef + }, + + strlen: function(p_str) { + return lengthBytesUTF8(p_str); // eslint-disable-line no-undef + }, + + allocString: function(p_str) { + const length = GodotRuntime.strlen(p_str)+1; + const c_str = GodotRuntime.malloc(length); + stringToUTF8(p_str, c_str, length); // eslint-disable-line no-undef + return c_str; + }, + + allocStringArray: function(p_strings) { + const size = p_strings.length; + const c_ptr = GodotRuntime.malloc(size * 4); + for (let i = 0; i < size; i++) { + HEAP32[(c_ptr >> 2) + i] = GodotRuntime.allocString(p_strings[i]); + } + return c_ptr; + }, + + freeStringArray: function(p_ptr, p_len) { + for (let i = 0; i < p_len; i++) { + GodotRuntime.free(HEAP32[(p_ptr >> 2) + i]); + } + GodotRuntime.free(p_ptr); + }, + + stringToHeap: function (p_str, p_ptr, p_len) { + return stringToUTF8Array(p_str, HEAP8, p_ptr, p_len); // eslint-disable-line no-undef + }, + }, +}; +autoAddDeps(GodotRuntime, "$GodotRuntime"); +mergeInto(LibraryManager.library, GodotRuntime); -- cgit v1.2.3 From 4617a7fa9cea323978f14053ef2726c84e9bd267 Mon Sep 17 00:00:00 2001 From: Fabio Alessandrelli Date: Mon, 23 Nov 2020 12:13:52 +0100 Subject: [HTML5] Run eslint --fix. Should I write a poem about this whole new world? ;) --- .../javascript/js/libs/library_godot_runtime.js | 30 +++++++++++----------- 1 file changed, 15 insertions(+), 15 deletions(-) (limited to 'platform/javascript/js/libs/library_godot_runtime.js') diff --git a/platform/javascript/js/libs/library_godot_runtime.js b/platform/javascript/js/libs/library_godot_runtime.js index 1769f83623..04f29ad681 100644 --- a/platform/javascript/js/libs/library_godot_runtime.js +++ b/platform/javascript/js/libs/library_godot_runtime.js @@ -33,29 +33,29 @@ const GodotRuntime = { /* * Functions */ - get_func: function(ptr) { + get_func: function (ptr) { return wasmTable.get(ptr); // eslint-disable-line no-undef }, /* * Prints */ - error: function() { + error: function () { err.apply(null, Array.from(arguments)); // eslint-disable-line no-undef }, - print: function() { + print: function () { out.apply(null, Array.from(arguments)); // eslint-disable-line no-undef }, /* * Memory */ - malloc: function(p_size) { + malloc: function (p_size) { return _malloc(p_size); // eslint-disable-line no-undef }, - free: function(p_ptr) { + free: function (p_ptr) { _free(p_ptr); // eslint-disable-line no-undef }, @@ -63,16 +63,16 @@ const GodotRuntime = { return getValue(p_ptr, p_type); // eslint-disable-line no-undef }, - setHeapValue: function(p_ptr, p_value, p_type) { + setHeapValue: function (p_ptr, p_value, p_type) { setValue(p_ptr, p_value, p_type); // eslint-disable-line no-undef }, - heapSub: function(p_heap, p_ptr, p_len) { + heapSub: function (p_heap, p_ptr, p_len) { const bytes = p_heap.BYTES_PER_ELEMENT; return p_heap.subarray(p_ptr / bytes, p_ptr / bytes + p_len); }, - heapCopy: function(p_heap, p_ptr, p_len) { + heapCopy: function (p_heap, p_ptr, p_len) { const bytes = p_heap.BYTES_PER_ELEMENT; return p_heap.slice(p_ptr / bytes, p_ptr / bytes + p_len); }, @@ -80,22 +80,22 @@ const GodotRuntime = { /* * Strings */ - parseString: function(p_ptr) { + parseString: function (p_ptr) { return UTF8ToString(p_ptr); // eslint-disable-line no-undef }, - strlen: function(p_str) { + strlen: function (p_str) { return lengthBytesUTF8(p_str); // eslint-disable-line no-undef }, - allocString: function(p_str) { - const length = GodotRuntime.strlen(p_str)+1; + allocString: function (p_str) { + const length = GodotRuntime.strlen(p_str) + 1; const c_str = GodotRuntime.malloc(length); stringToUTF8(p_str, c_str, length); // eslint-disable-line no-undef return c_str; }, - allocStringArray: function(p_strings) { + allocStringArray: function (p_strings) { const size = p_strings.length; const c_ptr = GodotRuntime.malloc(size * 4); for (let i = 0; i < size; i++) { @@ -104,7 +104,7 @@ const GodotRuntime = { return c_ptr; }, - freeStringArray: function(p_ptr, p_len) { + freeStringArray: function (p_ptr, p_len) { for (let i = 0; i < p_len; i++) { GodotRuntime.free(HEAP32[(p_ptr >> 2) + i]); } @@ -116,5 +116,5 @@ const GodotRuntime = { }, }, }; -autoAddDeps(GodotRuntime, "$GodotRuntime"); +autoAddDeps(GodotRuntime, '$GodotRuntime'); mergeInto(LibraryManager.library, GodotRuntime); -- cgit v1.2.3