From 629dbfaa5cf17880730d64585703c7ad528b2c51 Mon Sep 17 00:00:00 2001 From: alcexhim Date: Mon, 27 Oct 2014 08:13:07 -0400 Subject: [PATCH] Allow inherited EBML data formats to specify whether a particular element has children or not --- .../DataFormats/Markup/EBML/EBMLDataFormat.cs | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Markup/EBML/EBMLDataFormat.cs b/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Markup/EBML/EBMLDataFormat.cs index ef48db7c..698c1e87 100644 --- a/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Markup/EBML/EBMLDataFormat.cs +++ b/CSharp/Plugins/UniversalEditor.Essential/DataFormats/Markup/EBML/EBMLDataFormat.cs @@ -38,6 +38,11 @@ namespace UniversalEditor.DataFormats.Markup.EBML } } + protected virtual bool HasChildren(long elementID) + { + return false; + } + private MarkupElement ReadEBMLElement(Reader reader) { long elementID = ReadEBMLElementID(reader); @@ -59,10 +64,23 @@ namespace UniversalEditor.DataFormats.Markup.EBML } else { - MarkupStringElement mse = new MarkupStringElement(); - mse.FullName = "CDATA"; - mse.Value = Convert.ToBase64String(data); - tag.Elements.Add(mse); + if (HasChildren(elementID)) + { + Reader rdr = new Reader(new MemoryAccessor(data)); + while (!rdr.EndOfStream) + { + MarkupElement el = ReadEBMLElement(rdr); + tag.Elements.Add(el); + } + reader.Close(); + } + else + { + MarkupStringElement mse = new MarkupStringElement(); + mse.FullName = "CDATA"; + mse.Value = Convert.ToBase64String(data); + tag.Elements.Add(mse); + } } return tag; }