/// <summary> /// Send an OscMessage with a single argument. /// </summary> public void Send( string address, OscNull value ){ SendPooled( OscPool.GetMessage( address ).Add( value ) ); }
/// <summary> /// Adds argument. /// </summary> public OscMessage Add(OscNull nothing) { Set(_argInfo.Count, nothing); return(this); }
/// <summary> /// Tries to get argument at index of type null. Returns success status. /// </summary> public bool TryGet(int index, OscNull nothing) { return(ValidateTryGet(index, OscArgType.Null)); }
/// <summary> /// Set argument at specified index, expanding message capacity if necessary. /// </summary> public OscMessage Set(int index, OscNull nothing) { AdaptiveSet(index, OscArgInfo.nullInfo); return(this); }
private object ParseLiteral(string value, IFormatProvider provider) { long valueInt64; float valueFloat; double valueDouble; string argString = value.Trim(); if (argString.Length == 0) { throw new Exception("Argument is empty"); } // try to parse a hex value if (argString.Length > 2 && argString.StartsWith("0x")) { string hexString = argString.Substring(2); // parse a int32 if (hexString.Length <= 8) { if (uint.TryParse(hexString, NumberStyles.HexNumber, provider, out uint valueUInt32)) { return(unchecked ((int)valueUInt32)); } } // parse a int64 else { if (ulong.TryParse(hexString, NumberStyles.HexNumber, provider, out ulong valueUInt64)) { return(unchecked ((long)valueUInt64)); } } } // parse int64 if (argString.EndsWith("L")) { if (long.TryParse(argString.Substring(0, argString.Length - 1), NumberStyles.Integer, provider, out valueInt64)) { return(valueInt64); } } // parse int32 if (int.TryParse(argString, NumberStyles.Integer, provider, out int valueInt32)) { return(valueInt32); } // parse int64 if (long.TryParse(argString, NumberStyles.Integer, provider, out valueInt64)) { return(valueInt64); } // parse double if (argString.EndsWith("d")) { if (double.TryParse(argString.Substring(0, argString.Length - 1), NumberStyles.Float, provider, out valueDouble)) { return(valueDouble); } } // parse float if (argString.EndsWith("f")) { if (float.TryParse(argString.Substring(0, argString.Length - 1), NumberStyles.Float, provider, out valueFloat)) { return(valueFloat); } } if (argString.Equals(float.PositiveInfinity.ToString(provider))) { return(float.PositiveInfinity); } if (argString.Equals(float.NegativeInfinity.ToString(provider))) { return(float.NegativeInfinity); } if (argString.Equals(float.NaN.ToString(provider))) { return(float.NaN); } // parse float if (float.TryParse(argString, NumberStyles.Float, provider, out valueFloat)) { return(valueFloat); } // parse double if (double.TryParse(argString, NumberStyles.Float, provider, out valueDouble)) { return(valueDouble); } // parse bool if (bool.TryParse(argString, out bool valueBool)) { return(valueBool); } // parse null if (OscNull.IsNull(argString)) { return(OscNull.Value); } // parse impulse/bang if (OscImpulse.IsImpulse(argString)) { return(OscImpulse.Value); } // if all else fails then its a symbol i guess (?!?) return(new OscSymbol(argString)); }