global_module -> global_namespace.

This commit is contained in:
Stephen Chung 2020-11-19 13:56:03 +08:00
parent a00d6ba99e
commit 5e4ede6f07
4 changed files with 20 additions and 15 deletions

View File

@ -599,7 +599,7 @@ pub struct Engine {
pub id: String,
/// A module containing all functions directly loaded into the Engine.
pub(crate) global_module: Module,
pub(crate) global_namespace: Module,
/// A collection of all library packages loaded into the Engine.
pub(crate) packages: PackagesCollection,
/// A collection of all sub-modules directly loaded into the Engine.
@ -718,7 +718,7 @@ impl Engine {
id: Default::default(),
packages: Default::default(),
global_module: Default::default(),
global_namespace: Default::default(),
global_sub_modules: Default::default(),
#[cfg(not(feature = "no_module"))]
@ -781,7 +781,7 @@ impl Engine {
id: Default::default(),
packages: Default::default(),
global_module: Default::default(),
global_namespace: Default::default(),
global_sub_modules: Default::default(),
#[cfg(not(feature = "no_module"))]
@ -1944,7 +1944,7 @@ impl Engine {
let hash_fn = calc_native_fn_hash(empty(), op, arg_types);
match self
.global_module
.global_namespace
.get_fn(hash_fn, false)
.or_else(|| self.packages.get_fn(hash_fn))
.or_else(|| mods.get_fn(hash_fn))
@ -2141,7 +2141,7 @@ impl Engine {
let iter_type = iter_obj.type_id();
let func = self
.global_module
.global_namespace
.get_iter(iter_type)
.or_else(|| self.packages.get_iter(iter_type))
.or_else(|| mods.get_iter(iter_type));

View File

@ -56,8 +56,13 @@ impl Engine {
+ SendSync
+ 'static,
) -> &mut Self {
self.global_module
.set_raw_fn(name, FnNamespace::Global, FnAccess::Public, arg_types, func);
self.global_namespace.set_raw_fn(
name,
FnNamespace::Global,
FnAccess::Public,
arg_types,
func,
);
self
}
/// Register a custom type for use with the `Engine`.
@ -159,7 +164,7 @@ impl Engine {
T: Variant + Clone + Iterator,
<T as Iterator>::Item: Variant + Clone,
{
self.global_module.set_iterable::<T>();
self.global_namespace.set_iterable::<T>();
self
}
/// Register a getter function for a member of a registered type with the `Engine`.

View File

@ -176,7 +176,7 @@ impl Engine {
// First search registered functions (can override packages)
// Then search packages
let func = //lib.get_fn(hash_fn, pub_only)
self.global_module.get_fn(hash_fn, pub_only)
self.global_namespace.get_fn(hash_fn, pub_only)
.or_else(|| self.packages.get_fn(hash_fn))
.or_else(|| mods.get_fn(hash_fn));
@ -440,14 +440,14 @@ impl Engine {
hash_script: u64,
pub_only: bool,
) -> bool {
// NOTE: We skip script functions for global_module and packages, and native functions for lib
// NOTE: We skip script functions for global_namespace and packages, and native functions for lib
// First check script-defined functions
lib.iter().any(|&m| m.contains_fn(hash_script, pub_only))
//|| lib.iter().any(|&m| m.contains_fn(hash_fn, pub_only))
// Then check registered functions
//|| self.global_module.contains_fn(hash_script, pub_only)
|| self.global_module.contains_fn(hash_fn, false)
//|| self.global_namespace.contains_fn(hash_script, pub_only)
|| self.global_namespace.contains_fn(hash_fn, false)
// Then check packages
|| self.packages.contains_fn(hash_script)
|| self.packages.contains_fn(hash_fn)
@ -524,7 +524,7 @@ impl Engine {
let func = lib
.iter()
.find_map(|&m| m.get_fn(hash_script, pub_only))
//.or_else(|| self.global_module.get_fn(hash_script, pub_only))
//.or_else(|| self.global_namespace.get_fn(hash_script, pub_only))
.or_else(|| self.packages.get_fn(hash_script))
//.or_else(|| mods.get_fn(hash_script))
.unwrap();

View File

@ -187,7 +187,7 @@ macro_rules! def_register {
{
#[inline]
fn register_fn(&mut self, name: &str, f: FN) -> &mut Self {
self.global_module.set_fn(name, FnNamespace::Global, FnAccess::Public,
self.global_namespace.set_fn(name, FnNamespace::Global, FnAccess::Public,
&[$(map_type_id::<$par>()),*],
CallableFunction::$abi(make_func!(f : map_dynamic ; $($par => $let => $clone => $arg),*))
);
@ -202,7 +202,7 @@ macro_rules! def_register {
{
#[inline]
fn register_result_fn(&mut self, name: &str, f: FN) -> &mut Self {
self.global_module.set_fn(name, FnNamespace::Global, FnAccess::Public,
self.global_namespace.set_fn(name, FnNamespace::Global, FnAccess::Public,
&[$(map_type_id::<$par>()),*],
CallableFunction::$abi(make_func!(f : map_result ; $($par => $let => $clone => $arg),*))
);