internal void Init(InternalPrimitiveTypeE code, Array array)
        {
            this.code = code;
            switch (code)
            {
                case InternalPrimitiveTypeE.Boolean:
                    this.booleanA = (bool[]) array;
                    return;

                case InternalPrimitiveTypeE.Byte:
                case InternalPrimitiveTypeE.Currency:
                case InternalPrimitiveTypeE.Decimal:
                case InternalPrimitiveTypeE.TimeSpan:
                case InternalPrimitiveTypeE.DateTime:
                    break;

                case InternalPrimitiveTypeE.Char:
                    this.charA = (char[]) array;
                    return;

                case InternalPrimitiveTypeE.Double:
                    this.doubleA = (double[]) array;
                    return;

                case InternalPrimitiveTypeE.Int16:
                    this.int16A = (short[]) array;
                    return;

                case InternalPrimitiveTypeE.Int32:
                    this.int32A = (int[]) array;
                    return;

                case InternalPrimitiveTypeE.Int64:
                    this.int64A = (long[]) array;
                    return;

                case InternalPrimitiveTypeE.SByte:
                    this.sbyteA = (sbyte[]) array;
                    return;

                case InternalPrimitiveTypeE.Single:
                    this.singleA = (float[]) array;
                    return;

                case InternalPrimitiveTypeE.UInt16:
                    this.uint16A = (ushort[]) array;
                    return;

                case InternalPrimitiveTypeE.UInt32:
                    this.uint32A = (uint[]) array;
                    return;

                case InternalPrimitiveTypeE.UInt64:
                    this.uint64A = (ulong[]) array;
                    break;

                default:
                    return;
            }
        }
        internal static Array CreatePrimitiveArray(InternalPrimitiveTypeE code, int length)
        {
            Array array = null;
            switch (code)
            {
                case InternalPrimitiveTypeE.Boolean:
                    return new bool[length];

                case InternalPrimitiveTypeE.Byte:
                    return new byte[length];

                case InternalPrimitiveTypeE.Char:
                    return new char[length];

                case InternalPrimitiveTypeE.Currency:
                    return array;

                case InternalPrimitiveTypeE.Decimal:
                    return new decimal[length];

                case InternalPrimitiveTypeE.Double:
                    return new double[length];

                case InternalPrimitiveTypeE.Int16:
                    return new short[length];

                case InternalPrimitiveTypeE.Int32:
                    return new int[length];

                case InternalPrimitiveTypeE.Int64:
                    return new long[length];

                case InternalPrimitiveTypeE.SByte:
                    return new sbyte[length];

                case InternalPrimitiveTypeE.Single:
                    return new float[length];

                case InternalPrimitiveTypeE.TimeSpan:
                    return new TimeSpan[length];

                case InternalPrimitiveTypeE.DateTime:
                    return new DateTime[length];

                case InternalPrimitiveTypeE.UInt16:
                    return new ushort[length];

                case InternalPrimitiveTypeE.UInt32:
                    return new uint[length];

                case InternalPrimitiveTypeE.UInt64:
                    return new ulong[length];
            }
            return array;
        }
 internal void Init()
 {
     this.NIFullName = null;
     this.NIobjectId = 0L;
     this.NIassemId = 0L;
     this.NIprimitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
     this.NItype = null;
     this.NIisSealed = false;
     this.NItransmitTypeOnObject = false;
     this.NItransmitTypeOnMember = false;
     this.NIisParentTypeOnObject = false;
     this.NIisArray = false;
     this.NIisArrayItem = false;
     this.NIarrayEnum = InternalArrayTypeE.Empty;
     this.NIsealedStatusChecked = false;
 }
 internal void Init()
 {
     this.PRparseTypeEnum = InternalParseTypeE.Empty;
     this.PRobjectTypeEnum = InternalObjectTypeE.Empty;
     this.PRarrayTypeEnum = InternalArrayTypeE.Empty;
     this.PRmemberTypeEnum = InternalMemberTypeE.Empty;
     this.PRmemberValueEnum = InternalMemberValueE.Empty;
     this.PRobjectPositionEnum = InternalObjectPositionE.Empty;
     this.PRname = null;
     this.PRvalue = null;
     this.PRkeyDt = null;
     this.PRdtType = null;
     this.PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
     this.PRisEnum = false;
     this.PRobjectId = 0L;
     this.PRidRef = 0L;
     this.PRarrayElementTypeString = null;
     this.PRarrayElementType = null;
     this.PRisArrayVariant = false;
     this.PRarrayElementTypeCode = InternalPrimitiveTypeE.Invalid;
     this.PRrank = 0;
     this.PRlengthA = null;
     this.PRpositionA = null;
     this.PRlowerBoundA = null;
     this.PRupperBoundA = null;
     this.PRindexMap = null;
     this.PRmemberIndex = 0;
     this.PRlinearlength = 0;
     this.PRrectangularMap = null;
     this.PRisLowerBound = false;
     this.PRtopId = 0L;
     this.PRheaderId = 0L;
     this.PRisValueTypeFixup = false;
     this.PRnewObj = null;
     this.PRobjectA = null;
     this.PRprimitiveArray = null;
     this.PRobjectInfo = null;
     this.PRisRegistered = false;
     this.PRmemberData = null;
     this.PRsi = null;
     this.PRnullCount = 0;
 }
Exemplo n.º 5
0
 internal static bool IsWriteAsByteArray(InternalPrimitiveTypeE code)
 {
     switch (code)
     {
         case InternalPrimitiveTypeE.Boolean:
         case InternalPrimitiveTypeE.Char:
         case InternalPrimitiveTypeE.Byte:
         case InternalPrimitiveTypeE.Double:
         case InternalPrimitiveTypeE.Int16:
         case InternalPrimitiveTypeE.Int32:
         case InternalPrimitiveTypeE.Int64:
         case InternalPrimitiveTypeE.SByte:
         case InternalPrimitiveTypeE.Single:
         case InternalPrimitiveTypeE.UInt16:
         case InternalPrimitiveTypeE.UInt32:
         case InternalPrimitiveTypeE.UInt64:
             return true;
         default:
             return false;
     }
 }
Exemplo n.º 6
0
        internal static bool IsWriteAsByteArray(InternalPrimitiveTypeE code)
        {
            bool isWrite = false; 

            switch (code) 
            { 
                case InternalPrimitiveTypeE.Boolean:
                case InternalPrimitiveTypeE.Char: 
                case InternalPrimitiveTypeE.Byte:
                case InternalPrimitiveTypeE.Double:
                case InternalPrimitiveTypeE.Int16:
                case InternalPrimitiveTypeE.Int32: 
                case InternalPrimitiveTypeE.Int64:
                case InternalPrimitiveTypeE.SByte: 
                case InternalPrimitiveTypeE.Single: 
                case InternalPrimitiveTypeE.UInt16:
                case InternalPrimitiveTypeE.UInt32: 
                case InternalPrimitiveTypeE.UInt64:
                    isWrite = true;
                    break;
            } 
            return isWrite;
        } 
 internal void Init()
 {
     this.NInameSpaceEnum = InternalNameSpaceE.None;
     this.NIname = null;
     this.NIobjectId = 0L;
     this.NIassemId = 0L;
     this.NIprimitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
     this.NItype = null;
     this.NIisSealed = false;
     this.NItransmitTypeOnObject = false;
     this.NItransmitTypeOnMember = false;
     this.NIisParentTypeOnObject = false;
     this.NIisMustUnderstand = false;
     this.NInamespace = null;
     this.NIheaderPrefix = null;
     this.NIitemName = null;
     this.NIisArray = false;
     this.NIisArrayItem = false;
     this.NIisTopLevelObject = false;
     this.NIisNestedObject = false;
     this.NIisHeader = false;
     this.NIisRemoteRecord = false;
     this.NIattributeInfo = null;
 }
        internal static InternalPrimitiveTypeE ToCode(Type type)
        {
            InternalPrimitiveTypeE invalid = InternalPrimitiveTypeE.Invalid;

            if (type.IsEnum)
            {
                return(invalid = InternalPrimitiveTypeE.Invalid);
            }
            TypeCode typeCode = Type.GetTypeCode(type);

            if (typeCode == TypeCode.Object)
            {
                if (typeofISoapXsd.IsAssignableFrom(type))
                {
                    if (type == typeofSoapTime)
                    {
                        return(InternalPrimitiveTypeE.Time);
                    }
                    if (type == typeofSoapDate)
                    {
                        return(InternalPrimitiveTypeE.Date);
                    }
                    if (type == typeofSoapYearMonth)
                    {
                        return(InternalPrimitiveTypeE.YearMonth);
                    }
                    if (type == typeofSoapYear)
                    {
                        return(InternalPrimitiveTypeE.Year);
                    }
                    if (type == typeofSoapMonthDay)
                    {
                        return(InternalPrimitiveTypeE.MonthDay);
                    }
                    if (type == typeofSoapDay)
                    {
                        return(InternalPrimitiveTypeE.Day);
                    }
                    if (type == typeofSoapMonth)
                    {
                        return(InternalPrimitiveTypeE.Month);
                    }
                    if (type == typeofSoapHexBinary)
                    {
                        return(InternalPrimitiveTypeE.HexBinary);
                    }
                    if (type == typeofSoapBase64Binary)
                    {
                        return(InternalPrimitiveTypeE.Base64Binary);
                    }
                    if (type == typeofSoapInteger)
                    {
                        return(InternalPrimitiveTypeE.Integer);
                    }
                    if (type == typeofSoapPositiveInteger)
                    {
                        return(InternalPrimitiveTypeE.PositiveInteger);
                    }
                    if (type == typeofSoapNonPositiveInteger)
                    {
                        return(InternalPrimitiveTypeE.NonPositiveInteger);
                    }
                    if (type == typeofSoapNonNegativeInteger)
                    {
                        return(InternalPrimitiveTypeE.NonNegativeInteger);
                    }
                    if (type == typeofSoapNegativeInteger)
                    {
                        return(InternalPrimitiveTypeE.NegativeInteger);
                    }
                    if (type == typeofSoapAnyUri)
                    {
                        return(InternalPrimitiveTypeE.AnyUri);
                    }
                    if (type == typeofSoapQName)
                    {
                        return(InternalPrimitiveTypeE.QName);
                    }
                    if (type == typeofSoapNotation)
                    {
                        return(InternalPrimitiveTypeE.Notation);
                    }
                    if (type == typeofSoapNormalizedString)
                    {
                        return(InternalPrimitiveTypeE.NormalizedString);
                    }
                    if (type == typeofSoapToken)
                    {
                        return(InternalPrimitiveTypeE.Token);
                    }
                    if (type == typeofSoapLanguage)
                    {
                        return(InternalPrimitiveTypeE.Language);
                    }
                    if (type == typeofSoapName)
                    {
                        return(InternalPrimitiveTypeE.Name);
                    }
                    if (type == typeofSoapIdrefs)
                    {
                        return(InternalPrimitiveTypeE.Idrefs);
                    }
                    if (type == typeofSoapEntities)
                    {
                        return(InternalPrimitiveTypeE.Entities);
                    }
                    if (type == typeofSoapNmtoken)
                    {
                        return(InternalPrimitiveTypeE.Nmtoken);
                    }
                    if (type == typeofSoapNmtokens)
                    {
                        return(InternalPrimitiveTypeE.Nmtokens);
                    }
                    if (type == typeofSoapNcName)
                    {
                        return(InternalPrimitiveTypeE.NcName);
                    }
                    if (type == typeofSoapId)
                    {
                        return(InternalPrimitiveTypeE.Id);
                    }
                    if (type == typeofSoapIdref)
                    {
                        return(InternalPrimitiveTypeE.Idref);
                    }
                    if (type == typeofSoapEntity)
                    {
                        invalid = InternalPrimitiveTypeE.Entity;
                    }
                    return(invalid);
                }
                if (type == typeofTimeSpan)
                {
                    return(InternalPrimitiveTypeE.TimeSpan);
                }
                return(InternalPrimitiveTypeE.Invalid);
            }
            return(ToPrimitiveTypeEnum(typeCode));
        }
