/// <summary>
        /// Reads the name of an element from the reader.
        /// </summary>
        /// <param name="nameDecoder">The name decoder.</param>
        /// <returns>The name of the element.</returns>
        public override string ReadName(INameDecoder nameDecoder)
        {
            if (nameDecoder == null)
            {
                throw new ArgumentNullException("nameDecoder");
            }

            if (Disposed)
            {
                ThrowObjectDisposedException();
            }
            if (State == BsonReaderState.Type)
            {
                ReadBsonType();
            }
            if (State != BsonReaderState.Name)
            {
                ThrowInvalidState("ReadName", BsonReaderState.Name);
            }

            CurrentName = nameDecoder.Decode(_streamReader);
            State       = BsonReaderState.Value;

            return(CurrentName);
        }
        public static DomAttribute ReadAttribute(BinaryReader reader, INameDecoder nameTable)
        {
            DomAttribute attr = new DomAttribute();

            attr.Name            = ReadString(reader, nameTable);
            attr.Region          = ReadRegion(reader, nameTable);
            attr.AttributeTarget = (AttributeTarget)reader.ReadInt32();
            attr.AttributeType   = ReadReturnType(reader, nameTable);

            // Named argument count
            uint num = ReadUInt(reader, 500);

            string[] names = new string[num];
            for (int n = 0; n < num; n++)
            {
                names [n] = ReadString(reader, nameTable);
            }

            CodeExpression[] exps = ReadExpressionArray(reader, nameTable);

            int i;

            for (i = 0; i < num; i++)
            {
                attr.AddNamedArgument(names[i], exps [i]);
            }

            for (; i < exps.Length; i++)
            {
                attr.AddPositionalArgument(exps [i]);
            }

            return(attr);
        }
Example #3
0
        /*******************************************/

        public override Color Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            INameDecoder decoder = Utf8NameDecoder.Instance;

            context.Reader.ReadStartDocument();

            if (context.Reader.ReadName() == "_t")
            {
                context.Reader.ReadString();
            }

            int a = context.Reader.ReadInt32();
            int r = context.Reader.ReadInt32();
            int g = context.Reader.ReadInt32();
            int b = context.Reader.ReadInt32();

            string version = "";

            if (context.Reader.FindElement("_bhomVersion"))
            {
                version = context.Reader.ReadString();
            }

            context.Reader.ReadEndDocument();

            return(Color.FromArgb(a, r, g, b));
        }
Example #4
0
        public static TypeParameter ReadTypeParameter(BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
        {
            string        name = ReadString(reader, nameTable);
            TypeParameter tp   = new TypeParameter(name);

            // Flags
            tp.TypeParameterModifier = (TypeParameterModifier)reader.ReadByte();

            // Variance

            tp.Variance = (TypeParameterVariance)reader.ReadByte();

            // Constraints

            uint count = ReadUInt(reader, 1000);

            while (count-- > 0)
            {
                tp.AddConstraint(ReadReturnType(reader, nameTable, objectTable));
            }

            // Attributes

            count = ReadUInt(reader, 1000);
            while (count-- > 0)
            {
                tp.AddAttribute(ReadAttribute(reader, nameTable, objectTable));
            }

            return(tp);
        }
        public static DomMethod ReadMethod(BinaryReader reader, INameDecoder nameTable)
        {
            DomMethod result = new DomMethod();

            ReadMemberInformation(reader, nameTable, result);
            uint explicitInterfaces = ReadUInt(reader, 500);

            while (explicitInterfaces-- > 0)
            {
                result.AddExplicitInterface(ReadReturnType(reader, nameTable));
            }

            result.BodyRegion     = ReadRegion(reader, nameTable);
            result.ReturnType     = ReadReturnType(reader, nameTable);
            result.MethodModifier = (MethodModifier)reader.ReadInt32();

            uint arguments = ReadUInt(reader, 5000);

            while (arguments-- > 0)
            {
                result.Add(ReadParameter(reader, nameTable));
            }
            arguments = ReadUInt(reader, 500);
            while (arguments-- > 0)
            {
                result.AddTypeParameter(ReadTypeParameter(reader, nameTable));
            }
            return(result);
        }
Example #6
0
        /// <summary>
        /// Reads the name of an element from the reader.
        /// </summary>
        /// <param name="nameDecoder">The name decoder.</param>
        /// <returns>The name of the element.</returns>
        public override string ReadName(INameDecoder nameDecoder)
        {
            if (nameDecoder == null)
            {
                throw new ArgumentNullException("nameDecoder");
            }

            if (Disposed)
            {
                ThrowObjectDisposedException();
            }
            if (State == BsonReaderState.Type)
            {
                ReadBsonType();
            }
            if (State != BsonReaderState.Name)
            {
                ThrowInvalidState("ReadName", BsonReaderState.Name);
            }

            CurrentName = nameDecoder.Decode(_bsonStream, _settings.Encoding);
            State       = BsonReaderState.Value;

            if (_context.ContextType == ContextType.Document)
            {
                _context.CurrentElementName = CurrentName;
            }

            return(CurrentName);
        }
        public static DomField ReadField(BinaryReader reader, INameDecoder nameTable)
        {
            DomField result = new DomField();

            ReadMemberInformation(reader, nameTable, result);
            result.ReturnType = ReadReturnType(reader, nameTable);
            return(result);
        }
 public static PersistentParameter Read(BinaryReader reader, INameDecoder nameTable)
 {
     PersistentParameter par = new PersistentParameter ();
     par.name = PersistentHelper.ReadString (reader, nameTable);
     par.documentation = PersistentHelper.ReadString (reader, nameTable);
     par.modifier = (ParameterModifier)reader.ReadByte();
     par.returnType = PersistentReturnType.Read (reader, nameTable);
     return par;
 }
 public static PersistentEvent Read(BinaryReader reader, INameDecoder nameTable)
 {
     PersistentEvent ev = new PersistentEvent();
     ev.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
     ev.Documentation = PersistentHelper.ReadString (reader, nameTable);
     ev.modifiers = (ModifierEnum)reader.ReadUInt32();
     ev.returnType = PersistentReturnType.Read (reader, nameTable);
     ev.region = PersistentRegion.Read (reader, nameTable);
     return ev;
 }
        /*******************************************/

        public override object Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            INameDecoder decoder = Utf8NameDecoder.Instance;

            context.Reader.ReadStartDocument();

            context.Reader.ReadEndDocument();

            return(null);
        }
