Module emf_core_base_rs::module[][src]

Module api

Example

use emf_core_base_rs::CBaseAPI;
use emf_core_base_rs::version::VersionAPI;
use emf_core_base_rs::module::{
    ModuleAPI, DEFAULT_HANDLE, InterfaceDescriptor, InterfaceName, Error, Module
};
use emf_core_base_rs::ffi::collections::ConstSpan;
use std::path::Path;

let result = CBaseAccess::lock(base_interface, |interface| -> Result<Module<'_, _>, Error> {
    let module_path = Path::new("path to a module");
    let interface_desc = InterfaceDescriptor {
        name: InterfaceName::from("my_interface"),
        version: VersionAPI::new_short(interface, 1, 0, 0),
        extensions: ConstSpan::new()
    };

    let mut module = ModuleAPI::add_module(interface, &DEFAULT_HANDLE, &module_path)?;
    ModuleAPI::load(interface, &mut module)?;
    ModuleAPI::initialize(interface, &mut module)?;
    ModuleAPI::export_interface(interface, &mut module, &interface_desc)?;
    Ok(module)
});

assert_eq!(result.is_ok(), true);

Modules

module_loader

API of a module loader.

native_module

API of a native module.

Structs

Interface

Interface from a module.

InterfaceDescriptor

Information regarding an interface.

InternalModule

A loader handle.

Loader

A loader handle.

Module

A module handle.

ModuleInfo

Information regarding a module.

Enums

Error

Errors of the module api.

ModuleStatus

Status of a module.

Constants

DEFAULT_HANDLE

Handle of the default loader.

INTERFACE_EXTENSION_NAME_MAX_LENGTH

Maximum length of an extension name.

INTERFACE_INFO_NAME_MAX_LENGTH

Maximum length of an interface name.

MODULE_INFO_NAME_MAX_LENGTH

Maximum length of a module name.

MODULE_INFO_VERSION_MAX_LENGTH

Maximum length of a module version.

MODULE_LOADER_TYPE_MAX_LENGTH

Maximum length of a module type.

NATIVE_MODULE_INTERFACE_SYMBOL_NAME

Native module entry symbol.

NATIVE_MODULE_TYPE_NAME

Type of a native module.

Traits

ModuleAPI

Idiomatic module api.

Type Definitions

InterfaceExtension

Extension of an interface.

InterfaceName

Name of an interface.

ModuleName

Name of a module.

ModuleType

Type of a module.

ModuleVersion

Version a module.