Exemplo n.º 1
0
 internal static LuaObject toNumber(LuaObject obj)
 {
     if (obj.IsNumber)
         return LuaObject.FromNumber(obj.AsNumber());
     if (obj.IsString)
     {
         double d;
         if (double.TryParse(obj.AsString(), out d))
             return LuaObject.FromNumber(d);
         return LuaObject.Nil;
     }
     return LuaObject.Nil;
 }
Exemplo n.º 2
0
        public virtual void Constant(LuaObject value)
        {
            switch (value.Type)
            {
            case LuaType.@string:
                stack.Push(Expression.Call(LuaObject_FromString, Expression.Constant(value.AsString())));
                break;

            case LuaType.number:
                stack.Push(Expression.Call(LuaObject_FromNumber, Expression.Constant(value.AsNumber())));
                break;

            case LuaType.function:
                // FIXME: we're actually creating a variable here..
                var fn   = value.AsFunction();
                var name = fn.Method.Name;
                CurrentScope.SetLocal(name, fn);
                Variable(name);
                break;

            default:
                throw new NotSupportedException(value.Type.ToString());
            }
        }
Exemplo n.º 3
0
 internal static LuaObject le_event(LuaObject op1, LuaObject op2)
 {
     if (op1.IsNumber && op2.IsNumber)
         return op1.AsNumber() <= op2.AsNumber();
     else if (op1.IsString && op2.IsString)
     {
         int n = StringComparer.CurrentCulture.Compare(op1.AsString(), op2.AsString());
         return (n <= 0);
     }
     else
     {
         var handler = getBinhandler(op1, op2, "__le");
         if (!handler.IsNil)
             return !(!(handler.Call(op1, op2)[0].AsBool()));
         else
             throw new ArgumentException("attempt to compare " + op1.type.ToString() + " with " + op2.type.ToString());
     }
 }
Exemplo n.º 4
0
		public virtual void Constant (LuaObject value)
		{
			switch (value.Type) {
			
			case LuaType.@string:
				stack.Push (Expression.Call (LuaObject_FromString, Expression.Constant (value.AsString ())));
				break;
				
			case LuaType.number:
				stack.Push (Expression.Call (LuaObject_FromNumber, Expression.Constant (value.AsNumber ())));
				break;
				
			case LuaType.function:
				// FIXME: we're actually creating a variable here..
				var fn = value.AsFunction ();
				var name = fn.Method.Name;
				CurrentScope.SetLocal (name, fn);
				Variable (name);
				break;
				
			default:
				throw new NotSupportedException (value.Type.ToString ());
			}
		}
Exemplo n.º 5
0
 public static bool TryAsDouble(this LuaObject obj, out double dbl)
 {
     dbl = obj.AsNumber();
     return(!double.IsNaN(dbl));
 }