Example #11
0
		public static DomLocation ReadLocation (BinaryReader reader, INameDecoder nameTable)
		{
			if (ReadNull (reader)) 
				return DomLocation.Empty;
			
			int line   = reader.ReadInt32 ();
			int column = reader.ReadInt32 ();
			
			return new DomLocation (line, column);
		}
 public static PersistentField Read(BinaryReader reader, INameDecoder nameTable)
 {
     PersistentField field = new PersistentField ();
     field.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
     field.Documentation = PersistentHelper.ReadString (reader, nameTable);
     field.modifiers = (ModifierEnum)reader.ReadUInt32();
     field.returnType = PersistentReturnType.Read (reader, nameTable);
     field.region = PersistentRegion.Read (reader, nameTable);
     return field;
 }
Example #13
0
		public static DomRegion ReadRegion (BinaryReader reader, INameDecoder nameTable)
		{
			if (ReadNull (reader)) 
				return DomRegion.Empty;
			
			int startLine   = reader.ReadInt32 ();
			int startColumn = reader.ReadInt32 ();
			int endLine     = reader.ReadInt32 ();
			int endColumn   = reader.ReadInt32 ();
			
			return new DomRegion (startLine, startColumn, endLine, endColumn);
		}
        public static DomLocation ReadLocation(BinaryReader reader, INameDecoder nameTable)
        {
            if (ReadNull(reader))
            {
                return(DomLocation.Empty);
            }

            int line   = reader.ReadInt32();
            int column = reader.ReadInt32();

            return(new DomLocation(line, column));
        }
 public static PersistentProperty Read(BinaryReader reader, INameDecoder nameTable)
 {
     PersistentProperty pro = new PersistentProperty ();
     pro.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
     pro.Documentation = PersistentHelper.ReadString (reader, nameTable);
     uint m = reader.ReadUInt32();
     pro.modifiers = (ModifierEnum)(m & (canGetFlag - 1));
     pro.canGet = (m & canGetFlag) == canGetFlag;
     pro.canSet = (m & canSetFlag) == canSetFlag;
     pro.returnType = PersistentReturnType.Read (reader, nameTable);
     pro.region = PersistentRegion.Read (reader, nameTable);
     return pro;
 }
        public static DomParameter ReadParameter(BinaryReader reader, INameDecoder nameTable)
        {
            DomParameter result = new DomParameter();

            result.Name = ReadString(reader, nameTable);
            result.ParameterModifiers = (ParameterModifiers)reader.ReadUInt32();
            result.ReturnType         = ReadReturnType(reader, nameTable);
            result.Location           = ReadLocation(reader, nameTable);
            if (reader.ReadBoolean())
            {
                result.DefaultValue = ReadExpression(reader, nameTable);
            }
            return(result);
        }
        public static DomRegion ReadRegion(BinaryReader reader, INameDecoder nameTable)
        {
            if (ReadNull(reader))
            {
                return(DomRegion.Empty);
            }

            int startLine   = reader.ReadInt32();
            int startColumn = reader.ReadInt32();
            int endLine     = reader.ReadInt32();
            int endColumn   = reader.ReadInt32();

            return(new DomRegion(startLine, startColumn, endLine, endColumn));
        }
        static void ReadMemberInformation(BinaryReader reader, INameDecoder nameTable, AbstractMember member)
        {
            member.Name          = ReadString(reader, nameTable);
            member.Documentation = ReadString(reader, nameTable);
            member.Modifiers     = (Modifiers)reader.ReadUInt32();
            member.Location      = ReadLocation(reader, nameTable);

            uint count = ReadUInt(reader, 1000);

            while (count-- > 0)
            {
                member.Add(ReadAttribute(reader, nameTable));
            }
        }
        public static PersistentClass Read(BinaryReader reader, INameDecoder nameTable)
        {
            PersistentClass cls = new PersistentClass ();

            cls.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
            cls.Documentation = PersistentHelper.ReadString (reader, nameTable);

            cls.modifiers          = (ModifierEnum)reader.ReadUInt32();
            cls.classType          = (ClassType)reader.ReadInt16();

            uint count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.baseTypes.Add (PersistentHelper.ReadString (reader, nameTable));
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.innerClasses.Add(PersistentClass.Read (reader, nameTable));
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.fields.Add(PersistentField.Read (reader, nameTable));
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.properties.Add(PersistentProperty.Read (reader, nameTable));
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                IMethod m = PersistentMethod.Read (reader, nameTable);
                cls.methods.Add(m);
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.events.Add(PersistentEvent.Read (reader, nameTable));
            }

            count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                cls.indexer.Add(PersistentIndexer.Read (reader, nameTable));
            }

            cls.region = PersistentRegion.Read (reader, nameTable);
            return cls;
        }
