Beispiel #1
0
        object ParseValue(string input)
        {
            input = input.Trim();
            var    refSegment = m_switch.ReferenceSegment;
            object value;

            if (refSegment.SegmentType != null)
            {
                value = ConvertType(refSegment.Type.GetActualType(), refSegment.SegmentType, input);
            }
            else
            {
                value = SimpleTypes.ReadString(refSegment.Type, input);
            }
            return(value);
        }
Beispiel #2
0
        public virtual void Parse(PacketParser parser, ParsedSegment parent)
        {
            var reader = SimpleTypes.GetReader(Type);
            var value  = reader(this, parser);

            if (SegmentType != null)
            {
                try
                {
                    value = Utility.ChangeType(value, SegmentType, true);
                }
                catch (OverflowException e)
                {
                    throw new Exception(string.Format("Wrong underlying type {0} for Enum {1} in PacketDefinition {2} in Segment {3}",
                                                      Type, m_segmentType, parser.Packet, Name), e);
                }
                catch (Exception e)
                {
                    Console.WriteLine("Could not parse value " + value + " in Segment \"" + this + "\": " + e);
                }
            }

            parent.AddChild(parser, new ParsedSegment(this, value));
        }