{{Quickfixn}} Data dictionary
Grant Birchmeier
gbirchmeier at connamara.com
Mon Jan 30 07:48:48 PST 2012
Looks like you found a solid bug, Peter.
I opened an issue for it. Hopefully I can get to the bottom of it this
week.
https://github.com/connamara/quickfixn/issues/37
-Grant
On Mon, Jan 30, 2012 at 8:05 AM, Peter van Lonkhuyzen <
Peter at nutcracker.co.za> wrote:
> 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
>
>
>
>
>
> _______________________________________________
> Quickfixn mailing list
> Quickfixn at lists.quickfixn.com
> http://lists.quickfixn.com/listinfo.cgi/quickfixn-quickfixn.com
>
>
--
Grant Birchmeier
*Connamara Systems, LLC*
*Made-To-Measure Trading Solutions.*
Exactly what you need. No more. No less.*
*
http://connamara.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.quickfixn.com/pipermail/quickfixn-quickfixn.com/attachments/20120130/fc4ac965/attachment-0002.htm>
More information about the Quickfixn
mailing list