{{Quickfixn}} Data dictionary
Peter van Lonkhuyzen
Peter at nutcracker.co.za
Mon Jan 30 06:05:22 PST 2012
Some Further Information note This is Reflector C# as I don't have C# loaded on my machine
private void<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Void> parseMsgEl<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/parseMsgEl(System.Xml.XmlNode,QuickFix.DataDictionary.DDMap)>(XmlNode<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:2.0.0.0:b77a5c561934e089/System.Xml.XmlNode> node, DDMap<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap> ddmap)
{
if (node.HasChildNodes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:HasChildNodes:Boolean>)
{
foreach (XmlNode<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:2.0.0.0:b77a5c561934e089/System.Xml.XmlNode> node2 in node.ChildNodes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:ChildNodes:System.Xml.XmlNodeList>)
{
if (node2.Name<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Name:String> == "field")
{
DDField<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField> field = this.FieldsByName<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/FieldsByName:System.Collections.Generic.Dictionary%3cString,QuickFix.DataDictionary.DDField%3e>[node2.Attributes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Attributes:System.Xml.XmlAttributeCollection>["name"].Value<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Value:String>]; <=========== This is not a new instance of field
if (node2.Attributes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Attributes:System.Xml.XmlAttributeCollection>["required"].Value<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Value:String> == "Y")
{
field.Required<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Required:Boolean> = true; <========================= Old Instance gets modified
ddmap.ReqFields<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/ReqFields:System.Collections.Generic.HashSet%3cInt32%3e>.Add<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Core:3.5.0.0:b77a5c561934e089/System.Collections.Generic.HashSet%3c%3e/Add(%3c!0%3e):Boolean>(field.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>);
}
if (!ddmap.IsField<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/IsField(Int32):Boolean>(field.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>))
{
ddmap.Fields<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/Fields:System.Collections.Generic.Dictionary%3cInt32,QuickFix.DataDictionary.DDField%3e>.Add<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3c,%3e/Add(%3c!0%3e,%3c!1%3e)>(field.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>, field); <======================== All messages point to the same field structure with the value of required set to the required of the last message parsed.
}
if ((ddmap.GetType<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Object/GetType():System.Type>() == typeof(DDGrp<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp>)) && (((DDGrp<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp>) ddmap).Delim<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp/property:Delim:Int32> == 0))
{
((DDGrp<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp>) ddmap).Delim<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp/property:Delim:Int32> = field.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>;
}
continue;
}
if (node2.Name<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Name:String> == "group")
{
DDField<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField> field2 = this.FieldsByName<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/FieldsByName:System.Collections.Generic.Dictionary%3cString,QuickFix.DataDictionary.DDField%3e>[node2.Attributes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Attributes:System.Xml.XmlAttributeCollection>["name"].Value<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Value:String>];
DDGrp<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp> grp = new DDGrp<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp/.ctor()>();
if (node2.Attributes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Attributes:System.Xml.XmlAttributeCollection>["required"].Value<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Value:String> == "Y")
{
field2.Required<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Required:Boolean> = true;
ddmap.ReqFields<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/ReqFields:System.Collections.Generic.HashSet%3cInt32%3e>.Add<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Core:3.5.0.0:b77a5c561934e089/System.Collections.Generic.HashSet%3c%3e/Add(%3c!0%3e):Boolean>(field2.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>);
grp.Required<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp/Required:Boolean> = true;
}
if (!ddmap.IsField<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/IsField(Int32):Boolean>(field2.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>))
{
ddmap.Fields<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/Fields:System.Collections.Generic.Dictionary%3cInt32,QuickFix.DataDictionary.DDField%3e>.Add<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3c,%3e/Add(%3c!0%3e,%3c!1%3e)>(field2.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>, field2);
}
grp.NumFld<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDGrp/property:NumFld:Int32> = field2.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>;
this.parseMsgEl<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/parseMsgEl(System.Xml.XmlNode,QuickFix.DataDictionary.DDMap)>(node2, grp);
ddmap.Groups<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDMap/Groups:System.Collections.Generic.Dictionary%3cInt32,QuickFix.DataDictionary.DDGrp%3e>.Add<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://mscorlib:2.0.0.0:b77a5c561934e089/System.Collections.Generic.Dictionary%3c,%3e/Add(%3c!0%3e,%3c!1%3e)>(field2.Tag<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DDField/Tag:Int32>, grp);
continue;
}
if (node2.Name<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Name:String> == "component")
{
XmlNode<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:2.0.0.0:b77a5c561934e089/System.Xml.XmlNode> node3 = this.RootDoc<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/RootDoc:System.Xml.XmlDocument>.SelectSingleNode<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:2.0.0.0:b77a5c561934e089/System.Xml.XmlNode/SelectSingleNode(String):System.Xml.XmlNode>("//components/component[@name='" + node2.Attributes<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Attributes:System.Xml.XmlAttributeCollection>["name"].Value<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Xml:4.0.0.0:b77a5c561934e089/System.Xml.XmlNode/property:Value:String> + "']");
this.parseMsgEl<http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://QuickFix:0.0.0.1/QuickFix.DataDictionary.DataDictionary/parseMsgEl(System.Xml.XmlNode,QuickFix.DataDictionary.DDMap)>(node3, ddmap);
}
}
}
}
This code has given me a work around as not to use .required but to see if it is in the ReqFields Collection
Regards
Peter van Lonkhuyzen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20120130/183b7816/attachment-0002.htm>
More information about the Quickfixn
mailing list