Example #20
0
        public static CodeExpression[] ReadExpressionArray(BinaryReader reader, INameDecoder nameTable)
        {
            int count = reader.ReadInt32();

            if (count == 0)
            {
                return(new CodeExpression[0]);
            }
            CodeExpression[] exps = new CodeExpression[count];
            for (int n = 0; n < count; n++)
            {
                exps [n] = ReadExpression(reader, nameTable);
            }
            return(exps);
        }
        public static PersistentIndexer Read(BinaryReader reader, INameDecoder nameTable)
        {
            PersistentIndexer ind = new PersistentIndexer();
            ind.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
            ind.Documentation = PersistentHelper.ReadString (reader, nameTable);
            ind.modifiers = (ModifierEnum)reader.ReadUInt32();
            ind.returnType = PersistentReturnType.Read (reader, nameTable);

            uint count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                ind.parameters.Add (PersistentParameter.Read (reader, nameTable));
            }
            ind.region = PersistentRegion.Read (reader, nameTable);
            return ind;
        }
        public static IReturnType ReadReturnType(BinaryReader reader, INameDecoder nameTable)
        {
            if (ReadNull(reader))
            {
                return(null);
            }
            byte index = reader.ReadByte();

            if (index < 0xFF)
            {
                return(DomReturnType.GetSharedReturnType(index));
            }

            string ns = ReadString(reader, nameTable);
            List <IReturnTypePart> parts = new List <IReturnTypePart> ();

            uint partCount = ReadUInt(reader, 500);

            while (partCount-- > 0)
            {
                ReturnTypePart part = new ReturnTypePart();
                parts.Add(part);
                part.Name        = ReadString(reader, nameTable);
                part.IsGenerated = reader.ReadBoolean();
                uint arguments = ReadUInt(reader, 1000);
                while (arguments-- > 0)
                {
                    part.AddTypeParameter(ReadReturnType(reader, nameTable));
                }
            }

            DomReturnType result = new DomReturnType(ns, parts);

            result.PointerNestingLevel = reader.ReadInt32();
            result.IsNullable          = reader.ReadBoolean();
            result.IsByRef             = reader.ReadBoolean();

            int arrayDimensions = reader.ReadInt32();

            int[] dims = new int [arrayDimensions];
            for (int n = 0; n < arrayDimensions; n++)
            {
                dims [n] = reader.ReadInt32();
            }

            result.SetDimensions(dims);
            return(result);
        }
        public static PersistentMethod Read(BinaryReader reader, INameDecoder nameTable)
        {
            PersistentMethod met = new PersistentMethod ();
            met.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);
            met.Documentation = PersistentHelper.ReadString (reader, nameTable);

            met.modifiers = (ModifierEnum)reader.ReadUInt32();
            met.returnType = PersistentReturnType.Read (reader, nameTable);

            uint count = reader.ReadUInt32();
            for (uint i = 0; i < count; ++i) {
                met.parameters.Add (PersistentParameter.Read (reader, nameTable));
            }
            met.region = PersistentRegion.Read (reader, nameTable);
            return met;
        }
        public static PersistentReturnType Read(BinaryReader reader, INameDecoder nameTable)
        {
            if (PersistentHelper.ReadNull (reader)) return null;

            PersistentReturnType rt = new PersistentReturnType ();
            rt.FullyQualifiedName = PersistentHelper.ReadString (reader, nameTable);

            rt.pointerNestingLevel = reader.ReadInt32();

            uint count = reader.ReadUInt32();
            rt.arrayDimensions = new int[count];
            for (uint i = 0; i < rt.arrayDimensions.Length; ++i) {
                rt.arrayDimensions[i] = reader.ReadInt32();
            }
            return rt;
        }
