Exemple #1
0
	/// <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));
        }