public static GlowValue GetValue(EmberContainer container, BerTag tag) { var node = container[tag]; return(node != null ? GetValue(node) : null); }
/// <summary> /// Creates a container of an application-defined type with Set semantics /// </summary> /// <param name="type">Application-defined type. BerType.ApplicationFlag can be omitted.</param> public static EmberSet CreateApplicationDefinedSet(BerTag tag, uint type, EmberContainer parent) { var set = new EmberSet(tag, parent) { BerTypeNumber = type | BerType.ApplicationFlag }; return set; }
/// <summary> /// Creates a container of an application-defined type with Sequence semantics /// </summary> /// <param name="type">Application-defined type. BerType.ApplicationFlag can be omitted.</param> public static EmberSequence CreateApplicationDefinedSequence(BerTag tag, uint type, EmberContainer parent, bool isOrdered = false) { var sequence = new EmberSequence(tag, parent) { BerTypeNumber = type | BerType.ApplicationFlag, IsOrdered = isOrdered, }; return sequence; }
public static void InsertValue(EmberContainer container, BerTag tag, GlowValue value) { var leaf = ValueToLeaf(tag, value); if (leaf == null) { throw new ArgumentException("Type not supported"); } container.Insert(leaf); }
public static IEnumerable <GlowValue> EnumerateValues(EmberContainer container) { foreach (var ember in container) { var value = GetValue(ember); if (value != null) { yield return(value); } } }
public static IEnumerable <T> EnumerateChildren <T>(EmberContainer container) where T : EmberNode { foreach (var ember in container) { var item = ember as T; if (item != null) { yield return(item); } } }
public static void InsertMinMax(EmberContainer container, BerTag tag, GlowMinMax value) { switch (value.Type) { case GlowParameterType.Integer: container.Insert(new LongEmberLeaf(tag, value.Integer)); break; case GlowParameterType.Real: container.Insert(new RealEmberLeaf(tag, value.Real)); break; default: throw new ArgumentException("Type not supported"); } }
object WriteContainer(EmberContainer node, XmlExportState state) { var writer = state.Writer; writer.WriteStartElement(node.Tag.ToString()); writer.WriteStartAttribute("type"); writer.WriteString(BerDefinitions.GetTypeName(node.BerTypeNumber)); writer.WriteEndAttribute(); if (node.Count > 0) { foreach (var child in node) { child.Accept(this, state); } } writer.WriteEndElement(); return(null); }
public static GlowMinMax GetMinMax(EmberContainer container, BerTag tag) { var node = container[tag]; var value = null as GlowMinMax; if (node != null) { switch (node.BerTypeNumber) { case BerType.Integer: value = new GlowMinMax(GetIntegerNodeValue(node)); break; case BerType.Real: value = new GlowMinMax(((RealEmberLeaf)node).Value); break; } } return(value); }
public EmberDynamicContainer(BerTag tag, EmberContainer parent) : base(tag, parent, true) { }
object IEmberVisitor <XmlExportState, object> .Visit(EmberContainer node, XmlExportState state) { return(WriteContainer(node, state)); }
EmberNode CreateNode(string tagName, string typeName) { BerTag tag; EmberNode node = null; if (BerTag.TryParse(tagName, out tag) && typeName != null) { uint type; if (BerDefinitions.GetTypeFromName(typeName, true, out type)) { switch (type) { case BerType.Null: { node = new NullEmberLeaf(tag); break; } case BerType.Boolean: { bool value; if (bool.TryParse(_reader.ReadContentAsString(), out value)) { node = new BooleanEmberLeaf(tag, value); } break; } case BerType.Integer: { long value; if (long.TryParse(_reader.ReadContentAsString(), out value)) { if ((ulong)value > int.MaxValue) { node = new LongEmberLeaf(tag, value); } else { node = new IntegerEmberLeaf(tag, (int)value); } } break; } case BerType.Real: { double value; if (double.TryParse(_reader.ReadContentAsString(), NumberStyles.Float, XmlExport.FormatProvider, out value)) { node = new RealEmberLeaf(tag, value); } break; } case BerType.UTF8String: { node = new StringEmberLeaf(tag, _reader.ReadContentAsString()); break; } case BerType.OctetString: { var octets = System.Convert.FromBase64String(_reader.ReadContentAsString()); node = new OctetStringEmberLeaf(tag, octets); break; } #pragma warning disable 618 // EmberFrame is obsolete case BerType.Sequence: { if (tag == Legacy.EmberFrame.FrameTag) { node = new Legacy.EmberFrame(); } else { node = new EmberSequence(tag); } break; } #pragma warning restore 618 case BerType.Set: { node = new EmberSet(tag); break; } default: { if (_application != null) { node = _application.CreateNodeFromXml(type, tag, _reader); } if (node == null) { Debug.WriteLine("Unknown BER value type: " + type); node = new EmberContainer(tag, null, type); } break; } } } } return(node); }
EmberNode CreateNode(string tagName, string typeName) { BerTag tag; EmberNode node = null; if(BerTag.TryParse(tagName, out tag) && typeName != null) { uint type; if(BerDefinitions.GetTypeFromName(typeName, true, out type)) { switch(type) { case BerType.Boolean: { bool value; if(bool.TryParse(_reader.ReadContentAsString(), out value)) node = new BooleanEmberLeaf(tag, value); break; } case BerType.Integer: { long value; if(long.TryParse(_reader.ReadContentAsString(), out value)) { if((ulong)value > int.MaxValue) node = new LongEmberLeaf(tag, value); else node = new IntegerEmberLeaf(tag, (int)value); } break; } case BerType.Real: { double value; if(double.TryParse(_reader.ReadContentAsString(), NumberStyles.Float, XmlExport.FormatProvider, out value)) node = new RealEmberLeaf(tag, value); break; } case BerType.UTF8String: { node = new StringEmberLeaf(tag, _reader.ReadContentAsString()); break; } case BerType.OctetString: { var octets = System.Convert.FromBase64String(_reader.ReadContentAsString()); node = new OctetStringEmberLeaf(tag, octets); break; } #pragma warning disable 618 // EmberFrame is obsolete case BerType.Sequence: { if(tag == Legacy.EmberFrame.FrameTag) node = new Legacy.EmberFrame(); else node = new EmberSequence(tag); break; } #pragma warning restore 618 case BerType.Set: { node = new EmberSet(tag); break; } default: { if(_application != null) node = _application.CreateNodeFromXml(type, tag, _reader); if(node == null) { Debug.WriteLine("Unknown BER value type: " + type); node = new EmberContainer(tag, null, type); } break; } } } } return node; }