Exemplo n.º 9
0
 private NameInfo TypeToNameInfo(WriteObjectInfo objectInfo, InternalPrimitiveTypeE code)
 {
     return TypeToNameInfo(objectInfo.objectType, objectInfo, code, null);
 }
 internal static string SoapToString(object data, InternalPrimitiveTypeE code)
 {
     return(ToString(data, code));
 }
 internal void Set(InternalPrimitiveTypeE typeInformation)
 {
     _typeInformation = typeInformation;
 }
Exemplo n.º 12
0
        // ReadValue from stream using InternalPrimitiveTypeE code
        internal Object ReadValue(InternalPrimitiveTypeE code)
        {
            SerTrace.Log( this, "ReadValue ",((Enum)code).ToString());
            Object var = null;

            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                var = ReadBoolean();
                break;
            case InternalPrimitiveTypeE.Byte:
                var = ReadByte();
                break;
            case InternalPrimitiveTypeE.Char:
                var = ReadChar();           
                break;
            case InternalPrimitiveTypeE.Double:
                var = ReadDouble();
                break;
            case InternalPrimitiveTypeE.Int16:
                var = ReadInt16();
                break;
            case InternalPrimitiveTypeE.Int32:
                var = ReadInt32();
                break;
            case InternalPrimitiveTypeE.Int64:
                var = ReadInt64();          
                break;
            case InternalPrimitiveTypeE.SByte:
                var = ReadSByte();
                break;
            case InternalPrimitiveTypeE.Single:
                var = ReadSingle();         
                break;
            case InternalPrimitiveTypeE.UInt16:
                var = ReadUInt16();                     
                break;
            case InternalPrimitiveTypeE.UInt32:
                var = ReadUInt32();                                 
                break;
            case InternalPrimitiveTypeE.UInt64:
                var = ReadUInt64();                                             
                break;
            case InternalPrimitiveTypeE.Decimal:
                var = ReadDecimal();                    
                break;
            case InternalPrimitiveTypeE.TimeSpan:
                var = ReadTimeSpan();                                       
                break;
            case InternalPrimitiveTypeE.DateTime:
                var = ReadDateTime();                                                           
                break;
            default:
                throw new SerializationException(Environment.GetResourceString("Serialization_TypeCode",((Enum)code).ToString()));
            }
            SerTrace.Log( "ReadValue Exit ",var);
            return var;
        }
Exemplo n.º 13
0
 internal static string ToComType(InternalPrimitiveTypeE code)
 {
     if (s_valueA == null)
     {
         InitValueA();
     }
     return s_valueA[(int)code];
 }
