Skip to main content

sim/
functions.rs

1use sim_kernel::{Cx, Result, ShapeRef, TableRef};
2use sim_shape::Shape;
3
4pub use sim_shape::{
5    FunctionCase, FunctionObject, NativeFunctionImpl, SelectedCase, case_result_shape, case_shape,
6    function_cases, overload,
7};
8
9/// Builds an empty member table for classes that expose no members.
10pub fn empty_member_table(cx: &mut Cx) -> Result<TableRef> {
11    cx.factory().table(Vec::new())
12}
13
14/// Returns a nil shape reference, used where a function has no declared shape.
15pub fn empty_shape_ref(cx: &mut Cx) -> Result<ShapeRef> {
16    cx.factory().nil()
17}
18
19/// Returns the argument shape of a function overload case.
20pub fn function_case_shape(case: &FunctionCase) -> &dyn Shape {
21    case_shape(case)
22}
23
24/// Returns the result shape of a function overload case, if it declares one.
25pub fn function_case_result_shape(case: &FunctionCase) -> Option<&dyn Shape> {
26    case_result_shape(case)
27}