// The MIT License (MIT) // // Copyright (C) 2026 Scott Duensing // // 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. // basModuleRes.c -- load a compiled module (and its debug info) from an // app's resources; shared by basstub and basrun. #include "basModuleRes.h" #include BasModuleT *basModuleLoadRes(DvxResHandleT *res, const char **error) { uint32_t modSize = 0; uint8_t *modData = (uint8_t *)dvxResRead(res, BAS_RES_MODULE, &modSize); if (!modData) { *error = "MODULE resource not found."; return NULL; } BasModuleT *mod = basModuleDeserialize(modData, (int32_t)modSize); free(modData); if (!mod) { *error = "MODULE resource failed to deserialize."; return NULL; } uint32_t dbgSize = 0; uint8_t *dbgData = (uint8_t *)dvxResRead(res, BAS_RES_DEBUG, &dbgSize); if (dbgData) { basDebugDeserialize(mod, dbgData, (int32_t)dbgSize); free(dbgData); } return mod; }