mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 21:51:22 +00:00 
			
		
		
		
	[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.
This commit is contained in:
		
							parent
							
								
									48049b8d9e
								
							
						
					
					
						commit
						a82f70ea9f
					
				
					 16 changed files with 487 additions and 378 deletions
				
			
		
							
								
								
									
										120
									
								
								platform/javascript/js/libs/library_godot_runtime.js
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								platform/javascript/js/libs/library_godot_runtime.js
									
										
									
									
									
										Normal file
									
								
							|  | @ -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); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Fabio Alessandrelli
						Fabio Alessandrelli