예제 #1
0
        /// <summary>
        /// Gets or sets option.
        /// </summary>
        public static double GetSet(ref double option, int defaultValue, PhpValue newValue, IniAction action)
        {
            var oldValue = option;

            if (action == IniAction.Set)
            {
                option = (int)newValue.ToDouble();
            }

            return(oldValue);
        }
예제 #2
0
 public override bool SetParameter(StreamParameterOptions option, PhpValue value)
 {
     if (option == StreamParameterOptions.ReadTimeout)
     {
         int timeout = (int)(value.ToDouble() * 1000.0);
         Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, timeout);
         Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, timeout);
         return(true);
     }
     return(base.SetParameter(option, value));
 }
예제 #3
0
        /// <summary>
        /// Sets variable's type.
        /// </summary>
        /// <param name="ctx">Current runtime context.</param>
        /// <param name="variable">The variable.</param>
        /// <param name="type">The string identifying a new type. See PHP manual for details.</param>
        /// <returns>Whether <paramref name="type"/> is valid type identifier.</returns>
        /// <exception cref="PhpException"><paramref name="type"/> has invalid value.</exception>
        public static bool settype(Context ctx, ref PhpValue variable, string type)
        {
            switch (type.ToLowerInvariant())
            {
            case "bool":
            case "boolean":
                variable = PhpValue.Create(variable.ToBoolean());
                return(true);

            case "int":
            case "integer":
                variable = PhpValue.Create(variable.ToLong());
                return(true);

            case "float":
            case "double":
                variable = PhpValue.Create(variable.ToDouble());
                return(true);

            case "string":
                if (variable.TypeCode != PhpTypeCode.MutableString)        // already a string with possible binary data
                {
                    variable = PhpValue.Create(variable.ToString(ctx));
                }
                return(true);

            case "array":
                variable = PhpValue.Create(variable.ToArray());
                return(true);

            case "object":
                variable = PhpValue.FromClass(variable.ToClass());
                return(true);

            case "null":
                variable = PhpValue.Null;
                return(true);
            }

            PhpException.InvalidArgument(nameof(type), Resources.LibResources.invalid_type_name);
            return(false);
        }
예제 #4
0
        public override bool SetParameter(StreamParameterOptions option, PhpValue value)
        {
            switch (option)
            {
            case StreamParameterOptions.ReadTimeout:
                // value is in seconds
                var timeout = (int)(value.ToDouble() * 1000.0);     // milliseconds
                Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, timeout);
                Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, timeout);
                return(true);

            case StreamParameterOptions.BlockingMode:
                // value is boolean indicating whether blocking should be enabled
                Socket.Blocking = (bool)value;
                return(true);
            }

            //
            return(base.SetParameter(option, value));
        }
예제 #5
0
        /// <summary>
        /// Sets variable's type.
        /// </summary>
        /// <param name="ctx">Current runtime context.</param>
        /// <param name="variable">The variable.</param>
        /// <param name="type">The string identifying a new type. See PHP manual for details.</param>
        /// <returns>Whether <paramref name="type"/> is valid type identifier.</returns>
        /// <exception cref="PhpException"><paramref name="type"/> has invalid value.</exception>
        public static bool settype(Context ctx, ref PhpValue variable, string type)
        {
            switch (type.ToLowerInvariant())
            {
            case "bool":
            case "boolean":
                variable = PhpValue.Create(variable.ToBoolean());
                return(true);

            case "int":
            case "integer":
                variable = PhpValue.Create(variable.ToLong());
                return(true);

            case "float":
            case "double":
                variable = PhpValue.Create(variable.ToDouble());
                return(true);

            case "string":
                variable = PhpValue.Create(variable.ToString(ctx));
                return(true);

            case "array":
                variable = PhpValue.Create(variable.AsArray());
                return(true);

            case "object":
                variable = PhpValue.FromClass(variable.ToClass());
                return(true);

            case "null":
                variable = PhpValue.Null;
                return(true);
            }

            //PhpException.InvalidArgument("type", LibResources.GetString("invalid_type_name"));
            //return false;
            throw new ArgumentException(nameof(type));
        }
예제 #6
0
 /// <summary>
 /// Converts to double.
 /// </summary>
 /// <param name="variable">The variable.</param>
 /// <returns>The converted value.</returns>
 public static double floatval(PhpValue variable) => variable.ToDouble();