rhai/src/packages/pkg_core.rs

41 lines
1.4 KiB
Rust
Raw Normal View History

use super::arithmetic::ArithmeticPackage;
2020-06-25 12:07:57 +02:00
use super::fn_basic::BasicFnPackage;
use super::iter_basic::BasicIteratorPackage;
use super::logic::LogicPackage;
use super::string_basic::BasicStringPackage;
2020-11-22 08:41:55 +01:00
use crate::fn_native::{CallableFunction, FnCallArgs};
2020-11-22 10:49:00 +01:00
use crate::stdlib::{any::TypeId, boxed::Box, iter::empty};
2020-11-22 08:41:55 +01:00
use crate::{
calc_script_fn_hash, def_package, FnAccess, FnNamespace, ImmutableString, NativeCallContext,
INT,
};
2020-04-22 08:55:40 +02:00
def_package!(crate:CorePackage:"_Core_ package containing basic facilities.", lib, {
2020-11-22 08:41:55 +01:00
#[cfg(not(feature = "no_function"))]
{
let f = |ctx: NativeCallContext, args: &mut FnCallArgs| {
let num_params = args[1].clone().cast::<INT>();
let fn_name = args[0].as_str().unwrap();
Ok(if num_params < 0 {
false.into()
} else {
let hash_script = calc_script_fn_hash(empty(), fn_name, num_params as usize);
ctx.engine().has_override(ctx.mods, ctx.lib, 0, hash_script, true).into()
})
};
lib.set_fn("is_def_fn", FnNamespace::Global, FnAccess::Public,
Some(&["fn_name: &str", "num_params: INT"]),
&[TypeId::of::<ImmutableString>(), TypeId::of::<INT>()],
CallableFunction::from_method(Box::new(f)));
}
2020-04-21 17:01:10 +02:00
ArithmeticPackage::init(lib);
LogicPackage::init(lib);
BasicStringPackage::init(lib);
BasicIteratorPackage::init(lib);
2020-06-25 12:07:57 +02:00
BasicFnPackage::init(lib);
2020-04-21 17:01:10 +02:00
});