فهرست منبع

Make `core:dynlib` use the private interface convention of other packages

gingerBill 3 سال پیش
والد
کامیت
acadbe050c
3فایلهای تغییر یافته به همراه32 افزوده شده و 18 حذف شده
  1. 12 0
      core/dynlib/lib.odin
  2. 15 14
      core/dynlib/lib_unix.odin
  3. 5 4
      core/dynlib/lib_windows.odin

+ 12 - 0
core/dynlib/lib.odin

@@ -1,3 +1,15 @@
 package dynlib
 
 Library :: distinct rawptr
+
+load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
+	return _load_library(path, global_symbols)
+}
+
+unload_library :: proc(library: Library) -> bool {
+	return _unload_library(library)
+}
+
+symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
+	return _symbol_address(library, symbol)
+}

+ 15 - 14
core/dynlib/lib_unix.odin

@@ -1,23 +1,24 @@
-// +build linux, darwin, freebsd, openbsd
+//+build linux, darwin, freebsd, openbsd
+//+private
 package dynlib
 
 import "core:os"
 
-load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
-    flags := os.RTLD_NOW
-    if global_symbols {
-    	flags |= os.RTLD_GLOBAL
-    }
-    lib := os.dlopen(path, flags)
-    return Library(lib), lib != nil
+_load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
+	flags := os.RTLD_NOW
+	if global_symbols {
+		flags |= os.RTLD_GLOBAL
+	}
+	lib := os.dlopen(path, flags)
+	return Library(lib), lib != nil
 }
 
-unload_library :: proc(library: Library) {
-    os.dlclose(rawptr(library))
+_unload_library :: proc(library: Library) {
+	os.dlclose(rawptr(library))
 }
 
-symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
-    ptr = os.dlsym(rawptr(library), symbol)
-    found = ptr != nil
-    return
+_symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
+	ptr = os.dlsym(rawptr(library), symbol)
+	found = ptr != nil
+	return
 }

+ 5 - 4
core/dynlib/lib_windows.odin

@@ -1,10 +1,11 @@
-// +build windows
+//+build windows
+//+private
 package dynlib
 
 import win32 "core:sys/windows"
 import "core:strings"
 
-load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
+_load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
 	// NOTE(bill): 'global_symbols' is here only for consistency with POSIX which has RTLD_GLOBAL
 
 	wide_path := win32.utf8_to_wstring(path, context.temp_allocator)
@@ -12,12 +13,12 @@ load_library :: proc(path: string, global_symbols := false) -> (Library, bool) {
 	return handle, handle != nil
 }
 
-unload_library :: proc(library: Library) -> bool {
+_unload_library :: proc(library: Library) -> bool {
 	ok := win32.FreeLibrary(cast(win32.HMODULE)library)
 	return bool(ok)
 }
 
-symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
+_symbol_address :: proc(library: Library, symbol: string) -> (ptr: rawptr, found: bool) {
 	c_str := strings.clone_to_cstring(symbol, context.temp_allocator)
 	ptr = win32.GetProcAddress(cast(win32.HMODULE)library, c_str)
 	found = ptr != nil