public object ImportValue(object value) { if (value == null) { return(null); } if (IsUndefined(value)) { return(Undefined); } var c = value as IAbcConst; if (c != null) { return(ImportConst(c)); } var tc = Type.GetTypeCode(value.GetType()); switch (tc) { case TypeCode.Object: { var instance = value as AbcInstance; if (instance != null) { return(ImportInstance(instance)); } var klass = value as AbcClass; if (klass != null) { return(ImportInstance(klass.Instance)); } var method = value as AbcMethod; if (method != null) { return(ImportMethod(method)); } throw new NotImplementedException(); } case TypeCode.DBNull: throw new NotSupportedException(); case TypeCode.Boolean: return(value); case TypeCode.SByte: return(IntPool.Define((sbyte)value)); case TypeCode.Int16: return(IntPool.Define((short)value)); case TypeCode.Int32: return(IntPool.Define((int)value)); case TypeCode.Byte: return(UIntPool.Define((byte)value)); case TypeCode.Char: return(UIntPool.Define((char)value)); case TypeCode.UInt16: return(UIntPool.Define((ushort)value)); case TypeCode.UInt32: return(UIntPool.Define((uint)value)); case TypeCode.Int64: throw new NotImplementedException(); case TypeCode.UInt64: throw new NotImplementedException(); case TypeCode.Single: return(DefineSingle((float)value)); case TypeCode.Double: return(DoublePool.Define((double)value)); case TypeCode.String: return(DefineString((string)value)); default: throw new NotImplementedException(); } }
/// <summary> /// Defines 32-bit unsigned integer constant. /// </summary> /// <param name="value">value of constant to define.</param> /// <returns></returns> public AbcConst <uint> DefineUInt(uint value) { return(UIntPool.Define(value)); }