use crate::{
corelib::iterators::dict::DictIter, ll::value::Dict, Arguments, IntoValue,
MethodParameterCount, RawFunctionKind, TypeBuilder,
};
pub(crate) fn define(builder: TypeBuilder<Dict>) -> TypeBuilder<Dict> {
builder
.add_function("len", Dict::len)
.add_function("is_empty", Dict::is_empty)
.add_function("insert", Dict::insert)
.add_function("remove", Dict::remove)
.add_function("get", Dict::get)
.add_function("contains_key", Dict::contains_key)
.add_function("clone", Dict::clone)
.add_raw_function(
"iter",
MethodParameterCount::from_count_with_self(1),
RawFunctionKind::Foreign(Box::new(|env, gc, args| {
let arguments = Arguments::new(args, env);
let iter = unsafe { DictIter::new(*arguments.raw_self()) };
Ok(iter.into_value_with_environment(env).to_raw(gc))
})),
)
}