public static T TestOSCValueParser <T>(T value, Func <BinaryReader, IOSCValue <T> > parser) { IOSCValue <T> val = OSCValue.Wrap(value) as IOSCValue <T>; BinaryReader reader = new BinaryReader(new MemoryStream(val.Bytes)); IOSCValue <T> parsed = parser.Invoke(reader); Assert.Equal(reader.BaseStream.Position, reader.BaseStream.Length); return(parsed.Contents); }
public static new OSCMessage Parse(BinaryReader reader) { OSCString address = OSCString.Parse(reader); OSCString typeTags = OSCString.Parse(reader); int valueCount = typeTags.Contents.Length - 1; List <IOSCValue> values = new List <IOSCValue>(); foreach (char current in typeTags.Contents.Substring(1)) { IOSCValue value = OSCValue.Parse(current, reader); values.Add(value); } return(new OSCMessage(address.Contents, values)); }