public static int Compare(BigInteger x, uint y) { uint ix; if (x.AsUInt32(out ix)) { return ix == y ? 0 : ix > y ? 1 : -1; } return BigInteger.Compare(x, y); }
internal static UInt32 ToUInt32(BigInteger value) { UInt32 result; if (value.AsUInt32(out result)) { return(result); } throw RubyExceptions.CreateRangeError("number too big to convert into System::UInt32"); }
public static object EvalExpression(string code, Dictionary <string, object> localScope) { var scope = Prepare(localScope); try { ScriptSource source = scope.Engine.CreateScriptSourceFromString(code, SourceCodeKind.Expression); object obj = source.Execute(scope); if (obj != null && obj.GetType() == typeof(BigInteger)) { BigInteger bint = (BigInteger)obj; int i32; uint ui32; long i64; ulong ui64; if (bint.AsInt32(out i32)) { return(i32); } if (bint.AsInt64(out i64)) { return(i64); } if (bint.AsUInt32(out ui32)) { return(ui32); } if (bint.AsUInt64(out ui64)) { return(ui64); } } return(obj); } catch (Exception ex) { throw new PeachException("Error executing expression [" + code + "]: " + ex.ToString(), ex); } finally { var names = scope.GetVariableNames().ToList(); foreach (var name in names) { scope.RemoveVariable(name); } } }
public uint ToUInt32Unchecked() { if (IsFixnum) { return(unchecked ((uint)_fixnum)); } uint u; if (_bignum.AsUInt32(out u)) { return(u); } throw RubyExceptions.CreateRangeError("bignum too big to convert into 32-bit unsigned integer"); }
public static bool AsUInt32(BigInteger self, out uint res) { return(self.AsUInt32(out res)); }
private void AsUInt32Test(BigInteger i, bool expRet, uint expInt) { uint v; bool b = i.AsUInt32(out v); Expect(b, EqualTo(expRet)); Expect(v, EqualTo(expInt)); }
public static object EvalExpression(string code, Dictionary <string, object> localScope) { var missing = Imports.Except(Engine.Modules.Keys).ToList(); foreach (string import in missing) { Engine.Modules.Add(import, Engine.Instance.ImportModule(import)); } ScriptScope scope = Engine.Instance.CreateScope(); foreach (var kv in Engine.Modules) { scope.SetVariable(kv.Key, kv.Value); } foreach (var kv in GlobalScope) { scope.SetVariable(kv.Key, kv.Value); } foreach (var kv in localScope) { scope.SetVariable(kv.Key, kv.Value); } try { ScriptSource source = scope.Engine.CreateScriptSourceFromString(code, SourceCodeKind.Expression); object obj = source.Execute(scope); if (obj != null && obj.GetType() == typeof(BigInteger)) { BigInteger bint = (BigInteger)obj; int i32; uint ui32; long i64; ulong ui64; if (bint.AsInt32(out i32)) { return(i32); } if (bint.AsInt64(out i64)) { return(i64); } if (bint.AsUInt32(out ui32)) { return(ui32); } if (bint.AsUInt64(out ui64)) { return(ui64); } } return(obj); } catch (Exception ex) { throw new PeachException("Error executing expression [" + code + "]: " + ex.ToString(), ex); } finally { var names = scope.GetVariableNames().ToList(); foreach (var name in names) { scope.RemoveVariable(name); } } }