Example #25
0
            public string ReadName(INameDecoder nameDecoder)
            {
                if (_currentDepth == 0)
                {
                    var name = _currentName;
                    if (name != null)
                    {
                        _currentName  = null;
                        _currentState = null;
                        nameDecoder.Inform(name);
                        return(name);
                    }
                }

                return(_parent.ReadName(nameDecoder));
            }
Example #26
0
        public static CodeExpression ReadExpression(BinaryReader reader, INameDecoder nameTable)
        {
            TypeCode code = (TypeCode)reader.ReadInt32();

            switch (code)
            {
            case TypeCode.DBNull:
                return(new CodePrimitiveExpression(null));

            case TypeCode.Object:
                return((CodeExpression)serializer.Deserialize(reader, typeof(CodeExpression)));

            default:
                return(new CodePrimitiveExpression(Convert.ChangeType(ReadString(reader, nameTable), code, CultureInfo.InvariantCulture)));
            }
        }
        static string ReadString(BinaryReader reader, INameDecoder nameTable)
        {
            int id = reader.ReadInt32();

            if (id == -2)
            {
                return(null);
            }
            string res = nameTable.GetStringValue(id);

            if (res == null)
            {
                res = reader.ReadString();
                nameTable.RegisterString(id, res);
            }
            return(res);
        }
        public static TypeParameter ReadTypeParameter(BinaryReader reader, INameDecoder nameTable)
        {
            string        name = ReadString(reader, nameTable);
            TypeParameter tp   = new TypeParameter(name);

            // Flags

            byte f = reader.ReadByte();

            if ((f & 1) != 0)
            {
                tp.ClassRequired = true;
            }
            if ((f & 2) != 0)
            {
                tp.ValueTypeRequired = true;
            }
            if ((f & 4) != 0)
            {
                tp.ConstructorRequired = true;
            }

            // Variance

            tp.Variance = (TypeParameterVariance)reader.ReadByte();

            // Constraints

            uint count = ReadUInt(reader, 1000);

            while (count-- > 0)
            {
                tp.AddConstraint(ReadReturnType(reader, nameTable));
            }

            // Attributes

            count = ReadUInt(reader, 1000);
            while (count-- > 0)
            {
                tp.AddAttribute(ReadAttribute(reader, nameTable));
            }

            return(tp);
        }
        public static DomEvent ReadEvent(BinaryReader reader, INameDecoder nameTable)
        {
            DomEvent result = new DomEvent();

            ReadMemberInformation(reader, nameTable, result);
            result.ReturnType = ReadReturnType(reader, nameTable);
            if (!ReadNull(reader))
            {
                result.AddMethod = ReadMethod(reader, nameTable);
            }
            if (!ReadNull(reader))
            {
                result.RemoveMethod = ReadMethod(reader, nameTable);
            }
            if (!ReadNull(reader))
            {
                result.RaiseMethod = ReadMethod(reader, nameTable);
            }
            return(result);
        }
        public static DomProperty ReadProperty(BinaryReader reader, INameDecoder nameTable)
        {
            DomProperty result = new DomProperty();

            // ReadMemeberInformation (changed for storing getter & setter modifiers)
            result.Name           = ReadString(reader, nameTable);
            result.Documentation  = ReadString(reader, nameTable);
            result.GetterModifier = (Modifiers)reader.ReadUInt32();
            result.SetterModifier = (Modifiers)reader.ReadUInt32();
            result.Location       = ReadLocation(reader, nameTable);

            uint count = ReadUInt(reader, 1000);

            while (count-- > 0)
            {
                result.Add(ReadAttribute(reader, nameTable));
            }
            // End


            uint explicitInterfaces = ReadUInt(reader, 500);

            while (explicitInterfaces-- > 0)
            {
                result.AddExplicitInterface(ReadReturnType(reader, nameTable));
            }
            uint arguments = ReadUInt(reader, 5000);

            while (arguments-- > 0)
            {
                result.Add(ReadParameter(reader, nameTable));
            }

            result.BodyRegion       = ReadRegion(reader, nameTable);
            result.ReturnType       = ReadReturnType(reader, nameTable);
            result.PropertyModifier = (PropertyModifier)reader.ReadInt32();
            result.GetRegion        = ReadRegion(reader, nameTable);
            result.SetRegion        = ReadRegion(reader, nameTable);
            return(result);
        }
Example #31
0
        /*******************************************/

        public override Color Deserialize(BsonDeserializationContext context, BsonDeserializationArgs args)
        {
            INameDecoder decoder = Utf8NameDecoder.Instance;

            context.Reader.ReadStartDocument();

            context.Reader.ReadName(decoder);
            int a = context.Reader.ReadInt32();

            context.Reader.ReadName(decoder);
            int r = context.Reader.ReadInt32();

            context.Reader.ReadName(decoder);
            int g = context.Reader.ReadInt32();

            context.Reader.ReadName(decoder);
            int b = context.Reader.ReadInt32();

            context.Reader.ReadEndDocument();

            return(Color.FromArgb(a, r, g, b));
        }
