public void Call( Callable func, int numArgs, int numResults ) { if( numArgs < 0 ) throw new ArgumentOutOfRangeException( "numArgs" ); if( numResults != CallReturnAll && numResults < 0 ) throw new ArgumentOutOfRangeException( "numResults" ); if( numArgs != 0 ) Insert( -numArgs, func ); else Push( func ); Call( numArgs, numResults ); }
public void Set(Callable value) { RefVal = value.Val; }
internal bool Less( Value a, Value b, Callable less ) { if( less.IsNotNil ) { SetStack( less, a, b ); Call( 2, 1 ); return PopValue().ToBool(); } if( a.RefVal == Value.NumTypeTag && b.RefVal == Value.NumTypeTag ) return a.NumVal < b.NumVal; return Less( ref a, ref b ); }
public Value(Callable value) { RefVal = value.Val; NumVal = 0; }