虚拟机模块创建API

9. 虚拟机模块创建API


9.1 evm_native_fn函数声明

  1. /**
  2. * @brief evm_native_fn函数声明
  3. * @param e,虚拟机参数
  4. * @param self,绑定的内置函数
  5. * @param vc, 函数参数个数
  6. * @param v,函数参数指针
  7. * @return 内置函数对象
  8. */
  9. typedef evm_val_t (*evm_native_fn)(void * e, evm_val_t * self,
  10. int vc, evm_val_t * v);

9.2 创建内置函数值

  1. /**
  2. * @brief 创建内置函数值
  3. * @param n, 函数地址(evm_native_fn指针对象)
  4. * @return
  5. */
  6. evm_val_t evm_mk_native(intptr_t n)

9.3 创建内置函数对象

  1. /**
  2. * @brief 创建内置函数对象
  3. * @param e,虚拟机参数
  4. * @param fn,绑定的内置函数
  5. * @param prop_len,成员长度
  6. * @param attr_len,属性长度
  7. * @return 内置函数对象
  8. */
  9. evm_val_t *evm_native_function_create(evm_t *e, evm_native_fn fn,
  10. int attr_len);

9.4 添加内置函数列表

  1. /**
  2. * @brief 添加内置函数列表
  3. * @param e,虚拟机
  4. * @param n,内置函数列表
  5. * @return 错误码
  6. */
  7. evm_err_t evm_native_add(evm_t * e, evm_builtin_t * n);

9.5 创建指定名称的扩展模块

  1. /**
  2. * @brief 创建指定名称的模块
  3. * @param e,虚拟机
  4. * @param name,名称
  5. * @param n,内置成员列表
  6. * @return 内置对象
  7. */
  8. evm_val_t evm_module_create(evm_t * e, const char* name, evm_builtin_t *n);