Example #32
0
		public static DomParameter ReadParameter (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomParameter result = new DomParameter ();

			result.Name = ReadString (reader, nameTable);
			result.ParameterModifiers = (ParameterModifiers)reader.ReadUInt32 ();
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			result.Location = ReadLocation (reader, nameTable);
			if(reader.ReadBoolean())
				result.DefaultValue = ReadExpression (reader, nameTable);
			return result;
		}
Example #33
0
		public static DomProperty ReadProperty (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomProperty result = new DomProperty ();
			// ReadMemeberInformation (changed for storing getter & setter modifiers)
			result.Name          = ReadString (reader, nameTable);
			result.Documentation = ReadString (reader, nameTable);
			result.GetterModifier = (Modifiers)reader.ReadUInt32();
			result.SetterModifier = (Modifiers)reader.ReadUInt32();
			result.Location      = ReadLocation (reader, nameTable);
			
			uint count = ReadUInt (reader, 1000);
			while (count-- > 0)
				result.Add (ReadAttribute (reader, nameTable, objectTable));
			// End
			
			
			uint explicitInterfaces = ReadUInt (reader, 500);
			while (explicitInterfaces-- > 0) {
				result.AddExplicitInterface (ReadReturnType (reader, nameTable, objectTable));
			}
			uint arguments = ReadUInt (reader, 5000);
			while (arguments-- > 0) {
				result.Add (ReadParameter (reader, nameTable, objectTable));
			}
			
 			result.BodyRegion = ReadRegion (reader, nameTable);
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			result.PropertyModifier = (PropertyModifier)reader.ReadInt32 ();
			result.GetRegion = ReadRegion (reader, nameTable);
			result.SetRegion = ReadRegion (reader, nameTable);
			return result;
		}
Example #34
0
		public static DomField ReadField (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomField result = new DomField ();
			ReadMemberInformation (reader, nameTable, objectTable, result);
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			return result;
		}
Example #35
0
		public static DomEvent ReadEvent (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomEvent result = new DomEvent ();
			ReadMemberInformation (reader, nameTable, objectTable, result);
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			if (!ReadNull (reader))
				result.AddMethod = ReadMethod (reader, nameTable, objectTable);
			if (!ReadNull (reader))
				result.RemoveMethod = ReadMethod (reader, nameTable, objectTable);
			if (!ReadNull (reader))
				result.RaiseMethod = ReadMethod (reader, nameTable, objectTable);
			return result;
		}
        static DomType ReadTypeInternal(BinaryReader reader, INameDecoder nameTable)
        {
            uint typeCount = ReadUInt(reader, 1000);

            if (typeCount > 1)
            {
                CompoundType compoundResult = new CompoundType();
                while (typeCount-- > 0)
                {
                    compoundResult.AddPart(ReadTypeInternal(reader, nameTable));
                }

                return(compoundResult);
            }

            DomType result = new DomType();

            ReadMemberInformation(reader, nameTable, result);
//			bool verbose = result.Name == "CopyDelegate";
//			if (verbose) System.Console.WriteLine("read type:" + result.Name);
            result.TypeModifier = (TypeModifier)reader.ReadUInt32();
            result.BodyRegion   = ReadRegion(reader, nameTable);
            string compilationUnitFileName = ReadString(reader, nameTable);

            result.CompilationUnit = new CompilationUnit(compilationUnitFileName);

            result.Namespace = ReadString(reader, nameTable);
            result.ClassType = (ClassType)reader.ReadUInt32();
            result.BaseType  = ReadReturnType(reader, nameTable);

            // implemented interfaces
            long count = ReadUInt(reader, 5000);

//			if (verbose) System.Console.WriteLine("impl. interfaces:" + count);
            while (count-- > 0)
            {
                result.AddInterfaceImplementation(ReadReturnType(reader, nameTable));
            }

            // innerTypes
//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
            count = ReadUInt(reader, 10000);
//			if (verbose) System.Console.WriteLine("inner types:" + count);
            while (count-- > 0)
            {
                DomType innerType = ReadTypeInternal(reader, nameTable);
                innerType.DeclaringType = result;
                result.Add(innerType);
            }

            // fields
//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
            count = ReadUInt(reader, 10000);
//			if (verbose) System.Console.WriteLine("fields:" + count);
            while (count-- > 0)
            {
                DomField field = ReadField(reader, nameTable);
                field.DeclaringType = result;
                result.Add(field);
            }

            // methods
//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
            count = ReadUInt(reader, 10000);
//			if (verbose) System.Console.WriteLine("methods:" + count);
            while (count-- > 0)
            {
                DomMethod method = ReadMethod(reader, nameTable);
                method.DeclaringType = result;
                result.Add(method);
            }

            // properties
//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
            count = ReadUInt(reader, 10000);
//			if (verbose) System.Console.WriteLine("properties:" + count);
            while (count-- > 0)
            {
                DomProperty property = ReadProperty(reader, nameTable);
                property.DeclaringType = result;
                result.Add(property);
            }

            // events
//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
            count = ReadUInt(reader, 10000);
//			if (verbose) System.Console.WriteLine("events:" + count);
            while (count-- > 0)
            {
                DomEvent evt = ReadEvent(reader, nameTable);
                evt.DeclaringType = result;
                result.Add(evt);
            }

            // type parameters
            count = ReadUInt(reader, 500);
            while (count-- > 0)
            {
                TypeParameter tp = ReadTypeParameter(reader, nameTable);
                result.AddTypeParameter(tp);
            }
            return(result);
        }
        /// <summary>
        /// Reads the name of an element from the reader.
        /// </summary>
        /// <param name="nameDecoder">The name decoder.</param>
        /// <returns>The name of the element.</returns>
        public override string ReadName(INameDecoder nameDecoder)
        {
            if (nameDecoder == null)
            {
                throw new ArgumentNullException("nameDecoder");
            }

            if (Disposed) { ThrowObjectDisposedException(); }
            if (State == BsonReaderState.Type)
            {
                ReadBsonType();
            }
            if (State != BsonReaderState.Name)
            {
                ThrowInvalidState("ReadName", BsonReaderState.Name);
            }

            CurrentName = nameDecoder.Decode(_bsonStream, _settings.Encoding);
            State = BsonReaderState.Value;

            if (_context.ContextType == ContextType.Document)
            {
                _context.CurrentElementName = CurrentName;
            }

            return CurrentName;
        }