Exemplo n.º 14
0
        // Initialize ParseRecord. Called when reusing.
        internal void Init()
        {
            // Enums
            PRparseTypeEnum      = InternalParseTypeE.Empty;
            PRobjectTypeEnum     = InternalObjectTypeE.Empty;
            PRarrayTypeEnum      = InternalArrayTypeE.Empty;
            PRmemberTypeEnum     = InternalMemberTypeE.Empty;
            PRmemberValueEnum    = InternalMemberValueE.Empty;
            PRobjectPositionEnum = InternalObjectPositionE.Empty;

            // Object
            PRname                = null;
            PRnameXmlKey          = null;
            PRxmlNameSpace        = null;
            PRisParsed            = false;
            PRisProcessAttributes = false;

            // Value
            PRvalue = null;

            // dt attribute
            PRkeyDt        = null;
            PRdtType       = null;
            PRassemblyName = null;
            PRdtTypeCode   = InternalPrimitiveTypeE.Invalid;
            PRisEnum       = false;

            // Object ID
            PRobjectId = 0;

            // Reference ID
            PRidRef = 0;

            // Array

            // Array Element Type
            PRarrayElementTypeString = null;
            PRarrayElementType       = null;
            PRisArrayVariant         = false;
            PRarrayElementTypeCode   = InternalPrimitiveTypeE.Invalid;


            // Array Primitive Element type
            PRprimitiveArrayTypeString = null;

            // Parsed array information
            PRrank        = 0;
            PRlengthA     = null;
            PRpositionA   = null;
            PRlowerBoundA = null;
            PRupperBoundA = null;

            // Array map for placing array elements in array
            PRindexMap       = null;
            PRmemberIndex    = 0;
            PRlinearlength   = 0;
            PRrectangularMap = null;
            PRisLowerBound   = false;

            // SerializedStreamHeader information
            PRtopId                 = 0;
            PRheaderId              = 0;
            PRisHeaderRoot          = false;
            PRisAttributesProcessed = false;

            // Parsed HeaderMember Information
            PRisMustUnderstand = false;

            // Parse State
            PRparseStateEnum           = InternalParseStateE.Initial;
            PRisWaitingForNestedObject = false;


            // ValueType Fixup needed
            PRisValueTypeFixup = false;

            PRnewObj         = null;
            PRobjectA        = null;
            PRprimitiveArray = null;
            PRobjectInfo     = null;
            PRisRegistered   = false;

            PRisXmlAttribute = false;
        }
 internal InternalPrimitiveTypeE ToCode(Type type)
 {
     if (Object.ReferenceEquals(previousType, type))
     {
         return previousCode;
     }
     else
     {
         InternalPrimitiveTypeE code = Converter.ToCode(type);
         if (code != InternalPrimitiveTypeE.Invalid)
         {
             previousType = type;
             previousCode = code;
         }
         return code;
     }
 }
        internal static InternalPrimitiveTypeE ToCode(string value)
        {
            if (value == null)
            {
                throw new ArgumentNullException("serParser", string.Format(CultureInfo.CurrentCulture, SoapUtil.GetResourceString("ArgumentNull_WithParamName"), new object[] { value }));
            }
            string str = value.ToLower(CultureInfo.InvariantCulture);
            char   ch  = str[0];
            InternalPrimitiveTypeE invalid = InternalPrimitiveTypeE.Invalid;

            switch (ch)
            {
            case 'a':
                if (str == "anyuri")
                {
                    invalid = InternalPrimitiveTypeE.AnyUri;
                }
                return(invalid);

            case 'b':
                if (!(str == "boolean"))
                {
                    switch (str)
                    {
                    case "byte":
                        return(InternalPrimitiveTypeE.SByte);

                    case "base64binary":
                        return(InternalPrimitiveTypeE.Base64Binary);

                    case "base64":
                        invalid = InternalPrimitiveTypeE.Base64Binary;
                        break;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Boolean);

            case 'c':
                if (!(str == "char") && !(str == "character"))
                {
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Char);

            case 'd':
                switch (str)
                {
                case "double":
                    invalid = InternalPrimitiveTypeE.Double;
                    break;

                case "datetime":
                    return(InternalPrimitiveTypeE.DateTime);

                case "duration":
                    return(InternalPrimitiveTypeE.TimeSpan);

                case "date":
                    return(InternalPrimitiveTypeE.Date);

                case "decimal":
                    invalid = InternalPrimitiveTypeE.Decimal;
                    break;
                }
                return(invalid);

            case 'e':
                if (!(str == "entities"))
                {
                    if (str == "entity")
                    {
                        invalid = InternalPrimitiveTypeE.Entity;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Entities);

            case 'f':
                if (str == "float")
                {
                    invalid = InternalPrimitiveTypeE.Single;
                }
                return(invalid);

            case 'g':
                if (!(str == "gyearmonth"))
                {
                    if (str == "gyear")
                    {
                        return(InternalPrimitiveTypeE.Year);
                    }
                    if (str == "gmonthday")
                    {
                        return(InternalPrimitiveTypeE.MonthDay);
                    }
                    if (str == "gday")
                    {
                        return(InternalPrimitiveTypeE.Day);
                    }
                    if (str == "gmonth")
                    {
                        invalid = InternalPrimitiveTypeE.Month;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.YearMonth);

            case 'h':
                if (str == "hexbinary")
                {
                    invalid = InternalPrimitiveTypeE.HexBinary;
                }
                return(invalid);

            case 'i':
                switch (str)
                {
                case "int":
                    invalid = InternalPrimitiveTypeE.Int32;
                    break;

                case "integer":
                    return(InternalPrimitiveTypeE.Integer);

                case "idrefs":
                    return(InternalPrimitiveTypeE.Idrefs);

                case "id":
                    return(InternalPrimitiveTypeE.Id);

                case "idref":
                    invalid = InternalPrimitiveTypeE.Idref;
                    break;
                }
                return(invalid);

            case 'l':
                if (!(str == "long"))
                {
                    if (str == "language")
                    {
                        invalid = InternalPrimitiveTypeE.Language;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Int64);

            case 'n':
                if (!(str == "number"))
                {
                    if (str == "normalizedstring")
                    {
                        return(InternalPrimitiveTypeE.NormalizedString);
                    }
                    if (str == "nonpositiveinteger")
                    {
                        return(InternalPrimitiveTypeE.NonPositiveInteger);
                    }
                    if (str == "negativeinteger")
                    {
                        return(InternalPrimitiveTypeE.NegativeInteger);
                    }
                    if (str == "nonnegativeinteger")
                    {
                        return(InternalPrimitiveTypeE.NonNegativeInteger);
                    }
                    if (str == "notation")
                    {
                        return(InternalPrimitiveTypeE.Notation);
                    }
                    if (str == "nmtoken")
                    {
                        return(InternalPrimitiveTypeE.Nmtoken);
                    }
                    if (str == "nmtokens")
                    {
                        return(InternalPrimitiveTypeE.Nmtokens);
                    }
                    if (str == "name")
                    {
                        return(InternalPrimitiveTypeE.Name);
                    }
                    if (str == "ncname")
                    {
                        invalid = InternalPrimitiveTypeE.NcName;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Decimal);

            case 'p':
                if (str == "positiveinteger")
                {
                    invalid = InternalPrimitiveTypeE.PositiveInteger;
                }
                return(invalid);

            case 'q':
                if (str == "qname")
                {
                    invalid = InternalPrimitiveTypeE.QName;
                }
                return(invalid);

            case 's':
                if (!(str == "short"))
                {
                    if (str == "system.byte")
                    {
                        return(InternalPrimitiveTypeE.Byte);
                    }
                    if (str == "system.sbyte")
                    {
                        return(InternalPrimitiveTypeE.SByte);
                    }
                    if (str == "system")
                    {
                        return(ToCode(value.Substring(7)));
                    }
                    if (str == "system.runtime.remoting.metadata")
                    {
                        invalid = ToCode(value.Substring(0x21));
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Int16);

            case 't':
                if (!(str == "time"))
                {
                    if (str == "token")
                    {
                        return(InternalPrimitiveTypeE.Token);
                    }
                    if (str == "timeinstant")
                    {
                        return(InternalPrimitiveTypeE.DateTime);
                    }
                    if (str == "timeduration")
                    {
                        invalid = InternalPrimitiveTypeE.TimeSpan;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.Time);

            case 'u':
                if (!(str == "unsignedlong"))
                {
                    if (str == "unsignedint")
                    {
                        return(InternalPrimitiveTypeE.UInt32);
                    }
                    if (str == "unsignedshort")
                    {
                        return(InternalPrimitiveTypeE.UInt16);
                    }
                    if (str == "unsignedbyte")
                    {
                        invalid = InternalPrimitiveTypeE.Byte;
                    }
                    return(invalid);
                }
                return(InternalPrimitiveTypeE.UInt64);
            }
            return(InternalPrimitiveTypeE.Invalid);
        }
Exemplo n.º 17
0
 public void Read(__BinaryParser input)
 {
     this.primitiveTypeEnum = (InternalPrimitiveTypeE)input.ReadByte();
     this.value             = input.ReadValue(this.primitiveTypeEnum);
 }
        internal static void TypeFromInfo(BinaryTypeEnum binaryTypeEnum, object typeInformation, ObjectReader objectReader, BinaryAssemblyInfo assemblyInfo, out InternalPrimitiveTypeE primitiveTypeEnum, out string typeString, out Type type, out bool isVariant)
        {
            isVariant         = false;
            primitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
            typeString        = null;
            type = null;
            switch (binaryTypeEnum)
            {
            case BinaryTypeEnum.Primitive:
                primitiveTypeEnum = (InternalPrimitiveTypeE)typeInformation;
                typeString        = Converter.ToComType(primitiveTypeEnum);
                type = Converter.ToType(primitiveTypeEnum);
                return;

            case BinaryTypeEnum.String:
                type = Converter.typeofString;
                return;

            case BinaryTypeEnum.Object:
                type      = Converter.typeofObject;
                isVariant = true;
                return;

            case BinaryTypeEnum.ObjectUrt:
            case BinaryTypeEnum.ObjectUser:
                if (typeInformation != null)
                {
                    typeString = typeInformation.ToString();
                    type       = objectReader.GetType(assemblyInfo, typeString);
                    if (type == Converter.typeofObject)
                    {
                        isVariant = true;
                        return;
                    }
                }
                return;

            case BinaryTypeEnum.ObjectArray:
                type = Converter.typeofObjectArray;
                return;

            case BinaryTypeEnum.StringArray:
                type = Converter.typeofStringArray;
                return;

            case BinaryTypeEnum.PrimitiveArray:
                primitiveTypeEnum = (InternalPrimitiveTypeE)typeInformation;
                type = Converter.ToArrayType(primitiveTypeEnum);
                return;

            default:
                throw new SerializationException(Environment.GetResourceString("Serialization_TypeRead", new object[]
                {
                    binaryTypeEnum.ToString()
                }));
            }
        }
        // Token: 0x06005295 RID: 21141 RVA: 0x00121EF4 File Offset: 0x001200F4
        internal static BinaryTypeEnum GetBinaryTypeInfo(Type type, WriteObjectInfo objectInfo, string typeName, ObjectWriter objectWriter, out object typeInformation, out int assemId)
        {
            assemId         = 0;
            typeInformation = null;
            BinaryTypeEnum result;

            if (type == Converter.typeofString)
            {
                result = BinaryTypeEnum.String;
            }
            else if ((objectInfo == null || (objectInfo != null && !objectInfo.isSi)) && type == Converter.typeofObject)
            {
                result = BinaryTypeEnum.Object;
            }
            else if (type == Converter.typeofStringArray)
            {
                result = BinaryTypeEnum.StringArray;
            }
            else if (type == Converter.typeofObjectArray)
            {
                result = BinaryTypeEnum.ObjectArray;
            }
            else if (Converter.IsPrimitiveArray(type, out typeInformation))
            {
                result = BinaryTypeEnum.PrimitiveArray;
            }
            else
            {
                InternalPrimitiveTypeE internalPrimitiveTypeE = objectWriter.ToCode(type);
                if (internalPrimitiveTypeE == InternalPrimitiveTypeE.Invalid)
                {
                    string text;
                    if (objectInfo == null)
                    {
                        text            = type.Assembly.FullName;
                        typeInformation = type.FullName;
                    }
                    else
                    {
                        text            = objectInfo.GetAssemblyString();
                        typeInformation = objectInfo.GetTypeFullName();
                    }
                    if (text.Equals(Converter.urtAssemblyString))
                    {
                        result  = BinaryTypeEnum.ObjectUrt;
                        assemId = 0;
                    }
                    else
                    {
                        result  = BinaryTypeEnum.ObjectUser;
                        assemId = (int)objectInfo.assemId;
                        if (assemId == 0)
                        {
                            throw new SerializationException(Environment.GetResourceString("Serialization_AssemblyId", new object[]
                            {
                                typeInformation
                            }));
                        }
                    }
                }
                else
                {
                    result          = BinaryTypeEnum.Primitive;
                    typeInformation = internalPrimitiveTypeE;
                }
            }
            return(result);
        }
Exemplo n.º 20
0
        // ReadValue from stream using InternalPrimitiveTypeE code
        internal Object ReadValue(InternalPrimitiveTypeE code)
        {
            SerTrace.Log(this, "ReadValue ", ((Enum)code).ToString());
            Object var = null;

            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                var = ReadBoolean();
                break;

            case InternalPrimitiveTypeE.Byte:
                var = ReadByte();
                break;

            case InternalPrimitiveTypeE.Char:
                var = ReadChar();
                break;

            case InternalPrimitiveTypeE.Double:
                var = ReadDouble();
                break;

            case InternalPrimitiveTypeE.Int16:
                var = ReadInt16();
                break;

            case InternalPrimitiveTypeE.Int32:
                var = ReadInt32();
                break;

            case InternalPrimitiveTypeE.Int64:
                var = ReadInt64();
                break;

            case InternalPrimitiveTypeE.SByte:
                var = ReadSByte();
                break;

            case InternalPrimitiveTypeE.Single:
                var = ReadSingle();
                break;

            case InternalPrimitiveTypeE.UInt16:
                var = ReadUInt16();
                break;

            case InternalPrimitiveTypeE.UInt32:
                var = ReadUInt32();
                break;

            case InternalPrimitiveTypeE.UInt64:
                var = ReadUInt64();
                break;

            case InternalPrimitiveTypeE.Decimal:
                var = ReadDecimal();
                break;

            case InternalPrimitiveTypeE.TimeSpan:
                var = ReadTimeSpan();
                break;

            case InternalPrimitiveTypeE.DateTime:
                var = ReadDateTime();
                break;

            default:
                throw new SerializationException(String.Format(Environment.GetResourceString("Serialization_TypeCode"), ((Enum)code).ToString()));
            }
            SerTrace.Log("ReadValue Exit ", var);
            return(var);
        }
 internal PrimitiveArray(InternalPrimitiveTypeE code, Array array)
 {
     this.Init(code, array);
 }
Exemplo n.º 22
0
        internal void WriteValue(InternalPrimitiveTypeE code, object value)
        {
            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                this.WriteBoolean(Convert.ToBoolean(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Byte:
                this.WriteByte(Convert.ToByte(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Char:
                this.WriteChar(Convert.ToChar(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Decimal:
                this.WriteDecimal(Convert.ToDecimal(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Double:
                this.WriteDouble(Convert.ToDouble(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int16:
                this.WriteInt16(Convert.ToInt16(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int32:
                this.WriteInt32(Convert.ToInt32(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int64:
                this.WriteInt64(Convert.ToInt64(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.SByte:
                this.WriteSByte(Convert.ToSByte(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Single:
                this.WriteSingle(Convert.ToSingle(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.TimeSpan:
                this.WriteTimeSpan((TimeSpan)value);
                break;

            case InternalPrimitiveTypeE.DateTime:
                this.WriteDateTime((DateTime)value);
                break;

            case InternalPrimitiveTypeE.UInt16:
                this.WriteUInt16(Convert.ToUInt16(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.UInt32:
                this.WriteUInt32(Convert.ToUInt32(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.UInt64:
                this.WriteUInt64(Convert.ToUInt64(value, (IFormatProvider)CultureInfo.InvariantCulture));
                break;

            default:
                throw new SerializationException(Environment.GetResourceString("Serialization_TypeCode", (object)code.ToString()));
            }
        }
Exemplo n.º 23
0
        // Method to write a value onto a stream given its primitive type code
        internal void WriteValue(InternalPrimitiveTypeE code, Object value) 
        {
            SerTrace.Log( this, "WriteValue Entry ",((Enum)code).ToString()," " , ((value==null)?"<null>":value.GetType().ToString()) , " ",value); 
 
            switch (code)
            { 
            case InternalPrimitiveTypeE.Boolean:
                WriteBoolean(Convert.ToBoolean(value, CultureInfo.InvariantCulture));
                break;
            case InternalPrimitiveTypeE.Byte: 
                WriteByte(Convert.ToByte(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Char: 
                WriteChar(Convert.ToChar(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Double:
                WriteDouble(Convert.ToDouble(value, CultureInfo.InvariantCulture));
                break;
            case InternalPrimitiveTypeE.Int16: 
                WriteInt16(Convert.ToInt16(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Int32: 
                WriteInt32(Convert.ToInt32(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Int64:
                WriteInt64(Convert.ToInt64(value, CultureInfo.InvariantCulture));
                break;
            case InternalPrimitiveTypeE.SByte: 
                WriteSByte(Convert.ToSByte(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Single: 
                WriteSingle(Convert.ToSingle(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.UInt16:
                WriteUInt16(Convert.ToUInt16(value, CultureInfo.InvariantCulture));
                break;
            case InternalPrimitiveTypeE.UInt32: 
                WriteUInt32(Convert.ToUInt32(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.UInt64: 
                WriteUInt64(Convert.ToUInt64(value, CultureInfo.InvariantCulture));
                break; 
            case InternalPrimitiveTypeE.Decimal:
                WriteDecimal(Convert.ToDecimal(value, CultureInfo.InvariantCulture));
                break;
            case InternalPrimitiveTypeE.TimeSpan: 
                WriteTimeSpan((TimeSpan)value);
                break; 
            case InternalPrimitiveTypeE.DateTime: 
                WriteDateTime((DateTime)value);
                break; 
            default:
                throw new SerializationException(Environment.GetResourceString("Serialization_TypeCode",((Enum)code).ToString()));
            }
            SerTrace.Log( this, "Write Exit "); 
        }
Exemplo n.º 24
0
        // Method to write a value onto a stream given its primitive type code
        internal void WriteValue(InternalPrimitiveTypeE code, Object value)
        {
            SerTrace.Log(this, "WriteValue Entry ", ((Enum)code).ToString(), " ", ((value == null)?"<null>":value.GetType().ToString()), " ", value);

            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                WriteBoolean(Convert.ToBoolean(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Byte:
                WriteByte(Convert.ToByte(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Char:
                WriteChar(Convert.ToChar(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Double:
                WriteDouble(Convert.ToDouble(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int16:
                WriteInt16(Convert.ToInt16(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int32:
                WriteInt32(Convert.ToInt32(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Int64:
                WriteInt64(Convert.ToInt64(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.SByte:
                WriteSByte(Convert.ToSByte(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Single:
                WriteSingle(Convert.ToSingle(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.UInt16:
                WriteUInt16(Convert.ToUInt16(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.UInt32:
                WriteUInt32(Convert.ToUInt32(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.UInt64:
                WriteUInt64(Convert.ToUInt64(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.Decimal:
                WriteDecimal(Convert.ToDecimal(value, CultureInfo.InvariantCulture));
                break;

            case InternalPrimitiveTypeE.TimeSpan:
                WriteTimeSpan((TimeSpan)value);
                break;

            case InternalPrimitiveTypeE.DateTime:
                WriteDateTime((DateTime)value);
                break;

            default:
                throw new SerializationException(Environment.GetResourceString("Serialization_TypeCode", ((Enum)code).ToString()));
            }
            SerTrace.Log(this, "Write Exit ");
        }
 internal PrimitiveArray(InternalPrimitiveTypeE code, Array array)
 {
     _code = code;
     switch (code)
     {
         case InternalPrimitiveTypeE.Boolean: _booleanA = (bool[])array; break;
         case InternalPrimitiveTypeE.Char: _charA = (char[])array; break;
         case InternalPrimitiveTypeE.Double: _doubleA = (double[])array; break;
         case InternalPrimitiveTypeE.Int16: _int16A = (short[])array; break;
         case InternalPrimitiveTypeE.Int32: _int32A = (int[])array; break;
         case InternalPrimitiveTypeE.Int64: _int64A = (long[])array; break;
         case InternalPrimitiveTypeE.SByte: _sbyteA = (sbyte[])array; break;
         case InternalPrimitiveTypeE.Single: _singleA = (float[])array; break;
         case InternalPrimitiveTypeE.UInt16: _uint16A = (ushort[])array; break;
         case InternalPrimitiveTypeE.UInt32: _uint32A = (uint[])array; break;
         case InternalPrimitiveTypeE.UInt64: _uint64A = (ulong[])array; break;
     }
 }
Exemplo n.º 26
0
 internal void Set(InternalPrimitiveTypeE typeInformation, Object value)
 {
     SerTrace.Log(this, "MemberPrimitiveUnTyped Set typeInformation ", typeInformation, " value ", value);
     this.typeInformation = typeInformation;
     this.value           = value;
 }
Exemplo n.º 27
0
        internal static InternalNameSpaceE GetNameSpaceEnum(InternalPrimitiveTypeE code, Type type, WriteObjectInfo objectInfo, out string typeName)
        {
            InternalNameSpaceE nameSpaceEnum = InternalNameSpaceE.None;
            typeName = null;

            if (code != InternalPrimitiveTypeE.Invalid)
            {
                switch (code)
                {
                    case InternalPrimitiveTypeE.Boolean:
                    case InternalPrimitiveTypeE.Char:
                    case InternalPrimitiveTypeE.Byte:
                    case InternalPrimitiveTypeE.Double:
                    case InternalPrimitiveTypeE.Int16:
                    case InternalPrimitiveTypeE.Int32:
                    case InternalPrimitiveTypeE.Int64:
                    case InternalPrimitiveTypeE.SByte:
                    case InternalPrimitiveTypeE.Single:
                    case InternalPrimitiveTypeE.UInt16:
                    case InternalPrimitiveTypeE.UInt32:
                    case InternalPrimitiveTypeE.UInt64:
                    case InternalPrimitiveTypeE.DateTime:
                    case InternalPrimitiveTypeE.TimeSpan:
                        nameSpaceEnum = InternalNameSpaceE.XdrPrimitive;
                        typeName = "System." + ToComType(code);
                        break;

                    case InternalPrimitiveTypeE.Decimal:
                        nameSpaceEnum = InternalNameSpaceE.UrtSystem;
                        typeName = "System." + ToComType(code);
                        break;
                }
            }

            if ((nameSpaceEnum == InternalNameSpaceE.None) && type != null)
            {
                if (ReferenceEquals(type, s_typeofString))
                {
                    nameSpaceEnum = InternalNameSpaceE.XdrString;
                }
                else
                {
                    if (objectInfo == null)
                    {
                        typeName = type.FullName;
                        nameSpaceEnum = type.GetTypeInfo().Assembly == s_urtAssembly ? InternalNameSpaceE.UrtSystem : InternalNameSpaceE.UrtUser;
                    }
                    else
                    {
                        typeName = objectInfo.GetTypeFullName();
                        nameSpaceEnum = objectInfo.GetAssemblyString().Equals(s_urtAssemblyString) ? InternalNameSpaceE.UrtSystem : InternalNameSpaceE.UrtUser;
                    }
                }
            }

            return nameSpaceEnum;
        }
        internal static InternalNameSpaceE GetNameSpaceEnum(InternalPrimitiveTypeE code, Type type, WriteObjectInfo objectInfo, out string typeName)
        {
            InternalNameSpaceE none = InternalNameSpaceE.None;

            typeName = null;
            if (code != InternalPrimitiveTypeE.Invalid)
            {
                if (code == InternalPrimitiveTypeE.Char)
                {
                    none     = InternalNameSpaceE.UrtSystem;
                    typeName = "System.Char";
                }
                else
                {
                    none     = InternalNameSpaceE.XdrPrimitive;
                    typeName = ToXmlDataType(code);
                }
            }
            if ((none == InternalNameSpaceE.None) && (type != null))
            {
                if (type == typeofString)
                {
                    none = InternalNameSpaceE.XdrString;
                }
                else if (objectInfo == null)
                {
                    typeName = type.FullName;
                    if (type.Module.Assembly == urtAssembly)
                    {
                        none = InternalNameSpaceE.UrtSystem;
                    }
                    else
                    {
                        none = InternalNameSpaceE.UrtUser;
                    }
                }
                else
                {
                    typeName = objectInfo.GetTypeFullName();
                    if (objectInfo.GetAssemblyString().Equals(urtAssemblyString))
                    {
                        none = InternalNameSpaceE.UrtSystem;
                    }
                    else
                    {
                        none = InternalNameSpaceE.UrtUser;
                    }
                }
            }
            if (objectInfo != null)
            {
                if (!objectInfo.isSi && ((objectInfo.IsAttributeNameSpace() || objectInfo.IsCustomXmlAttribute()) || objectInfo.IsCustomXmlElement()))
                {
                    return(InternalNameSpaceE.Interop);
                }
                if (objectInfo.IsCallElement())
                {
                    none = InternalNameSpaceE.CallElement;
                }
            }
            return(none);
        }
Exemplo n.º 29
0
 private static void InitCodeA()
 {
     var codeATemp = new InternalPrimitiveTypeE[19];
     codeATemp[(int)TypeCode.Empty] = InternalPrimitiveTypeE.Invalid;
     codeATemp[(int)TypeCode.Object] = InternalPrimitiveTypeE.Invalid;
     codeATemp[2] = InternalPrimitiveTypeE.Invalid; // TODO: Change 2 to (int)TypeCode.DBNull when it's available
     codeATemp[(int)TypeCode.Boolean] = InternalPrimitiveTypeE.Boolean;
     codeATemp[(int)TypeCode.Char] = InternalPrimitiveTypeE.Char;
     codeATemp[(int)TypeCode.SByte] = InternalPrimitiveTypeE.SByte;
     codeATemp[(int)TypeCode.Byte] = InternalPrimitiveTypeE.Byte;
     codeATemp[(int)TypeCode.Int16] = InternalPrimitiveTypeE.Int16;
     codeATemp[(int)TypeCode.UInt16] = InternalPrimitiveTypeE.UInt16;
     codeATemp[(int)TypeCode.Int32] = InternalPrimitiveTypeE.Int32;
     codeATemp[(int)TypeCode.UInt32] = InternalPrimitiveTypeE.UInt32;
     codeATemp[(int)TypeCode.Int64] = InternalPrimitiveTypeE.Int64;
     codeATemp[(int)TypeCode.UInt64] = InternalPrimitiveTypeE.UInt64;
     codeATemp[(int)TypeCode.Single] = InternalPrimitiveTypeE.Single;
     codeATemp[(int)TypeCode.Double] = InternalPrimitiveTypeE.Double;
     codeATemp[(int)TypeCode.Decimal] = InternalPrimitiveTypeE.Decimal;
     codeATemp[(int)TypeCode.DateTime] = InternalPrimitiveTypeE.DateTime;
     codeATemp[17] = InternalPrimitiveTypeE.Invalid;
     codeATemp[(int)TypeCode.String] = InternalPrimitiveTypeE.Invalid;
     s_codeA = codeATemp;
 }
 internal static Type SoapToType(InternalPrimitiveTypeE code)
 {
     return(ToType(code));
 }
 internal void Set(InternalPrimitiveTypeE typeInformation, object?value)
 {
     _typeInformation = typeInformation;
     _value           = value;
 }
Exemplo n.º 32
0
        // Transforms a type to the serialized string form. URT Primitive types are converted to XMLData Types
        private NameInfo TypeToNameInfo(Type type, WriteObjectInfo objectInfo, InternalPrimitiveTypeE code, NameInfo nameInfo)
        {
            InternalST.Soap( this, "TypeToNameInfo Entry type ",type,", objectInfo ",objectInfo,", code ", ((Enum)code).ToString());
            if (nameInfo == null)
                nameInfo = GetNameInfo();
            else
                nameInfo.Init();

            nameInfo.NIisSealed = type.IsSealed;

            String typeName = null;
            nameInfo.NInameSpaceEnum = Converter.GetNameSpaceEnum(code, type, objectInfo, out typeName);
            nameInfo.NIprimitiveTypeEnum = code;
            nameInfo.NItype = type;
            nameInfo.NIname = typeName;
            if (objectInfo != null)
            {
                nameInfo.NIattributeInfo = objectInfo.typeAttributeInfo;                    
                nameInfo.NIassemId = objectInfo.assemId;
            }

            switch (nameInfo.NInameSpaceEnum)
            {
                case InternalNameSpaceE.XdrPrimitive:
                    break;
                case InternalNameSpaceE.XdrString:
                    nameInfo.NIname = "string";
                    break;
                case InternalNameSpaceE.UrtSystem:
                    break;
                case InternalNameSpaceE.UrtUser:
                    //if (type.FullName.StartsWith("System."))
                    if (type.Module.Assembly == Converter.urtAssembly)
                    {
                        // The type name could be an ISerializable
                        // But the type returned (typeName) could be a fake
                        // type
                    }
                    else
                    {
                        if (objectInfo == null)
                        {
                            InternalST.Soap( this, "TypeToNameInfo ObjectInfo is null 2 ",type);
                        }
                    }
                    break;
            }

            InternalST.Soap( this, "TypeToNameInfo Exit ",type, " typeName "+nameInfo.NIname);
            return nameInfo;            
        }
Exemplo n.º 33
0
 internal void Set(InternalPrimitiveTypeE typeInformation)
 {
     SerTrace.Log(this, "MemberPrimitiveUnTyped  Set ", typeInformation);
     this.typeInformation = typeInformation;
 }
        internal static object FromString(string value, InternalPrimitiveTypeE code)
        {
            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                if (!(value == "1") && !(value == "true"))
                {
                    if ((value != "0") && (value != "false"))
                    {
                        throw new SerializationException(string.Format(CultureInfo.CurrentCulture, SoapUtil.GetResourceString("Serialization_typeCoercion"), new object[] { value, "Boolean" }));
                    }
                    return(false);
                }
                return(true);

            case InternalPrimitiveTypeE.Double:
                if (!(value == "INF"))
                {
                    if (value == "-INF")
                    {
                        return((double)-1.0 / (double)0.0);
                    }
                    return(double.Parse(value, CultureInfo.InvariantCulture));
                }
                return((double)1.0 / (double)0.0);

            case InternalPrimitiveTypeE.Single:
                if (!(value == "INF"))
                {
                    if (value == "-INF")
                    {
                        return((float)-1.0 / (float)0.0);
                    }
                    return(float.Parse(value, CultureInfo.InvariantCulture));
                }
                return((float)1.0 / (float)0.0);

            case InternalPrimitiveTypeE.TimeSpan:
                return(SoapDuration.Parse(value));

            case InternalPrimitiveTypeE.DateTime:
                return(SoapDateTime.Parse(value));

            case InternalPrimitiveTypeE.Time:
                return(SoapTime.Parse(value));

            case InternalPrimitiveTypeE.Date:
                return(SoapDate.Parse(value));

            case InternalPrimitiveTypeE.YearMonth:
                return(SoapYearMonth.Parse(value));

            case InternalPrimitiveTypeE.Year:
                return(SoapYear.Parse(value));

            case InternalPrimitiveTypeE.MonthDay:
                return(SoapMonthDay.Parse(value));

            case InternalPrimitiveTypeE.Day:
                return(SoapDay.Parse(value));

            case InternalPrimitiveTypeE.Month:
                return(SoapMonth.Parse(value));

            case InternalPrimitiveTypeE.HexBinary:
                return(SoapHexBinary.Parse(value));

            case InternalPrimitiveTypeE.Base64Binary:
                return(SoapBase64Binary.Parse(value));

            case InternalPrimitiveTypeE.Integer:
                return(SoapInteger.Parse(value));

            case InternalPrimitiveTypeE.PositiveInteger:
                return(SoapPositiveInteger.Parse(value));

            case InternalPrimitiveTypeE.NonPositiveInteger:
                return(SoapNonPositiveInteger.Parse(value));

            case InternalPrimitiveTypeE.NonNegativeInteger:
                return(SoapNonNegativeInteger.Parse(value));

            case InternalPrimitiveTypeE.NegativeInteger:
                return(SoapNegativeInteger.Parse(value));

            case InternalPrimitiveTypeE.AnyUri:
                return(SoapAnyUri.Parse(value));

            case InternalPrimitiveTypeE.QName:
                return(SoapQName.Parse(value));

            case InternalPrimitiveTypeE.Notation:
                return(SoapNotation.Parse(value));

            case InternalPrimitiveTypeE.NormalizedString:
                return(SoapNormalizedString.Parse(value));

            case InternalPrimitiveTypeE.Token:
                return(SoapToken.Parse(value));

            case InternalPrimitiveTypeE.Language:
                return(SoapLanguage.Parse(value));

            case InternalPrimitiveTypeE.Name:
                return(SoapName.Parse(value));

            case InternalPrimitiveTypeE.Idrefs:
                return(SoapIdrefs.Parse(value));

            case InternalPrimitiveTypeE.Entities:
                return(SoapEntities.Parse(value));

            case InternalPrimitiveTypeE.Nmtoken:
                return(SoapNmtoken.Parse(value));

            case InternalPrimitiveTypeE.Nmtokens:
                return(SoapNmtokens.Parse(value));

            case InternalPrimitiveTypeE.NcName:
                return(SoapNcName.Parse(value));

            case InternalPrimitiveTypeE.Id:
                return(SoapId.Parse(value));

            case InternalPrimitiveTypeE.Idref:
                return(SoapIdref.Parse(value));

            case InternalPrimitiveTypeE.Entity:
                return(SoapEntity.Parse(value));
            }
            if (code != InternalPrimitiveTypeE.Invalid)
            {
                return(Convert.ChangeType(value, ToTypeCode(code), CultureInfo.InvariantCulture));
            }
            return(value);
        }
Exemplo n.º 35
0
 // Translates a string into an Object
 internal static Object FromString(String value, InternalPrimitiveTypeE code) 
 { 
     Object var;
     SerTrace.Log( "Converter", "FromString Entry ",value," " , ((Enum)code).ToString()); 
     // InternalPrimitiveTypeE needs to be a primitive type
     Contract.Assert((code != InternalPrimitiveTypeE.Invalid), "[Converter.FromString]!InternalPrimitiveTypeE.Invalid ");
     if (code != InternalPrimitiveTypeE.Invalid)
         var = Convert.ChangeType(value, ToTypeCode(code), CultureInfo.InvariantCulture); 
     else
         var = value; 
     SerTrace.Log( "Converter", "FromString Exit "+((var == null)?"null":var+" var type "+((var==null)?"<null>":var.GetType().ToString()))); 
     return var;
 } 
Exemplo n.º 36
0
 internal void Set(InternalPrimitiveTypeE primitiveTypeEnum, Object value)
 {
     this.primitiveTypeEnum = primitiveTypeEnum;
     this.value             = value;
 }
Exemplo n.º 37
0
        internal static int TypeLength(InternalPrimitiveTypeE code)
        { 
            int length  = 0;

            switch (code)
            { 
                case InternalPrimitiveTypeE.Boolean:
                    length = 1; 
                    break; 
                case InternalPrimitiveTypeE.Char:
                    length = 2; 
                    break;
                case InternalPrimitiveTypeE.Byte:
                    length = 1;
                    break; 
                case InternalPrimitiveTypeE.Double:
                    length = 8; 
                    break; 
                case InternalPrimitiveTypeE.Int16:
                    length = 2; 
                    break;
                case InternalPrimitiveTypeE.Int32:
                    length = 4;
                    break; 
                case InternalPrimitiveTypeE.Int64:
                    length = 8; 
                    break; 
                case InternalPrimitiveTypeE.SByte:
                    length = 1; 
                    break;
                case InternalPrimitiveTypeE.Single:
                    length = 4;
                    break; 
                case InternalPrimitiveTypeE.UInt16:
                    length = 2; 
                    break; 
                case InternalPrimitiveTypeE.UInt32:
                    length = 4; 
                    break;
                case InternalPrimitiveTypeE.UInt64:
                    length = 8;
                    break; 
            }
            return length; 
        } 
Exemplo n.º 38
0
 public void Read(BinaryReader input)
 {
     primitiveTypeEnum = (InternalPrimitiveTypeE)input.ReadByte();
     value             = BinaryConverter.ReadPrimitiveType(input, primitiveTypeEnum);
 }
Exemplo n.º 39
0
 private NameInfo TypeToNameInfo(Type type, InternalPrimitiveTypeE code)
 {
     return TypeToNameInfo(type, null, code, null);
 }
Exemplo n.º 40
0
 internal static int TypeLength(InternalPrimitiveTypeE code) =>
 code switch
 {
        internal void WriteValue(InternalPrimitiveTypeE code, object value)
        {
            switch (code)
            {
                case InternalPrimitiveTypeE.Boolean:
                    this.WriteBoolean(Convert.ToBoolean(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Byte:
                    this.WriteByte(Convert.ToByte(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Char:
                    this.WriteChar(Convert.ToChar(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Decimal:
                    this.WriteDecimal(Convert.ToDecimal(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Double:
                    this.WriteDouble(Convert.ToDouble(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Int16:
                    this.WriteInt16(Convert.ToInt16(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Int32:
                    this.WriteInt32(Convert.ToInt32(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Int64:
                    this.WriteInt64(Convert.ToInt64(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.SByte:
                    this.WriteSByte(Convert.ToSByte(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.Single:
                    this.WriteSingle(Convert.ToSingle(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.TimeSpan:
                    this.WriteTimeSpan((TimeSpan) value);
                    return;

                case InternalPrimitiveTypeE.DateTime:
                    this.WriteDateTime((DateTime) value);
                    return;

                case InternalPrimitiveTypeE.UInt16:
                    this.WriteUInt16(Convert.ToUInt16(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.UInt32:
                    this.WriteUInt32(Convert.ToUInt32(value, CultureInfo.InvariantCulture));
                    return;

                case InternalPrimitiveTypeE.UInt64:
                    this.WriteUInt64(Convert.ToUInt64(value, CultureInfo.InvariantCulture));
                    return;
            }
            throw new SerializationException(Environment.GetResourceString("Serialization_TypeCode", new object[] { code.ToString() }));
        }
Exemplo n.º 42
0
        // Initialize ParseRecord. Called when reusing.
        internal void Init()
        {
            // Enums
            PRparseTypeEnum      = InternalParseTypeE.Empty;
            PRobjectTypeEnum     = InternalObjectTypeE.Empty;
            PRarrayTypeEnum      = InternalArrayTypeE.Empty;
            PRmemberTypeEnum     = InternalMemberTypeE.Empty;
            PRmemberValueEnum    = InternalMemberValueE.Empty;
            PRobjectPositionEnum = InternalObjectPositionE.Empty;

            // Object
            PRname = null;

            // Value
            PRvalue = null;

            // dt attribute
            PRkeyDt      = null;
            PRdtType     = null;
            PRdtTypeCode = InternalPrimitiveTypeE.Invalid;
            PRisEnum     = false;

            // Object ID
            PRobjectId = 0;

            // Reference ID
            PRidRef = 0;

            // Array

            // Array Element Type
            PRarrayElementTypeString = null;
            PRarrayElementType       = null;
            PRisArrayVariant         = false;
            PRarrayElementTypeCode   = InternalPrimitiveTypeE.Invalid;


            // Parsed array information
            PRrank        = 0;
            PRlengthA     = null;
            PRpositionA   = null;
            PRlowerBoundA = null;
            PRupperBoundA = null;

            // Array map for placing array elements in array
            PRindexMap       = null;
            PRmemberIndex    = 0;
            PRlinearlength   = 0;
            PRrectangularMap = null;
            PRisLowerBound   = false;

            // SerializedStreamHeader information
            PRtopId    = 0;
            PRheaderId = 0;

            // ValueType Fixup needed
            PRisValueTypeFixup = false;

            PRnewObj         = null;
            PRobjectA        = null;
            PRprimitiveArray = null;
            PRobjectInfo     = null;
            PRisRegistered   = false;
            PRmemberData     = null;
            PRsi             = null;

            PRnullCount = 0;
        }
        internal static void TypeFromInfo(BinaryTypeEnum binaryTypeEnum, object typeInformation, ObjectReader objectReader, BinaryAssemblyInfo assemblyInfo, out InternalPrimitiveTypeE primitiveTypeEnum, out string typeString, out Type type, out bool isVariant)
        {
            isVariant = false;
            primitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
            typeString = null;
            type = null;
            switch (binaryTypeEnum)
            {
                case BinaryTypeEnum.Primitive:
                    primitiveTypeEnum = (InternalPrimitiveTypeE) typeInformation;
                    typeString = Converter.ToComType(primitiveTypeEnum);
                    type = Converter.ToType(primitiveTypeEnum);
                    return;

                case BinaryTypeEnum.String:
                    type = Converter.typeofString;
                    return;

                case BinaryTypeEnum.Object:
                    type = Converter.typeofObject;
                    isVariant = true;
                    return;

                case BinaryTypeEnum.ObjectUrt:
                case BinaryTypeEnum.ObjectUser:
                    if (typeInformation == null)
                    {
                        break;
                    }
                    typeString = typeInformation.ToString();
                    type = objectReader.GetType(assemblyInfo, typeString);
                    if (!object.ReferenceEquals(type, Converter.typeofObject))
                    {
                        break;
                    }
                    isVariant = true;
                    return;

                case BinaryTypeEnum.ObjectArray:
                    type = Converter.typeofObjectArray;
                    return;

                case BinaryTypeEnum.StringArray:
                    type = Converter.typeofStringArray;
                    return;

                case BinaryTypeEnum.PrimitiveArray:
                    primitiveTypeEnum = (InternalPrimitiveTypeE) typeInformation;
                    type = Converter.ToArrayType(primitiveTypeEnum);
                    return;

                default:
                    throw new SerializationException(Environment.GetResourceString("Serialization_TypeRead", new object[] { binaryTypeEnum.ToString() }));
            }
        }
Exemplo n.º 44
0
 internal PrimitiveArray(InternalPrimitiveTypeE code, Array array)
 {
     Init(code, array);
 }
        // Transforms a type to the serialized string form. URT Primitive types are converted to XMLData Types
        private NameInfo TypeToNameInfo(Type type, WriteObjectInfo objectInfo, InternalPrimitiveTypeE code, NameInfo nameInfo)
        {
            SerTrace.Log( this, "TypeToNameInfo Entry type ",type,", objectInfo ",objectInfo,", code ", ((Enum)code).ToString());
            if (nameInfo == null)
                nameInfo = GetNameInfo();
            else
                nameInfo.Init();

            if (code == InternalPrimitiveTypeE.Invalid)
            {
                if (objectInfo != null)
                {
                    nameInfo.NIname = objectInfo.GetTypeFullName();
                    nameInfo.NIassemId = objectInfo.assemId;                    
                }
            }
            nameInfo.NIprimitiveTypeEnum = code; 
            nameInfo.NItype = type;

            SerTrace.Log( this, "TypeToNameInfo Exit ",type, " typeName "+nameInfo.NIname);
            return nameInfo;            
        }
Exemplo n.º 46
0
        // From the type create the BinaryTypeEnum and typeInformation which describes the type on the wire
        internal static BinaryTypeEnum GetBinaryTypeInfo(Type type, WriteObjectInfo?objectInfo, string?typeName, ObjectWriter objectWriter, out object?typeInformation, out int assemId)
        {
            BinaryTypeEnum binaryTypeEnum;

            assemId         = 0;
            typeInformation = null;

            if (ReferenceEquals(type, Converter.s_typeofString))
            {
                binaryTypeEnum = BinaryTypeEnum.String;
            }
            else if (((objectInfo == null) || ((objectInfo != null) && !objectInfo._isSi)) && (ReferenceEquals(type, Converter.s_typeofObject)))
            {
                // If objectInfo.Si then can be a surrogate which will change the type
                binaryTypeEnum = BinaryTypeEnum.Object;
            }
            else if (ReferenceEquals(type, Converter.s_typeofStringArray))
            {
                binaryTypeEnum = BinaryTypeEnum.StringArray;
            }
            else if (ReferenceEquals(type, Converter.s_typeofObjectArray))
            {
                binaryTypeEnum = BinaryTypeEnum.ObjectArray;
            }
            else if (Converter.IsPrimitiveArray(type, out typeInformation))
            {
                binaryTypeEnum = BinaryTypeEnum.PrimitiveArray;
            }
            else
            {
                InternalPrimitiveTypeE primitiveTypeEnum = objectWriter.ToCode(type);
                switch (primitiveTypeEnum)
                {
                case InternalPrimitiveTypeE.Invalid:
                    string?assembly = null;
                    if (objectInfo == null)
                    {
                        assembly        = type.Assembly.FullName;
                        typeInformation = type.FullName;
                    }
                    else
                    {
                        assembly        = objectInfo.GetAssemblyString();
                        typeInformation = objectInfo.GetTypeFullName();
                    }

                    Debug.Assert(assembly != null);
                    if (assembly.Equals(Converter.s_urtAssemblyString) || assembly.Equals(Converter.s_urtAlternativeAssemblyString))
                    {
                        binaryTypeEnum = BinaryTypeEnum.ObjectUrt;
                        assemId        = 0;
                    }
                    else
                    {
                        binaryTypeEnum = BinaryTypeEnum.ObjectUser;
                        Debug.Assert(objectInfo != null, "[BinaryConverter.GetBinaryTypeInfo]objectInfo null for user object");
                        assemId = (int)objectInfo._assemId;
                        if (assemId == 0)
                        {
                            throw new SerializationException(SR.Format(SR.Serialization_AssemblyId, typeInformation));
                        }
                    }
                    break;

                default:
                    binaryTypeEnum  = BinaryTypeEnum.Primitive;
                    typeInformation = primitiveTypeEnum;
                    break;
                }
            }

            return(binaryTypeEnum);
        }
 internal void Init()
 {
     _fullName = null;
     _objectId = 0;
     _assemId = 0;
     _primitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
     _type = null;
     _isSealed = false;
     _transmitTypeOnObject = false;
     _transmitTypeOnMember = false;
     _isParentTypeOnObject = false;
     _isArray = false;
     _isArrayItem = false;
     _arrayEnum = InternalArrayTypeE.Empty;
     _sealedStatusChecked = false;
 }
Exemplo n.º 48
0
        internal static void TypeFromInfo(BinaryTypeEnum binaryTypeEnum,
                                          object?typeInformation,
                                          ObjectReader objectReader,
                                          BinaryAssemblyInfo?assemblyInfo,
                                          out InternalPrimitiveTypeE primitiveTypeEnum,
                                          out string?typeString,
                                          out Type?type,
                                          out bool isVariant)
        {
            isVariant         = false;
            primitiveTypeEnum = InternalPrimitiveTypeE.Invalid;
            typeString        = null;
            type = null;

            switch (binaryTypeEnum)
            {
            case BinaryTypeEnum.Primitive:
                primitiveTypeEnum = (InternalPrimitiveTypeE)typeInformation !;
                typeString        = Converter.ToComType(primitiveTypeEnum);
                type = Converter.ToType(primitiveTypeEnum);
                break;

            case BinaryTypeEnum.String:
                type = Converter.s_typeofString;
                break;

            case BinaryTypeEnum.Object:
                type      = Converter.s_typeofObject;
                isVariant = true;
                break;

            case BinaryTypeEnum.ObjectArray:
                type = Converter.s_typeofObjectArray;
                break;

            case BinaryTypeEnum.StringArray:
                type = Converter.s_typeofStringArray;
                break;

            case BinaryTypeEnum.PrimitiveArray:
                primitiveTypeEnum = (InternalPrimitiveTypeE)typeInformation !;
                type = Converter.ToArrayType(primitiveTypeEnum);
                break;

            case BinaryTypeEnum.ObjectUser:
            case BinaryTypeEnum.ObjectUrt:
                if (typeInformation != null)
                {
                    typeString = typeInformation.ToString();
                    type       = objectReader.GetType(assemblyInfo !, typeString !);
                    if (ReferenceEquals(type, Converter.s_typeofObject))
                    {
                        isVariant = true;
                    }
                }
                break;

            default:
                throw new SerializationException(SR.Format(SR.Serialization_TypeRead, binaryTypeEnum.ToString()));
            }
        }
        // Initialize ParseRecord. Called when reusing.
        internal void Init()
        {
            // Enums
            _parseTypeEnum = InternalParseTypeE.Empty;
            _objectTypeEnum = InternalObjectTypeE.Empty;
            _arrayTypeEnum = InternalArrayTypeE.Empty;
            _memberTypeEnum = InternalMemberTypeE.Empty;
            _memberValueEnum = InternalMemberValueE.Empty;
            _objectPositionEnum = InternalObjectPositionE.Empty;

            // Object
            _name = null;

            // Value
            _value = null;

            // dt attribute
            _keyDt = null;
            _dtType = null;
            _dtTypeCode = InternalPrimitiveTypeE.Invalid;

            // Object ID
            _objectId = 0;

            // Reference ID
            _idRef = 0;

            // Array

            // Array Element Type
            _arrayElementTypeString = null;
            _arrayElementType = null;
            _isArrayVariant = false;
            _arrayElementTypeCode = InternalPrimitiveTypeE.Invalid;

            // Parsed array information
            _rank = 0;
            _lengthA = null;
            _lowerBoundA = null;

            // Array map for placing array elements in array
            _indexMap = null;
            _memberIndex = 0;
            _linearlength = 0;
            _rectangularMap = null;
            _isLowerBound = false;

            // ValueType Fixup needed
            _isValueTypeFixup = false;

            _newObj = null;
            _objectA = null;
            _primitiveArray = null;
            _objectInfo = null;
            _isRegistered = false;
            _memberData = null;
            _si = null;

            _consecutiveNullArrayEntryCount = 0;
        }
Exemplo n.º 50
0
        internal static InternalNameSpaceE GetNameSpaceEnum(InternalPrimitiveTypeE code, Type type, WriteObjectInfo objectInfo, out String typeName)
        {
            SerTrace.Log("Converter", "GetNameSpaceEnum Entry ", ((Enum)code).ToString(), " type ", type);
            InternalNameSpaceE nameSpaceEnum = InternalNameSpaceE.None;

            typeName = null;

            if (code != InternalPrimitiveTypeE.Invalid)
            {
                switch (code)
                {
                case InternalPrimitiveTypeE.Boolean:
                case InternalPrimitiveTypeE.Char:
                case InternalPrimitiveTypeE.Byte:
                case InternalPrimitiveTypeE.Double:
                case InternalPrimitiveTypeE.Int16:
                case InternalPrimitiveTypeE.Int32:
                case InternalPrimitiveTypeE.Int64:
                case InternalPrimitiveTypeE.SByte:
                case InternalPrimitiveTypeE.Single:
                case InternalPrimitiveTypeE.UInt16:
                case InternalPrimitiveTypeE.UInt32:
                case InternalPrimitiveTypeE.UInt64:
                case InternalPrimitiveTypeE.DateTime:
                case InternalPrimitiveTypeE.TimeSpan:
                    nameSpaceEnum = InternalNameSpaceE.XdrPrimitive;
                    typeName      = "System." + ToComType(code);
                    break;

                case InternalPrimitiveTypeE.Decimal:
                    nameSpaceEnum = InternalNameSpaceE.UrtSystem;
                    typeName      = "System." + ToComType(code);
                    break;
                }
            }

            if ((nameSpaceEnum == InternalNameSpaceE.None) && (type != null))
            {
                if (type == typeofString)
                {
                    nameSpaceEnum = InternalNameSpaceE.XdrString;
                }
                else
                {
                    if (objectInfo == null)
                    {
                        typeName = type.FullName;
                        if (type.Module.Assembly == urtAssembly)
                        {
                            nameSpaceEnum = InternalNameSpaceE.UrtSystem;
                        }
                        else
                        {
                            nameSpaceEnum = InternalNameSpaceE.UrtUser;
                        }
                    }
                    else
                    {
                        typeName = objectInfo.GetTypeFullName();
                        if (objectInfo.GetAssemblyString().Equals(urtAssemblyString))
                        {
                            nameSpaceEnum = InternalNameSpaceE.UrtSystem;
                        }
                        else
                        {
                            nameSpaceEnum = InternalNameSpaceE.UrtUser;
                        }
                    }
                }
            }

            SerTrace.Log("Converter", "GetNameSpaceEnum Exit ", ((Enum)nameSpaceEnum).ToString(), " typeName ", typeName);
            return(nameSpaceEnum);
        }
Exemplo n.º 51
0
 // ReadValue from stream using InternalPrimitiveTypeE code
 internal object ReadValue(InternalPrimitiveTypeE code)
 {
     object var = null;
     switch (code)
     {
         case InternalPrimitiveTypeE.Boolean: var = ReadBoolean(); break;
         case InternalPrimitiveTypeE.Byte: var = ReadByte(); break;
         case InternalPrimitiveTypeE.Char: var = ReadChar(); break;
         case InternalPrimitiveTypeE.Double: var = ReadDouble(); break;
         case InternalPrimitiveTypeE.Int16: var = ReadInt16(); break;
         case InternalPrimitiveTypeE.Int32: var = ReadInt32(); break;
         case InternalPrimitiveTypeE.Int64: var = ReadInt64(); break;
         case InternalPrimitiveTypeE.SByte: var = ReadSByte(); break;
         case InternalPrimitiveTypeE.Single: var = ReadSingle(); break;
         case InternalPrimitiveTypeE.UInt16: var = ReadUInt16(); break;
         case InternalPrimitiveTypeE.UInt32: var = ReadUInt32(); break;
         case InternalPrimitiveTypeE.UInt64: var = ReadUInt64(); break;
         case InternalPrimitiveTypeE.Decimal: var = ReadDecimal(); break;
         case InternalPrimitiveTypeE.TimeSpan: var = ReadTimeSpan(); break;
         case InternalPrimitiveTypeE.DateTime: var = ReadDateTime(); break;
         default: throw new SerializationException(SR.Format(SR.Serialization_TypeCode, code.ToString()));
     }
     return var;
 }
Exemplo n.º 52
0
        internal static Array CreatePrimitiveArray(InternalPrimitiveTypeE code, int length)
        {
            Array array = null;

            switch (code)
            {
            case InternalPrimitiveTypeE.Boolean:
                array = new Boolean[length];
                break;

            case InternalPrimitiveTypeE.Byte:
                array = new Byte[length];
                break;

            case InternalPrimitiveTypeE.Char:
                array = new Char[length];
                break;

            case InternalPrimitiveTypeE.Decimal:
                array = new Decimal[length];
                break;

            case InternalPrimitiveTypeE.Double:
                array = new Double[length];
                break;

            case InternalPrimitiveTypeE.Int16:
                array = new Int16[length];
                break;

            case InternalPrimitiveTypeE.Int32:
                array = new Int32[length];
                break;

            case InternalPrimitiveTypeE.Int64:
                array = new Int64[length];
                break;

            case InternalPrimitiveTypeE.SByte:
                array = new SByte[length];
                break;

            case InternalPrimitiveTypeE.Single:
                array = new Single[length];
                break;

            case InternalPrimitiveTypeE.TimeSpan:
                array = new TimeSpan[length];
                break;

            case InternalPrimitiveTypeE.DateTime:
                array = new DateTime[length];
                break;

            case InternalPrimitiveTypeE.UInt16:
                array = new UInt16[length];
                break;

            case InternalPrimitiveTypeE.UInt32:
                array = new UInt32[length];
                break;

            case InternalPrimitiveTypeE.UInt64:
                array = new UInt64[length];
                break;
            }
            return(array);
        }
Exemplo n.º 53
0
 internal static Type ToArrayType(InternalPrimitiveTypeE code)
 {
     if (s_arrayTypeA == null)
     {
         InitArrayTypeA();
     }
     return s_arrayTypeA[(int)code];
 }
        // Writes a given object to the stream.
        private void Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
        {
            object?obj = objectInfo._obj;

            if (obj == null)
            {
                throw new ArgumentNullException(nameof(objectInfo) + "." + nameof(objectInfo._obj));
            }
            Type?objType  = objectInfo._objectType;
            long objectId = objectInfo._objectId;

            if (ReferenceEquals(objType, Converter.s_typeofString))
            {
                Debug.Assert(_serWriter != null);
                // Top level String
                memberNameInfo._objectId = objectId;
                _serWriter.WriteObjectString((int)objectId, obj.ToString());
            }
            else
            {
                if (objectInfo._isArray)
                {
                    WriteArray(objectInfo, memberNameInfo, null);
                }
                else
                {
                    objectInfo.GetMemberInfo(out string[]? memberNames, out Type[]? memberTypes, out object?[]? memberData);

                    // Only Binary needs to transmit types for ISerializable because the binary formatter transmits the types in URT format.
                    // Soap transmits all types as strings, so it is up to the ISerializable object to convert the string back to its URT type
                    if (objectInfo._isSi || CheckTypeFormat(_formatterEnums._typeFormat, FormatterTypeStyle.TypesAlways))
                    {
                        memberNameInfo._transmitTypeOnObject = true;
                        memberNameInfo._isParentTypeOnObject = true;
                        typeNameInfo._transmitTypeOnObject   = true;
                        typeNameInfo._isParentTypeOnObject   = true;
                    }

                    Debug.Assert(memberNames != null && memberTypes != null && memberData != null);
                    var memberObjectInfos = new WriteObjectInfo[memberNames.Length];

                    // Get assembly information
                    // Binary Serializer, assembly names need to be
                    // written before objects are referenced.
                    // GetAssemId here will write out the
                    // assemblyStrings at the right Binary
                    // Serialization object boundary.
                    for (int i = 0; i < memberTypes.Length; i++)
                    {
                        Type type =
                            memberTypes[i] != null ? memberTypes[i] :
                            memberData[i] != null?GetType(memberData[i] !) :  // TODO-NULLABLE https://github.com/dotnet/roslyn/issues/34644
                            Converter.s_typeofObject;

                        InternalPrimitiveTypeE code = ToCode(type);
                        if ((code == InternalPrimitiveTypeE.Invalid) &&
                            (!ReferenceEquals(type, Converter.s_typeofString)))
                        {
                            Debug.Assert(_serObjectInfoInit != null && _formatterConverter != null);
                            if (memberData[i] != null)
                            {
                                memberObjectInfos[i] = WriteObjectInfo.Serialize(
                                    memberData[i] !, // TODO-NULLABLE https://github.com/dotnet/roslyn/issues/34644
                                    _surrogates,
                                    _context,
                                    _serObjectInfoInit,
                                    _formatterConverter,
                                    this,
                                    _binder);
                                memberObjectInfos[i]._assemId = GetAssemblyId(memberObjectInfos[i]);
                            }
                            else
                            {
                                memberObjectInfos[i] = WriteObjectInfo.Serialize(
                                    memberTypes[i],
                                    _surrogates,
                                    _context,
                                    _serObjectInfoInit,
                                    _formatterConverter,
                                    _binder);
                                memberObjectInfos[i]._assemId = GetAssemblyId(memberObjectInfos[i]);
                            }
                        }
                    }
                    Write(objectInfo, memberNameInfo, typeNameInfo, memberNames, memberTypes, memberData, memberObjectInfos);
                }
            }
        }
Exemplo n.º 55
0
 // Returns a System.TypeCode from a InternalPrimitiveTypeE
 internal static TypeCode ToTypeCode(InternalPrimitiveTypeE code)
 {
     if (s_typeCodeA == null)
     {
         InitTypeCodeA();
     }
     return s_typeCodeA[(int)code];
 }
        internal static string ToString(object data, InternalPrimitiveTypeE code)
        {
            switch (code)
            {
            case InternalPrimitiveTypeE.Invalid:
                return(data.ToString());

            case InternalPrimitiveTypeE.Boolean:
                if (!((bool)data))
                {
                    return("false");
                }
                return("true");

            case InternalPrimitiveTypeE.Double:
            {
                double d = (double)data;
                if (!double.IsPositiveInfinity(d))
                {
                    if (double.IsNegativeInfinity(d))
                    {
                        return("-INF");
                    }
                    return(d.ToString("R", CultureInfo.InvariantCulture));
                }
                return("INF");
            }

            case InternalPrimitiveTypeE.Single:
            {
                float f = (float)data;
                if (!float.IsPositiveInfinity(f))
                {
                    if (float.IsNegativeInfinity(f))
                    {
                        return("-INF");
                    }
                    return(f.ToString("R", CultureInfo.InvariantCulture));
                }
                return("INF");
            }

            case InternalPrimitiveTypeE.TimeSpan:
                return(SoapDuration.ToString((TimeSpan)data));

            case InternalPrimitiveTypeE.DateTime:
                return(SoapDateTime.ToString((DateTime)data));

            case InternalPrimitiveTypeE.Time:
            case InternalPrimitiveTypeE.Date:
            case InternalPrimitiveTypeE.YearMonth:
            case InternalPrimitiveTypeE.Year:
            case InternalPrimitiveTypeE.MonthDay:
            case InternalPrimitiveTypeE.Day:
            case InternalPrimitiveTypeE.Month:
            case InternalPrimitiveTypeE.HexBinary:
            case InternalPrimitiveTypeE.Base64Binary:
            case InternalPrimitiveTypeE.Integer:
            case InternalPrimitiveTypeE.PositiveInteger:
            case InternalPrimitiveTypeE.NonPositiveInteger:
            case InternalPrimitiveTypeE.NonNegativeInteger:
            case InternalPrimitiveTypeE.NegativeInteger:
            case InternalPrimitiveTypeE.AnyUri:
            case InternalPrimitiveTypeE.QName:
            case InternalPrimitiveTypeE.Notation:
            case InternalPrimitiveTypeE.NormalizedString:
            case InternalPrimitiveTypeE.Token:
            case InternalPrimitiveTypeE.Language:
            case InternalPrimitiveTypeE.Name:
            case InternalPrimitiveTypeE.Idrefs:
            case InternalPrimitiveTypeE.Entities:
            case InternalPrimitiveTypeE.Nmtoken:
            case InternalPrimitiveTypeE.Nmtokens:
            case InternalPrimitiveTypeE.NcName:
            case InternalPrimitiveTypeE.Id:
            case InternalPrimitiveTypeE.Idref:
            case InternalPrimitiveTypeE.Entity:
                return(data.ToString());
            }
            return((string)Convert.ChangeType(data, typeofString, CultureInfo.InvariantCulture));
        }
Exemplo n.º 57
0
 // Translates a string into an Object
 internal static object FromString(string value, InternalPrimitiveTypeE code)
 {
     // InternalPrimitiveTypeE needs to be a primitive type
     Debug.Assert((code != InternalPrimitiveTypeE.Invalid), "[Converter.FromString]!InternalPrimitiveTypeE.Invalid ");
     return code != InternalPrimitiveTypeE.Invalid ?
         Convert.ChangeType(value, ToTypeCode(code), CultureInfo.InvariantCulture) :
         value;
 }
 internal static string SoapToComType(InternalPrimitiveTypeE code)
 {
     return(ToComType(code));
 }
Exemplo n.º 59
0
 internal static int TypeLength(InternalPrimitiveTypeE code)
 {
     switch (code)
     {
         case InternalPrimitiveTypeE.Boolean: return 1;
         case InternalPrimitiveTypeE.Char: return 2;
         case InternalPrimitiveTypeE.Byte: return 1;
         case InternalPrimitiveTypeE.Double: return 8;
         case InternalPrimitiveTypeE.Int16: return 2;
         case InternalPrimitiveTypeE.Int32: return 4;
         case InternalPrimitiveTypeE.Int64: return 8;
         case InternalPrimitiveTypeE.SByte: return 1;
         case InternalPrimitiveTypeE.Single: return 4;
         case InternalPrimitiveTypeE.UInt16: return 2;
         case InternalPrimitiveTypeE.UInt32: return 4;
         case InternalPrimitiveTypeE.UInt64: return 8;
         default: return 0;
     }
 }
Exemplo n.º 60
0
 // ReadValue from stream using InternalPrimitiveTypeE code
 internal object ReadValue(InternalPrimitiveTypeE code) =>
 code switch
 {