Exemple #1
0
        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();
            }
        }
Exemple #2
0
 /// <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));
 }