Example #38
0
		public static IReturnType ReadReturnType (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			if (ReadNull (reader))
				return null;
			byte index = reader.ReadByte ();
			if (index < 0xFF) 
				return DomReturnType.GetSharedReturnType (index);
			
			string ns = ReadString (reader, nameTable);
			List<ReturnTypePart> parts = new List<ReturnTypePart> ();
			
			uint partCount = ReadUInt (reader, 500);
			while (partCount-- > 0) {
				ReturnTypePart part = new ReturnTypePart ();
				parts.Add (part);
				part.Name = ReadString (reader, nameTable);
				part.IsGenerated = reader.ReadBoolean ();
				uint arguments  = ReadUInt (reader, 1000);
				while (arguments-- > 0)
					part.AddTypeParameter (ReadReturnType (reader, nameTable, objectTable));
			}
			
			DomReturnType result = new DomReturnType (ns, parts);
			result.PointerNestingLevel = reader.ReadInt32 ();
			result.IsNullable = reader.ReadBoolean ();
			result.IsByRef = reader.ReadBoolean ();
			
			int  arrayDimensions = reader.ReadInt32 ();
			int[] dims = new int [arrayDimensions];
			for (int n=0; n<arrayDimensions; n++)
				dims [n] = reader.ReadInt32 ();
			
			result.SetDimensions (dims);
			return objectTable != null ? (IReturnType) objectTable.GetSharedObject (result) : result;
		}
Example #39
0
		static DomType ReadTypeInternal (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			uint typeCount = ReadUInt (reader, 1000);
			if (typeCount > 1) {
				CompoundType compoundResult = new CompoundType ();
				while (typeCount-- > 0) {
					compoundResult.AddPart (ReadTypeInternal (reader, nameTable, objectTable));
				}
				
				return compoundResult;
			}
			
			DomType result = new DomType ();
			ReadMemberInformation (reader, nameTable, objectTable, result);
			//			bool verbose = result.Name == "CopyDelegate";
			//			if (verbose) System.Console.WriteLine("read type:" + result.Name);
			result.TypeModifier = (TypeModifier)reader.ReadUInt32 ();
			result.BodyRegion = ReadRegion (reader, nameTable);
			string compilationUnitFileName = ReadString (reader, nameTable);
			result.CompilationUnit = new CompilationUnit (compilationUnitFileName);
			
			result.Namespace = ReadString (reader, nameTable);
			result.ClassType = (ClassType)reader.ReadUInt32 ();
			result.BaseType = ReadReturnType (reader, nameTable, objectTable);
			
			// implemented interfaces
			long count = ReadUInt (reader, 5000);
			//			if (verbose) System.Console.WriteLine("impl. interfaces:" + count);
			while (count-- > 0) {
				result.AddInterfaceImplementation (ReadReturnType (reader, nameTable, objectTable));
			}
			
			// innerTypes
			//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
			count = ReadUInt (reader, 10000);
			//			if (verbose) System.Console.WriteLine("inner types:" + count);
			while (count-- > 0) {
				DomType innerType = ReadTypeInternal (reader, nameTable, objectTable);
				innerType.DeclaringType = result;
				result.Add (innerType);
			}
			
			// fields
			//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
			count = ReadUInt (reader, 10000);
			//			if (verbose) System.Console.WriteLine("fields:" + count);
			while (count-- > 0) {
				DomField field = ReadField (reader, nameTable, objectTable);
				field.DeclaringType = result;
				result.Add (field);
			}
			
			// methods
			//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
			count = ReadUInt (reader, 10000);
			//			if (verbose) System.Console.WriteLine("methods:" + count);
			while (count-- > 0) {
				DomMethod method = ReadMethod (reader, nameTable, objectTable);
				method.DeclaringType = result;
				result.Add (method);
			}
			
			// properties
			//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
			count = ReadUInt (reader, 10000);
			//			if (verbose) System.Console.WriteLine("properties:" + count);
			while (count-- > 0) {
				DomProperty property = ReadProperty (reader, nameTable, objectTable);
				property.DeclaringType = result;
				result.Add (property);
			}
			
			// events
			//			if (verbose) System.Console.WriteLine("pos:" + reader.BaseStream.Position);
			count = ReadUInt (reader, 10000);
			//			if (verbose) System.Console.WriteLine("events:" + count);
			while (count-- > 0) {
				DomEvent evt = ReadEvent (reader, nameTable, objectTable);
				evt.DeclaringType = result;
				result.Add (evt);
			}
			
			// type parameters
			count = ReadUInt (reader, 500);
			while (count-- > 0) {
				TypeParameter tp = ReadTypeParameter (reader, nameTable, objectTable);
				result.AddTypeParameter (tp);
			}
			return result;
		}
