public bool ProcessNode(XamlReader reader, XamlWriter targetWriter, int currentDepth, IXamlLineInfo readerLineInfo) { if ((currentDepth == this.Depth) && ((reader.NodeType == XamlNodeType.NamespaceDeclaration) || (reader.NodeType == XamlNodeType.None))) { this.bufferedNodes.Writer.WriteNode(reader, readerLineInfo); reader.Read(); return(true); } if ((((reader.NodeType == XamlNodeType.StartObject) && reader.Type.IsGeneric) && ((reader.Type.UnderlyingType != null) && (reader.Type.Name == "PropertyReferenceExtension"))) && (reader.Type.UnderlyingType.GetGenericTypeDefinition() == typeof(PropertyReferenceExtension <>))) { if (this.bufferedNodes.Count > 0) { XamlServices.Transform(this.bufferedNodes.Reader, targetWriter, false); this.bufferedNodes = null; } XamlType type = reader.Type; XamlReader reader2 = reader.ReadSubtree(); XamlType xamlType = reader.SchemaContext.GetXamlType(typeof(ActivityBuilder)); XamlType type3 = reader.SchemaContext.GetXamlType(typeof(ActivityPropertyReference)); targetWriter.WriteStartMember(xamlType.GetAttachableMember("PropertyReference"), readerLineInfo); reader2.Read(); targetWriter.WriteStartObject(type3, readerLineInfo); targetWriter.WriteStartMember(type3.GetMember("TargetProperty"), readerLineInfo); targetWriter.WriteValue(this.currentMember.Name, readerLineInfo); targetWriter.WriteEndMember(readerLineInfo); bool flag = reader2.Read(); bool flag2 = false; while (flag) { if (((reader2.NodeType == XamlNodeType.StartMember) && (reader2.Member.DeclaringType == type)) && (reader2.Member.Name == "PropertyName")) { flag2 = true; } else if (flag2) { if (reader2.NodeType == XamlNodeType.EndMember) { flag2 = false; } else if (reader2.NodeType == XamlNodeType.Value) { targetWriter.WriteStartMember(type3.GetMember("SourceProperty"), readerLineInfo); targetWriter.WriteValue((string)reader2.Value, readerLineInfo); targetWriter.WriteEndMember(readerLineInfo); } } flag = reader2.Read(); } targetWriter.WriteEndObject(readerLineInfo); targetWriter.WriteEndMember(readerLineInfo); this.ExitObject = true; reader2.Close(); } else { this.FlushBuffer(targetWriter); targetWriter.WriteNode(reader, readerLineInfo); } return(false); }
public void BufferDefinitions(DynamicActivityXamlReader parent) { XamlReader reader = parent.innerReader.ReadSubtree(); IXamlLineInfo innerReaderLineInfo = parent.innerReaderLineInfo; reader.Read(); this.outerNodes.Writer.WriteStartMember(parent.activityReplacementXamlType.GetMember("Properties"), innerReaderLineInfo); this.outerNodes.Writer.WriteGetObject(innerReaderLineInfo); this.outerNodes.Writer.WriteStartMember(XamlLanguage.Items, innerReaderLineInfo); bool flag = reader.Read(); while (flag) { if ((reader.NodeType == XamlNodeType.StartObject) && (reader.Type == XamlLanguage.Property)) { ActivityPropertyHolder holder = new ActivityPropertyHolder(parent, reader.ReadSubtree()); this.PropertyHolders.Add(holder.Name, holder); this.outerNodes.Writer.WriteValue(holder, innerReaderLineInfo); } else { this.outerNodes.Writer.WriteNode(reader, innerReaderLineInfo); flag = reader.Read(); } } this.outerNodes.Writer.WriteEndObject(innerReaderLineInfo); this.outerNodes.Writer.WriteEndMember(innerReaderLineInfo); reader.Close(); this.alreadyBufferedDefinitions = true; this.FlushValueHolders(parent); }
private void WriteWrappedMember(bool stripWhitespace) { this.nodeQueue.Writer.WriteGetObject(this.innerReaderLineInfo); this.nodeQueue.Writer.WriteStartMember(XamlLanguage.Items, this.innerReaderLineInfo); XamlReader reader = this.innerReader.ReadSubtree(); reader.Read(); reader.Read(); while (!reader.IsEof) { bool flag = false; if (reader.NodeType == XamlNodeType.Value) { string str = reader.Value as string; if ((str != null) && (str.Trim().Length == 0)) { flag = true; } } if (flag && stripWhitespace) { reader.Read(); } else { XamlWriterExtensions.Transform(reader.ReadSubtree(), this.nodeQueue.Writer, this.innerReaderLineInfo, false); } } this.nodeQueue.Writer.WriteEndObject(this.innerReaderLineInfo); this.nodeQueue.Writer.WriteEndMember(this.innerReaderLineInfo); reader.Close(); this.ExitObject(); }
public void ProcessDefaultValue(XamlMember propertyValue, XamlReader subReader, IXamlLineInfo lineInfo) { XamlReader reader; bool flag = false; subReader.Read(); if (!subReader.Member.IsNameValid) { throw FxTrace.Exception.AsError(DynamicActivityXamlReader.CreateXamlException(System.Activities.SR.InvalidXamlMember(subReader.Member.Name), lineInfo)); } this.nodes.Writer.WriteStartMember(propertyValue, lineInfo); subReader.Read(); if (subReader.NodeType == XamlNodeType.GetObject) { subReader.Read(); subReader.Read(); reader = subReader.ReadSubtree(); reader.Read(); } else { reader = subReader; } if ((reader.NodeType != XamlNodeType.EndMember) && (reader.NodeType != XamlNodeType.StartObject)) { flag = true; this.nodes.Writer.WriteStartObject(this.Type, lineInfo); this.nodes.Writer.WriteStartMember(XamlLanguage.Initialization, lineInfo); } while (!reader.IsEof) { this.nodes.Writer.WriteNode(reader, lineInfo); reader.Read(); } reader.Close(); if (!object.ReferenceEquals(reader, subReader)) { subReader.Read(); while (subReader.Read()) { this.nodes.Writer.WriteNode(subReader, lineInfo); } } if (flag) { this.nodes.Writer.WriteEndObject(lineInfo); this.nodes.Writer.WriteEndMember(lineInfo); } subReader.Close(); }
protected void Read_ListXmlSerializable (XamlReader r) { while (true) { r.Read (); if (r.Member == XamlLanguage.Items) break; if (r.IsEof) Assert.Fail ("Items did not appear"); } // t:XmlSerializable (yes...it is not XData!) Assert.IsTrue (r.Read (), "so#1-1"); Assert.AreEqual (XamlNodeType.StartObject, r.NodeType, "so#1-2"); var xt = new XamlType (typeof (XmlSerializable), r.SchemaContext); Assert.AreEqual (xt, r.Type, "so#1-3"); // /t:XmlSerializable Assert.IsTrue (r.Read (), "eo#1-1"); Assert.AreEqual (XamlNodeType.EndObject, r.NodeType, "eo#1-2"); r.Close (); }
public ActivityPropertyHolder(DynamicActivityXamlReader parent, XamlReader reader) { this.parent = parent; this.nodes = new XamlNodeQueue(parent.SchemaContext); IXamlLineInfo innerReaderLineInfo = parent.innerReaderLineInfo; reader.Read(); this.nodes.Writer.WriteStartObject(parent.activityPropertyXamlType, innerReaderLineInfo); int num = 1; int a = 0; int num3 = 0; bool flag = reader.Read(); while (flag) { XamlMember activityPropertyName; switch (reader.NodeType) { case XamlNodeType.StartObject: case XamlNodeType.GetObject: { num++; DynamicActivityXamlReader.IncrementIfPositive(ref a); DynamicActivityXamlReader.IncrementIfPositive(ref num3); if ((num3 <= 0) || !(reader.Type == parent.xamlTypeXamlType)) { goto Label_0231; } this.nodes.Writer.WriteStartObject(parent.typeXamlType, innerReaderLineInfo); flag = reader.Read(); continue; } case XamlNodeType.EndObject: { num--; if (num != 0) { goto Label_0213; } flag = reader.Read(); continue; } case XamlNodeType.StartMember: if (!(reader.Member.DeclaringType == XamlLanguage.Property)) { goto Label_0231; } activityPropertyName = reader.Member; if (!(activityPropertyName == DynamicActivityXamlReader.xPropertyName)) { break; } activityPropertyName = parent.activityPropertyName; if (a == 0) { a = 1; } goto Label_0115; case XamlNodeType.EndMember: DynamicActivityXamlReader.DecrementIfPositive(ref a); DynamicActivityXamlReader.DecrementIfPositive(ref num3); goto Label_0231; case XamlNodeType.Value: if (a != 1) { goto Label_014F; } this.Name = reader.Value as string; goto Label_0231; default: goto Label_0231; } if (activityPropertyName == DynamicActivityXamlReader.xPropertyType) { activityPropertyName = parent.activityPropertyType; if (num3 == 0) { num3 = 1; } } else { if (activityPropertyName != DynamicActivityXamlReader.xPropertyAttributes) { throw FxTrace.Exception.AsError(DynamicActivityXamlReader.CreateXamlException(System.Activities.SR.PropertyMemberNotSupportedByActivityXamlServices(activityPropertyName.Name), innerReaderLineInfo)); } activityPropertyName = parent.activityPropertyAttributes; } Label_0115: this.nodes.Writer.WriteStartMember(activityPropertyName, innerReaderLineInfo); flag = reader.Read(); continue; Label_014F: if (num3 == 1) { XamlTypeName xamlTypeName = XamlTypeName.Parse(reader.Value as string, parent.namespaceTable); XamlType xamlType = parent.SchemaContext.GetXamlType(xamlTypeName); if (xamlType == null) { throw FxTrace.Exception.AsError(DynamicActivityXamlReader.CreateXamlException(System.Activities.SR.InvalidPropertyType(reader.Value as string, this.Name), innerReaderLineInfo)); } this.Type = xamlType; } goto Label_0231; Label_0213: DynamicActivityXamlReader.DecrementIfPositive(ref a); DynamicActivityXamlReader.DecrementIfPositive(ref num3); Label_0231: this.nodes.Writer.WriteNode(reader, innerReaderLineInfo); flag = reader.Read(); } reader.Close(); }