/// <summary> /// Create a constant Zen integer value. /// </summary> /// <typeparam name="T">The integer gype.</typeparam> /// <param name="value">The Zen integer value.</param> /// <returns>A long.</returns> public static Zen <T> CreateConstantValue <T>(long value) { var type = typeof(T); if (type == ReflectionUtilities.BoolType) { return((Zen <T>)(object)(value == 0L ? Language.False() : Language.True())); } if (type == ReflectionUtilities.ByteType) { return((Zen <T>)(object) ZenConstantByteExpr.Create((byte)value)); } if (type == ReflectionUtilities.ShortType) { return((Zen <T>)(object) ZenConstantShortExpr.Create((short)value)); } if (type == ReflectionUtilities.UshortType) { return((Zen <T>)(object) ZenConstantUshortExpr.Create((ushort)value)); } if (type == ReflectionUtilities.IntType) { return((Zen <T>)(object) ZenConstantIntExpr.Create((int)value)); } if (type == ReflectionUtilities.UintType) { return((Zen <T>)(object) ZenConstantUintExpr.Create((uint)value)); } if (type == ReflectionUtilities.LongType) { return((Zen <T>)(object) ZenConstantLongExpr.Create(value)); } return((Zen <T>)(object) ZenConstantUlongExpr.Create((ulong)value)); }
public static Zen <ulong> Create(ulong value) { if (hashConsTable.TryGetValue(value, out var v)) { return(v); } var ret = new ZenConstantUlongExpr(value); hashConsTable[value] = ret; return(ret); }