0) { $low = (int) bcsub($low, 4294967296); } else { $low = (int) $low; } if ($isNeg) { $high = ~$high; $low = ~$low; $low++; if (!$low) { $high++; } } if ($trim) { $high = 0; } } public static function checkString(&$var, $check_utf8) { if (is_array($var) || is_object($var)) { trigger_error("Expect string.", E_USER_ERROR); return; } if (!is_string($var)) { $var = strval($var); } if ($check_utf8 && !preg_match('//u', $var)) { trigger_error("Expect utf-8 encoding.", E_USER_ERROR); return; } } public static function checkEnum(&$var) { static::checkInt32($var); } public static function checkInt32(&$var) { if (is_numeric($var)) { $var = intval($var); } else { trigger_error("Expect integer.", E_USER_ERROR); } } public static function checkUint32(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE === 8) { $var = intval($var); $var |= ((-(($var >> 31) & 0x1)) & ~0xFFFFFFFF); } else { if (bccomp($var, 0x7FFFFFFF) > 0) { $var = bcsub($var, "4294967296"); } $var = (int) $var; } } else { trigger_error("Expect integer.", E_USER_ERROR); } } public static function checkInt64(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE == 8) { $var = intval($var); } else { $var = bcdiv($var, 1, 0); } } else { trigger_error("Expect integer.", E_USER_ERROR); } } public static function checkUint64(&$var) { if (is_numeric($var)) { if (PHP_INT_SIZE == 8) { $var = intval($var); } else { $var = bcdiv($var, 1, 0); } } else { trigger_error("Expect integer.", E_USER_ERROR); } } public static function checkFloat(&$var) { if (is_float($var) || is_numeric($var)) { $var = floatval($var); } else { trigger_error("Expect float.", E_USER_ERROR); } } public static function checkDouble(&$var) { if (is_float($var) || is_numeric($var)) { $var = floatval($var); } else { trigger_error("Expect float.", E_USER_ERROR); } } public static function checkBool(&$var) { if (is_array($var) || is_object($var)) { trigger_error("Expect boolean.", E_USER_ERROR); return; } $var = boolval($var); } public static function checkMessage(&$var, $klass) { if (!$var instanceof $klass && !is_null($var)) { trigger_error("Expect message.", E_USER_ERROR); } } public static function checkRepeatedField(&$var, $type, $klass = null) { if (!$var instanceof RepeatedField && !is_array($var)) { trigger_error("Expect array.", E_USER_ERROR); } if (is_array($var)) { $tmp = new RepeatedField($type, $klass); foreach ($var as $value) { $tmp[] = $value; } return $tmp; } else { if ($var->getType() != $type) { trigger_error( "Expect repeated field of different type.", E_USER_ERROR); } if ($var->getType() === GPBType::MESSAGE && $var->getClass() !== $klass) { trigger_error( "Expect repeated field of different message.", E_USER_ERROR); } return $var; } } public static function checkMapField(&$var, $key_type, $value_type, $klass = null) { if (!$var instanceof MapField && !is_array($var)) { trigger_error("Expect dict.", E_USER_ERROR); } if (is_array($var)) { $tmp = new MapField($key_type, $value_type, $klass); foreach ($var as $key => $value) { $tmp[$key] = $value; } return $tmp; } else { if ($var->getKeyType() != $key_type) { trigger_error( "Expect map field of key type.", E_USER_ERROR); } if ($var->getValueType() != $value_type) { trigger_error( "Expect map field of value type.", E_USER_ERROR); } if ($var->getValueType() === GPBType::MESSAGE && $var->getValueClass() !== $klass) { trigger_error( "Expect map field of different value message.", E_USER_ERROR); } return $var; } } public static function Int64($value) { return new Int64($value); } public static function Uint64($value) { return new Uint64($value); } }