Beispiel #1
0
        private void ToEntryForList(List <ComplexEntry> entries, ComplexEntry parent, IObjectNode obj)
        {
            switch (obj.Type)
            {
            case NodeType.Int:
                if (parent.i32a == null)
                {
                    parent.i32a = new List <IntListEntry>();
                }
                parent.i32a.Add(new IntListEntry
                {
                    n   = obj.Name,
                    c   = obj.ListCount,
                    nil = obj.IsNull,
                    v   = obj.Children.Select(c => new IntEntry
                    {
                        n = c.Name,
                        v = (int)c.Value,
                    }).ToList(),
                });
                break;

            case NodeType.Float:
                if (parent.fa == null)
                {
                    parent.fa = new List <FloatListEntry>();
                }
                parent.fa.Add(new FloatListEntry
                {
                    n   = obj.Name,
                    c   = obj.ListCount,
                    nil = obj.IsNull,
                    v   = obj.Children.Select(c => new FloatEntry
                    {
                        n = c.Name,
                        v = (float)c.Value,
                    }).ToList(),
                });
                break;

            case NodeType.String:
                if (parent.sa == null)
                {
                    parent.sa = new List <StringListEntry>();
                }
                parent.sa.Add(new StringListEntry
                {
                    n   = obj.Name,
                    c   = obj.ListCount,
                    nil = obj.IsNull,
                    v   = obj.Children.Select(c => new StringEntry
                    {
                        n = c.Name,
                        v = (string)c.Value,
                    }).ToList(),
                });
                break;

            case NodeType.Complex:
                var name = parent == null ? RootName : (parent.n + "/" + obj.Name);
                var self = new ComplexEntry
                {
                    n     = name,
                    nil   = obj.IsNull,
                    list  = obj.IsList,
                    listc = obj.ListCount,
                };
                entries.Add(self);
                foreach (var n in obj.Children)
                {
                    ToEntry(entries, self, n);
                }
                break;
            }
        }
Beispiel #2
0
        private void ToEntry(List <ComplexEntry> entries, ComplexEntry parent, IObjectNode obj)
        {
            if (obj.IsList)
            {
                ToEntryForList(entries, parent, obj);
                return;
            }

            switch (obj.Type)
            {
            case NodeType.Int:
                if (parent.i32 == null)
                {
                    parent.i32 = new List <IntEntry>();
                }
                parent.i32.Add(new IntEntry
                {
                    n = obj.Name,
                    v = (int)obj.Value,
                });
                break;

            case NodeType.Float:
                if (parent.f == null)
                {
                    parent.f = new List <FloatEntry>();
                }
                parent.f.Add(new FloatEntry
                {
                    n = obj.Name,
                    v = (float)obj.Value,
                });
                break;

            case NodeType.String:
                if (parent.s == null)
                {
                    parent.s = new List <StringEntry>();
                }
                parent.s.Add(new StringEntry
                {
                    n = obj.Name,
                    v = (string)obj.Value,
                });
                break;

            case NodeType.Complex:
                var name = parent == null ? RootName : (parent.n + "/" + obj.Name);
                var self = new ComplexEntry
                {
                    n   = name,
                    nil = obj.IsNull,
                };
                entries.Add(self);
                foreach (var n in obj.Children)
                {
                    ToEntry(entries, self, n);
                }
                break;
            }
        }