#ifndef RESOURCE_H #define RESOURCE_H #include "sys.h" /* A resource contains data that can be retrieved globally by name. * If enabled during compilation, resource data is embedded in the * executable. Otherwise each resource represents a file on disk. */ struct resource { struct string _data; #if RESOURCES_EMBEDDED struct string _file_name; #else struct sys_file _file; struct sys_file_map _file_map; u8 _file_name_text[256]; u8 _file_name_len; #endif }; struct resource_startup_receipt { i32 _; }; struct resource_startup_receipt resource_startup(void); struct resource resource_open(struct string path); #if RESOURCES_EMBEDDED #define resource_close(res_ptr) #else void resource_close(struct resource *res_ptr); #endif b32 resource_exists(struct string path); #define resource_get_data(res_ptr) (res_ptr)->_data #if RESOURCES_EMBEDDED #define resource_get_name(res_ptr) (res_ptr)->_file_name #else #define resource_get_name(res_ptr) STRING((res_ptr)->_file_name_len, (res_ptr)->_file_name_text) #endif #define RESOURCE_WATCH_CALLBACK_FUNC_DEF(func_name, arg_info) void func_name(struct sys_watch_info *arg_info) typedef RESOURCE_WATCH_CALLBACK_FUNC_DEF(resource_watch_callback, info); #if RESOURCE_RELOADING void resource_register_watch_callback(resource_watch_callback *callback); #else #define resource_register_watch_callback(callback) #endif #endif