Example #1
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        public static IEnumerable <GlowValue> EnumerateValues(EmberContainer container)
        {
            foreach (var ember in container)
            {
                var value = GetValue(ember);

                if (value != null)
                {
                    yield return(value);
                }
            }
        }
Example #6
0
        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);
                }
            }
        }
Example #7
0
        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);
        }
Example #9
0
        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));
 }
Example #12
0
 public EmberDynamicContainer(BerTag tag, EmberContainer parent)
     : base(tag, parent, true)
 {
 }
Example #13
0
        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);
        }
Example #14
0
        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;
        }