Example #40
0
		public static DomType ReadType (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			nameTable.Reset ();
			return ReadTypeInternal (reader, nameTable, objectTable);
		}
Example #41
0
		public static TypeParameter ReadTypeParameter (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			string name = ReadString (reader, nameTable);
			TypeParameter tp = new TypeParameter (name);
			
			// Flags
			tp.TypeParameterModifier = (TypeParameterModifier)reader.ReadByte ();
			
			// Variance 

			tp.Variance = (TypeParameterVariance)reader.ReadByte ();
			
			// Constraints
			
			uint count = ReadUInt (reader, 1000);
			while (count-- > 0)
				tp.AddConstraint (ReadReturnType (reader, nameTable, objectTable));

			// Attributes
			
			count = ReadUInt (reader, 1000);
			while (count-- > 0)
				tp.AddAttribute (ReadAttribute (reader, nameTable, objectTable));

			return tp;
		}
Example #42
0
        internal static List <AttributeEntry> ReadAttributeEntryList(BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
        {
            List <AttributeEntry> list = new List <AttributeEntry> ();
            // Number of attributes
            int num = reader.ReadInt32();

            while (num-- > 0)
            {
                AttributeEntry e = new AttributeEntry();
                e.File      = ReadString(reader, nameTable);
                e.Attribute = ReadAttribute(reader, nameTable, objectTable);
                list.Add(e);
            }
            return(list);
        }
Example #43
0
		public static DomAttribute ReadAttribute (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomAttribute attr = new DomAttribute ();
			attr.Name = ReadString (reader, nameTable);
			attr.Region = ReadRegion (reader, nameTable);
			attr.AttributeTarget = (AttributeTarget)reader.ReadInt32 ();
			attr.AttributeType = ReadReturnType (reader, nameTable, objectTable);
			
			// Named argument count
			uint num = ReadUInt (reader, 500);
			string[] names = new string[num];
			for (int n=0; n<num; n++)
				names [n] = ReadString (reader, nameTable);
			
			CodeExpression[] exps = ReadExpressionArray (reader, nameTable);
			
			int i;
			for (i=0; i<num; i++)
				attr.AddNamedArgument (names [i], exps [i]);
			
			for (; i<exps.Length; i++)
				attr.AddPositionalArgument (exps [i]);

			return attr;
		}
Example #44
0
		public static DomMethod ReadMethod (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			DomMethod result = new DomMethod ();
			ReadMemberInformation (reader, nameTable, objectTable, result);
			uint explicitInterfaces = ReadUInt (reader, 500);
			while (explicitInterfaces-- > 0) {
				result.AddExplicitInterface (ReadReturnType (reader, nameTable, objectTable));
			}
			
			result.BodyRegion = ReadRegion (reader, nameTable);
			result.ReturnType = ReadReturnType (reader, nameTable, objectTable);
			result.MethodModifier = (MethodModifier)reader.ReadInt32 ();
			
			uint arguments = ReadUInt (reader, 5000);
			while (arguments-- > 0) {
				result.Add (ReadParameter (reader, nameTable, objectTable));
			}
			arguments = ReadUInt (reader, 500);
			while (arguments-- > 0) {
				result.AddTypeParameter (ReadTypeParameter (reader, nameTable, objectTable));
			}
			return result;
		}
Example #45
0
		internal static List<AttributeEntry> ReadAttributeEntryList (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable)
		{
			List<AttributeEntry> list = new List<AttributeEntry> ();
			// Number of attributes
			int num = reader.ReadInt32 ();
			while (num-- > 0) {
				AttributeEntry e = new AttributeEntry ();
				e.File = ReadString (reader, nameTable);
				e.Attribute = ReadAttribute (reader, nameTable, objectTable);
				list.Add (e);
			}
			return list;
		}
Example #46
0
		public static CodeExpression[] ReadExpressionArray (BinaryReader reader, INameDecoder nameTable)
		{
			int count = reader.ReadInt32 ();
			if (count == 0) 
				return new CodeExpression[0];
			CodeExpression[] exps = new CodeExpression[count];
			for (int n = 0; n < count; n++) {
				exps [n] = ReadExpression (reader, nameTable);
			}
			return exps;
		}
 public static DomType ReadType(BinaryReader reader, INameDecoder nameTable)
 {
     nameTable.Reset();
     return(ReadTypeInternal(reader, nameTable));
 }
		public static TypeParameter ReadTypeParameter (BinaryReader reader, INameDecoder nameTable)
		{
			string name = ReadString (reader, nameTable);
			TypeParameter tp = new TypeParameter (name);
			
			// Flags
			
			byte f = reader.ReadByte ();
			if ((f & 1) != 0)
				tp.ClassRequired = true;
			if ((f & 2) != 0)
				tp.ValueTypeRequired = true;
			if ((f & 4) != 0)
				tp.ConstructorRequired = true;

			// Variance 

			tp.Variance = (TypeParameterVariance)reader.ReadByte ();

			// Constraints
			
			uint count = ReadUInt (reader, 1000);
			while (count-- > 0)
				tp.AddConstraint (ReadReturnType (reader, nameTable));

			// Attributes
			
			count = ReadUInt (reader, 1000);
			while (count-- > 0)
				tp.AddAttribute (ReadAttribute (reader, nameTable));

			return tp;
		}
Example #49
0
		public static CodeExpression ReadExpression (BinaryReader reader, INameDecoder nameTable)
		{
			TypeCode code = (TypeCode)reader.ReadInt32 ();
			switch (code) {
			case TypeCode.DBNull:
				return new CodePrimitiveExpression (null);
			case TypeCode.Object:
				return (CodeExpression)serializer.Deserialize (reader, typeof(CodeExpression));
			default:
				return new CodePrimitiveExpression (Convert.ChangeType (ReadString (reader, nameTable), code, CultureInfo.InvariantCulture));
			}
		}
Example #50
0
 /// <summary>
 /// Reads the name of an element from the reader (using the provided name decoder).
 /// </summary>
 /// <param name="nameDecoder">The name decoder.</param>
 /// <returns>
 /// The name of the element.
 /// </returns>
 public abstract string ReadName(INameDecoder nameDecoder);
        /// <summary>
        /// Reads the name of an element from the reader.
        /// </summary>
        /// <param name="nameDecoder">The name decoder.</param>
        /// <returns>
        /// The name of the element.
        /// </returns>
        public override string ReadName(INameDecoder nameDecoder)
        {
            if (nameDecoder == null)
            {
                throw new ArgumentNullException("nameDecoder");
            }

            if (Disposed) { ThrowObjectDisposedException(); }
            if (State == BsonReaderState.Type)
            {
                ReadBsonType();
            }
            if (State != BsonReaderState.Name)
            {
                ThrowInvalidState("ReadName", BsonReaderState.Name);
            }

            nameDecoder.Inform(CurrentName);
            State = BsonReaderState.Value;
            return CurrentName;
        }
Example #52
0
		static void ReadMemberInformation (BinaryReader reader, INameDecoder nameTable, IDomObjectTable objectTable, AbstractMember member)
		{
			member.Name          = ReadString (reader, nameTable);
			member.Documentation = ReadString (reader, nameTable);
			member.Modifiers     = (Modifiers)reader.ReadUInt32();
			member.Location      = ReadLocation (reader, nameTable);
			
			uint count = ReadUInt (reader, 1000);
			while (count-- > 0)
				member.Add (ReadAttribute (reader, nameTable, objectTable));
		}
Example #53
0
		static string ReadString (BinaryReader reader, INameDecoder nameTable)
		{
			int id = reader.ReadInt32 ();
			if (id == -2)
				return null;
			string res = nameTable.GetStringValue (id);
			if (res == null) {
				res = reader.ReadString ();
				nameTable.RegisterString (id, res);
			}
			return res;
		}
 /// <summary>
 /// Reads the name of an element from the reader (using the provided name decoder).
 /// </summary>
 /// <param name="nameDecoder">The name decoder.</param>
 /// <returns>
 /// The name of the element.
 /// </returns>
 public abstract string ReadName(INameDecoder nameDecoder);
        public static PersistentRegion Read(BinaryReader reader, INameDecoder nameTable)
        {
            if (PersistentHelper.ReadNull (reader)) return null;

            PersistentRegion reg = new PersistentRegion ();
            reg.FileName = PersistentHelper.ReadString (reader, nameTable);
            reg.beginLine = reader.ReadInt32 ();
            reg.endLine = reader.ReadInt32 ();
            reg.beginColumn = reader.ReadInt32 ();
            reg.endColumn = reader.ReadInt32 ();
            return reg;
        }