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); }
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)); }