Opc.Ua.JsonDecoder.ReadVariant C# (CSharp) Method

ReadVariant() public method

Reads an Variant from the stream.
public ReadVariant ( string fieldName ) : Variant
fieldName string
return Variant
        public Variant ReadVariant(string fieldName)
        {
            object token = null;

            if (!ReadField(fieldName, out token))
            {
                return Variant.Null;
            }

            var value = token as Dictionary<string, object>;

            if (value == null)
            {
                return Variant.Null;
            }

            try
            {
                m_stack.Push(value);

                var encoding = ReadByte("Encoding");

                BuiltInType type = (BuiltInType)(encoding & (byte)VariantArrayEncodingBits.TypeMask);

                if ((encoding & (byte)VariantArrayEncodingBits.Array) != 0)
                {
                    var dimensions = ReadInt32Array("Dimensions");

                    var array = ReadVariantBody("Body", type);

                    if (array.Value is Array && dimensions != null && dimensions.Count > 1)
                    {
                        array = new Variant(new Matrix((Array)array.Value, type, dimensions.ToArray()));
                    }

                    return array;
                }
                else
                {
                    return ReadVariantBody("Body", type);
                }
            }
            finally
            {
                m_stack.Pop();
            }
        }