/*
 * Mr. 4th Dimention - Allen Webster
 *
 * 18.07.2017
 *
 * Linux library wrapper.
 *
 */

// TOP

union Library{
    void *lib;
    FixSize(LIBRARY_TYPE_SIZE);
};

internal b32
system_load_library_direct(Library *library, char *name){
    AssertLibrarySizes();
    library->lib = dlopen(name, RTLD_LAZY);
    b32 success = (library->lib != 0);
    return(success);
}

internal void*
system_get_proc(Library *library, char *name){
    void *result = dlsym(library->lib, name);
    return(result);
}

internal void
system_free_library(Library *library){
    dlclose(library->lib);
    library->lib = 0;
}

// BOTTOM