/// <summary>
 /// Constructs the reader on the given string, given a start
 /// offset within the object.
 /// </summary>
 /// <param name="data">The string to be read.</param>
 /// <param name="start">The start offset of the read.</param>
 public StringDataReader(StringData data, long start)
     : this(data, start, data.Length)
 {
 }
 /// <summary>
 /// Constructs the reader on the given string.
 /// </summary>
 /// <param name="data">The string to be read.</param>
 public StringDataReader(StringData data)
     : this(data, 0)
 {
 }
 /// <summary>
 /// Constructs the reader on the given string, given a start and end
 /// offset within the object.
 /// </summary>
 /// <param name="data">The string to be read.</param>
 /// <param name="start">The start offset of the read.</param>
 /// <param name="end">The end offset of the read.</param>
 public StringDataReader(StringData data, long start, long end)
 {
     this.data = data;
     this.end  = end;
     pos       = start;
 }