//----------------------------------------------------------------------------- // // Copyright (C) 2015 David Hill // // See COPYING for license information. // //----------------------------------------------------------------------------- // // Modules. // //----------------------------------------------------------------------------- #include "Module.h" #include "Environment.h" #include "ACSVM/Error.hpp" extern "C" { //----------------------------------------------------------------------------| // Extern Functions | // // // ACSVM_Module_GetName // void ACSVM_Module_GetName(ACSVM_Module const *module_, ACSVM_ModuleName *out) { auto module = reinterpret_cast(module_); out->s = reinterpret_cast(module->name.s); out->p = module->name.p; out->i = module->name.i; } // // ACSVM_Module_ReadBytecode // bool ACSVM_Module_ReadBytecode(ACSVM_Module *module_, ACSVM_Byte const *data, size_t size) { auto module = reinterpret_cast(module_); try { module->readBytecode(data, size); return true; } catch(ACSVM::ReadError const &e) { auto env = static_cast(module->env); if(env->funcs.readError) env->funcs.readError(env, e.what()); return false; } catch(std::bad_alloc const &e) { auto env = static_cast(module->env); if(env->funcs.bad_alloc) env->funcs.bad_alloc(env, e.what()); return false; } } } // EOF