Eliminate most Variant litstr methods
Doesn't eliminate the Variant(litstr) constructor, or the same/equals/more/less/etc helpers called from comparisons.h; those will come in a followon diff.
Esse commit está contido em:
@@ -329,14 +329,12 @@ static pcre* pcre_get_compiled_regex(CStrRef regex, pcre_extra **extra,
|
||||
|
||||
static inline void add_offset_pair(Variant &result, CStrRef str, int offset,
|
||||
const char *name) {
|
||||
Array match_pair;
|
||||
match_pair.append(str);
|
||||
match_pair.append(offset);
|
||||
|
||||
if (name) {
|
||||
result.set(name, match_pair);
|
||||
}
|
||||
result.append(match_pair);
|
||||
ArrayInit match_pair(2);
|
||||
match_pair.set(str);
|
||||
match_pair.set(offset);
|
||||
Variant match_pair_v = match_pair.toVariant();
|
||||
if (name) result.set(String(name), match_pair_v);
|
||||
result.append(match_pair_v);
|
||||
}
|
||||
|
||||
static inline bool pcre_need_log_error(int pcre_code) {
|
||||
@@ -633,7 +631,7 @@ static Variant preg_match_impl(CStrRef pattern, CStrRef subject,
|
||||
String value(stringlist[i], offsets[(i<<1)+1] - offsets[i<<1],
|
||||
CopyString);
|
||||
if (subpat_names[i]) {
|
||||
result_set.set(subpat_names[i], value);
|
||||
result_set.set(String(subpat_names[i]), value);
|
||||
}
|
||||
result_set.append(value);
|
||||
}
|
||||
@@ -654,7 +652,7 @@ static Variant preg_match_impl(CStrRef pattern, CStrRef subject,
|
||||
String value(stringlist[i], offsets[(i<<1)+1] - offsets[i<<1],
|
||||
CopyString);
|
||||
if (subpat_names[i]) {
|
||||
subpats->set(subpat_names[i], value);
|
||||
subpats->set(String(subpat_names[i]), value);
|
||||
}
|
||||
subpats->append(value);
|
||||
}
|
||||
@@ -698,7 +696,7 @@ static Variant preg_match_impl(CStrRef pattern, CStrRef subject,
|
||||
if (subpats && global && subpats_order == PREG_PATTERN_ORDER) {
|
||||
for (i = 0; i < num_subpats; i++) {
|
||||
if (subpat_names[i]) {
|
||||
subpats->set(subpat_names[i], match_sets[i]);
|
||||
subpats->set(String(subpat_names[i]), match_sets[i]);
|
||||
}
|
||||
subpats->append(match_sets[i]);
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ static void process_cmd_arguments(int argc, char **argv) {
|
||||
SystemGlobals *g = (SystemGlobals *)get_global_variables();
|
||||
g->GV(argc) = argc;
|
||||
for (int i = 0; i < argc; i++) {
|
||||
g->GV(argv).lvalAt() = argv[i];
|
||||
g->GV(argv).lvalAt() = String(argv[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -439,6 +439,21 @@ void handle_destructor_exception(const char* situation) {
|
||||
}
|
||||
}
|
||||
|
||||
static const StaticString
|
||||
s_HPHP("HPHP"),
|
||||
s_HHVM("HHVM"),
|
||||
s_HHVM_JIT("HHVM_JIT"),
|
||||
s_REQUEST_START_TIME("REQUEST_START_TIME"),
|
||||
s_REQUEST_TIME("REQUEST_TIME"),
|
||||
s_DOCUMENT_ROOT("DOCUMENT_ROOT"),
|
||||
s_SCRIPT_FILENAME("SCRIPT_FILENAME"),
|
||||
s_SCRIPT_NAME("SCRIPT_NAME"),
|
||||
s_PHP_SELF("PHP_SELF"),
|
||||
s_argc("argc"),
|
||||
s_argv("argv"),
|
||||
s_PWD("PWD"),
|
||||
s_HOSTNAME("HOSTNAME");
|
||||
|
||||
void execute_command_line_begin(int argc, char **argv, int xhprof) {
|
||||
StackTraceNoHeap::AddExtraLogging("ThreadType", "CLI");
|
||||
string args;
|
||||
@@ -455,10 +470,10 @@ void execute_command_line_begin(int argc, char **argv, int xhprof) {
|
||||
SystemGlobals *g = (SystemGlobals *)get_global_variables();
|
||||
|
||||
process_env_variables(g->GV(_ENV));
|
||||
g->GV(_ENV).set("HPHP", 1);
|
||||
g->GV(_ENV).set("HHVM", 1);
|
||||
g->GV(_ENV).set(s_HPHP, 1);
|
||||
g->GV(_ENV).set(s_HHVM, 1);
|
||||
if (RuntimeOption::EvalJit) {
|
||||
g->GV(_ENV).set("HHVM_JIT", 1);
|
||||
g->GV(_ENV).set(s_HHVM_JIT, 1);
|
||||
}
|
||||
|
||||
process_cmd_arguments(argc, argv);
|
||||
@@ -466,18 +481,18 @@ void execute_command_line_begin(int argc, char **argv, int xhprof) {
|
||||
Variant &server = g->GV(_SERVER);
|
||||
process_env_variables(server);
|
||||
time_t now = time(nullptr);
|
||||
server.set("REQUEST_START_TIME", now);
|
||||
server.set("REQUEST_TIME", now);
|
||||
server.set("DOCUMENT_ROOT", "");
|
||||
server.set("SCRIPT_FILENAME", argv[0]);
|
||||
server.set("SCRIPT_NAME", argv[0]);
|
||||
server.set("PHP_SELF", argv[0]);
|
||||
server.set("argv", g->GV(argv));
|
||||
server.set("argc", g->GV(argc));
|
||||
server.set("PWD", g_context->getCwd());
|
||||
server.set(s_REQUEST_START_TIME, now);
|
||||
server.set(s_REQUEST_TIME, now);
|
||||
server.set(s_DOCUMENT_ROOT, empty_string);
|
||||
server.set(s_SCRIPT_FILENAME, argv[0]);
|
||||
server.set(s_SCRIPT_NAME, argv[0]);
|
||||
server.set(s_PHP_SELF, argv[0]);
|
||||
server.set(s_argv, g->GV(argv));
|
||||
server.set(s_argc, g->GV(argc));
|
||||
server.set(s_PWD, g_context->getCwd());
|
||||
char hostname[1024];
|
||||
if (!gethostname(hostname, 1024)) {
|
||||
server.set("HOSTNAME", String(hostname, CopyString));
|
||||
server.set(s_HOSTNAME, String(hostname, CopyString));
|
||||
}
|
||||
|
||||
for(std::map<string,string>::iterator it =
|
||||
|
||||
@@ -73,6 +73,51 @@ const VirtualHost *HttpProtocol::GetVirtualHost(Transport *transport) {
|
||||
return VirtualHost::GetCurrent();
|
||||
}
|
||||
|
||||
static const StaticString
|
||||
s_REQUEST_START_TIME("REQUEST_START_TIME"),
|
||||
s_HPHP("HPHP"),
|
||||
s_HHVM("HHVM"),
|
||||
s_HHVM_JIT("HHVM_JIT"),
|
||||
s_HPHP_SERVER("HPHP_SERVER"),
|
||||
s_HPHP_HOTPROFILER("HPHP_HOTPROFILER"),
|
||||
s_HTTP_HOST("HTTP_HOST"),
|
||||
s_CONTENT_TYPE("CONTENT_TYPE"),
|
||||
s_CONTENT_LENGTH("CONTENT_LENGTH"),
|
||||
s_PHP_AUTH_USER("PHP_AUTH_USER"),
|
||||
s_PHP_AUTH_PW("PHP_AUTH_PW"),
|
||||
s_REQUEST_URI("REQUEST_URI"),
|
||||
s_SCRIPT_URL("SCRIPT_URL"),
|
||||
s_SCRIPT_URI("SCRIPT_URI"),
|
||||
s_SCRIPT_NAME("SCRIPT_NAME"),
|
||||
s_PHP_SELF("PHP_SELF"),
|
||||
s_SCRIPT_FILENAME("SCRIPT_FILENAME"),
|
||||
s_PATH_TRANSLATED("PATH_TRANSLATED"),
|
||||
s_PATH_INFO("PATH_INFO"),
|
||||
s_argc("argc"),
|
||||
s_argv("argv"),
|
||||
s_GATEWAY_INTERFACE("GATEWAY_INTERFACE"),
|
||||
s_CGI_1_1("CGI/1.1"),
|
||||
s_SERVER_ADDR("SERVER_ADDR"),
|
||||
s_SERVER_NAME("SERVER_NAME"),
|
||||
s_SERVER_PORT("SERVER_PORT"),
|
||||
s_SERVER_SOFTWARE("SERVER_SOFTWARE"),
|
||||
s_SERVER_PROTOCOL("SERVER_PROTOCOL"),
|
||||
s_SERVER_ADMIN("SERVER_ADMIN"),
|
||||
s_SERVER_SIGNATURE("SERVER_SIGNATURE"),
|
||||
s_REQUEST_METHOD("REQUEST_METHOD"),
|
||||
s_GET("GET"),
|
||||
s_HEAD("HEAD"),
|
||||
s_POST("POST"),
|
||||
s_HTTPS("HTTPS"),
|
||||
s_1("1"),
|
||||
s_REQUEST_TIME("REQUEST_TIME"),
|
||||
s_QUERY_STRING("QUERY_STRING"),
|
||||
s_REMOTE_ADDR("REMOTE_ADDR"),
|
||||
s_REMOTE_HOST("REMOTE_HOST"),
|
||||
s_REMOTE_PORT("REMOTE_PORT"),
|
||||
s_DOCUMENT_ROOT("DOCUMENT_ROOT"),
|
||||
s_THREAD_TYPE("THREAD_TYPE");
|
||||
|
||||
/**
|
||||
* PHP has "EGPCS" processing order of these global variables, and this
|
||||
* order is important in preparing $_REQUEST that needs to know which to
|
||||
@@ -85,21 +130,21 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
const VirtualHost *vhost = VirtualHost::GetCurrent();
|
||||
|
||||
Variant &server = g->GV(_SERVER);
|
||||
server.set("REQUEST_START_TIME", time(nullptr));
|
||||
server.set(s_REQUEST_START_TIME, time(nullptr));
|
||||
|
||||
// $_ENV
|
||||
process_env_variables(g->GV(_ENV));
|
||||
g->GV(_ENV).set("HPHP", 1);
|
||||
g->GV(_ENV).set("HHVM", 1);
|
||||
g->GV(_ENV).set(s_HPHP, 1);
|
||||
g->GV(_ENV).set(s_HHVM, 1);
|
||||
if (RuntimeOption::EvalJit) {
|
||||
g->GV(_ENV).set("HHVM_JIT", 1);
|
||||
g->GV(_ENV).set(s_HHVM_JIT, 1);
|
||||
}
|
||||
|
||||
bool isServer = RuntimeOption::serverExecutionMode();
|
||||
if (isServer) {
|
||||
g->GV(_ENV).set("HPHP_SERVER", 1);
|
||||
g->GV(_ENV).set(s_HPHP_SERVER, 1);
|
||||
#ifdef HOTPROFILER
|
||||
g->GV(_ENV).set("HPHP_HOTPROFILER", 1);
|
||||
g->GV(_ENV).set(s_HPHP_HOTPROFILER, 1);
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -235,7 +280,7 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
String hostName(VirtualHost::GetCurrent()->serverName(host));
|
||||
string hostHeader(host);
|
||||
if (hostHeader.empty()) {
|
||||
server.set("HTTP_HOST", hostName);
|
||||
server.set(s_HTTP_HOST, hostName);
|
||||
StackTraceNoHeap::AddExtraLogging("Server", hostName.data());
|
||||
} else {
|
||||
StackTraceNoHeap::AddExtraLogging("Server", hostHeader.c_str());
|
||||
@@ -251,10 +296,10 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
|
||||
// APE sets CONTENT_TYPE and CONTENT_LENGTH without HTTP_
|
||||
if (!contentType.empty()) {
|
||||
server.set("CONTENT_TYPE", String(contentType));
|
||||
server.set(s_CONTENT_TYPE, String(contentType));
|
||||
}
|
||||
if (!contentLength.empty()) {
|
||||
server.set("CONTENT_LENGTH", String(contentLength));
|
||||
server.set(s_CONTENT_LENGTH, String(contentLength));
|
||||
}
|
||||
|
||||
// APE processes Authorization: Basic into PHP_AUTH_USER and PHP_AUTH_PW
|
||||
@@ -267,14 +312,14 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
StringUtil::Base64Decode(String(authorization.c_str() + 6));
|
||||
int colonPos = decodedAuth.find(':');
|
||||
if (colonPos != String::npos) {
|
||||
server.set("PHP_AUTH_USER", decodedAuth.substr(0, colonPos));
|
||||
server.set("PHP_AUTH_PW", decodedAuth.substr(colonPos + 1));
|
||||
server.set(s_PHP_AUTH_USER, decodedAuth.substr(0, colonPos));
|
||||
server.set(s_PHP_AUTH_PW, decodedAuth.substr(colonPos + 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
server.set("REQUEST_URI", String(transport->getUrl(), CopyString));
|
||||
server.set("SCRIPT_URL", r.originalURL());
|
||||
server.set(s_REQUEST_URI, String(transport->getUrl(), CopyString));
|
||||
server.set(s_SCRIPT_URL, r.originalURL());
|
||||
String prefix(transport->isSSL() ? "https://" : "http://");
|
||||
String port_suffix("");
|
||||
|
||||
@@ -282,7 +327,7 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
if (!transport->isSSL() && RuntimeOption::ServerPort != 80) {
|
||||
port_suffix = ":" + RuntimeOption::ServerPort;
|
||||
}
|
||||
server.set("SCRIPT_URI",
|
||||
server.set(s_SCRIPT_URI,
|
||||
String(prefix + (hostHeader.empty() ? hostName + port_suffix :
|
||||
String(hostHeader)) + r.originalURL()));
|
||||
|
||||
@@ -301,57 +346,57 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
}
|
||||
name += String(RuntimeOption::DefaultDocument);
|
||||
}
|
||||
server.set("SCRIPT_NAME", name);
|
||||
server.set(s_SCRIPT_NAME, name);
|
||||
} else {
|
||||
server.set("SCRIPT_NAME", r.resolvedURL());
|
||||
server.set(s_SCRIPT_NAME, r.resolvedURL());
|
||||
}
|
||||
if (!r.rewritten() && r.pathInfo().empty()) {
|
||||
server.set("PHP_SELF", r.resolvedURL());
|
||||
server.set(s_PHP_SELF, r.resolvedURL());
|
||||
} else {
|
||||
// when URL is rewritten, or pathinfo is not empty, use original URL
|
||||
server.set("PHP_SELF", r.originalURL());
|
||||
server.set(s_PHP_SELF, r.originalURL());
|
||||
}
|
||||
|
||||
server.set("SCRIPT_FILENAME", r.absolutePath());
|
||||
server.set(s_SCRIPT_FILENAME, r.absolutePath());
|
||||
if (r.pathInfo().empty()) {
|
||||
server.set("PATH_TRANSLATED", r.absolutePath());
|
||||
server.set(s_PATH_TRANSLATED, r.absolutePath());
|
||||
} else {
|
||||
server.set("PATH_TRANSLATED",
|
||||
server.set(s_PATH_TRANSLATED,
|
||||
String(vhost->getDocumentRoot() + r.pathInfo().data()));
|
||||
server.set("PATH_INFO", r.pathInfo());
|
||||
server.set(s_PATH_INFO, r.pathInfo());
|
||||
}
|
||||
|
||||
server.set("argv", r.queryString());
|
||||
server.set("argc", 0);
|
||||
server.set("GATEWAY_INTERFACE", "CGI/1.1");
|
||||
server.set("SERVER_ADDR", String(RuntimeOption::ServerPrimaryIP));
|
||||
server.set("SERVER_NAME", hostName);
|
||||
server.set("SERVER_PORT", RuntimeOption::ServerPort);
|
||||
server.set("SERVER_SOFTWARE", "HPHP");
|
||||
server.set("SERVER_PROTOCOL", "HTTP/" + transport->getHTTPVersion());
|
||||
server.set("SERVER_ADMIN", "");
|
||||
server.set("SERVER_SIGNATURE", "");
|
||||
server.set(s_argv, r.queryString());
|
||||
server.set(s_argc, 0);
|
||||
server.set(s_GATEWAY_INTERFACE, s_CGI_1_1);
|
||||
server.set(s_SERVER_ADDR, String(RuntimeOption::ServerPrimaryIP));
|
||||
server.set(s_SERVER_NAME, hostName);
|
||||
server.set(s_SERVER_PORT, RuntimeOption::ServerPort);
|
||||
server.set(s_SERVER_SOFTWARE, s_HPHP);
|
||||
server.set(s_SERVER_PROTOCOL, "HTTP/" + transport->getHTTPVersion());
|
||||
server.set(s_SERVER_ADMIN, empty_string);
|
||||
server.set(s_SERVER_SIGNATURE, empty_string);
|
||||
switch (transport->getMethod()) {
|
||||
case Transport::GET: server.set("REQUEST_METHOD", "GET"); break;
|
||||
case Transport::HEAD: server.set("REQUEST_METHOD", "HEAD"); break;
|
||||
case Transport::GET: server.set(s_REQUEST_METHOD, s_GET); break;
|
||||
case Transport::HEAD: server.set(s_REQUEST_METHOD, s_HEAD); break;
|
||||
case Transport::POST:
|
||||
if (transport->getExtendedMethod() == nullptr) {
|
||||
server.set("REQUEST_METHOD", "POST");
|
||||
server.set(s_REQUEST_METHOD, s_POST);
|
||||
} else {
|
||||
server.set("REQUEST_METHOD", transport->getExtendedMethod());
|
||||
server.set(s_REQUEST_METHOD, transport->getExtendedMethod());
|
||||
}
|
||||
break;
|
||||
default: server.set("REQUEST_METHOD", ""); break;
|
||||
default: server.set(s_REQUEST_METHOD, empty_string); break;
|
||||
}
|
||||
server.set("HTTPS", transport->isSSL() ? "1" : "");
|
||||
server.set("REQUEST_TIME", time(nullptr));
|
||||
server.set("QUERY_STRING", r.queryString());
|
||||
server.set(s_HTTPS, transport->isSSL() ? s_1 : empty_string);
|
||||
server.set(s_REQUEST_TIME, time(nullptr));
|
||||
server.set(s_QUERY_STRING, r.queryString());
|
||||
|
||||
server.set("REMOTE_ADDR", String(transport->getRemoteHost(), CopyString));
|
||||
server.set("REMOTE_HOST", ""); // I don't think we need to nslookup
|
||||
server.set("REMOTE_PORT", transport->getRemotePort());
|
||||
server.set(s_REMOTE_ADDR, String(transport->getRemoteHost(), CopyString));
|
||||
server.set(s_REMOTE_HOST, empty_string); // I don't think we need to nslookup
|
||||
server.set(s_REMOTE_PORT, transport->getRemotePort());
|
||||
|
||||
server.set("DOCUMENT_ROOT", String(vhost->getDocumentRoot()));
|
||||
server.set(s_DOCUMENT_ROOT, String(vhost->getDocumentRoot()));
|
||||
|
||||
for (map<string, string>::const_iterator iter =
|
||||
RuntimeOption::ServerVariables.begin();
|
||||
@@ -367,7 +412,7 @@ void HttpProtocol::PrepareSystemVariables(Transport *transport,
|
||||
sri.setServerVariables(server);
|
||||
|
||||
const char *threadType = transport->getThreadTypeName();
|
||||
server.set("THREAD_TYPE", threadType);
|
||||
server.set(s_THREAD_TYPE, threadType);
|
||||
StackTraceNoHeap::AddExtraLogging("ThreadType", threadType);
|
||||
}
|
||||
|
||||
|
||||
@@ -152,8 +152,10 @@ void RPCRequestHandler::handleRequest(Transport *transport) {
|
||||
HttpProtocol::ClearRecord(ret, tmpfile);
|
||||
}
|
||||
|
||||
static const StaticString s_output("output");
|
||||
static const StaticString s_return("return");
|
||||
static const StaticString
|
||||
s_output("output"),
|
||||
s_return("return"),
|
||||
s_HPHP_RPC("HPHP_RPC");
|
||||
|
||||
bool RPCRequestHandler::executePHPFunction(Transport *transport,
|
||||
SourceRootInfo &sourceRootInfo) {
|
||||
@@ -166,7 +168,7 @@ bool RPCRequestHandler::executePHPFunction(Transport *transport,
|
||||
RequestURI reqURI(rpcFunc);
|
||||
HttpProtocol::PrepareSystemVariables(transport, reqURI, sourceRootInfo);
|
||||
SystemGlobals *g = (SystemGlobals*)get_global_variables();
|
||||
g->GV(_ENV).set("HPHP_RPC", 1);
|
||||
g->GV(_ENV).set(s_HPHP_RPC, 1);
|
||||
}
|
||||
|
||||
bool isFile = rpcFunc.rfind('.') != string::npos;
|
||||
|
||||
@@ -247,10 +247,12 @@ string SourceRootInfo::path() const {
|
||||
}
|
||||
}
|
||||
|
||||
static const StaticString s_PHP_ROOT("PHP_ROOT");
|
||||
|
||||
string& SourceRootInfo::initPhpRoot() {
|
||||
SystemGlobals *g = (SystemGlobals*)get_global_variables();
|
||||
Variant &server = g->GV(_SERVER);
|
||||
Variant v = server.rvalAt("PHP_ROOT");
|
||||
Variant v = server.rvalAt(s_PHP_ROOT);
|
||||
if (v.isString()) {
|
||||
*s_phproot.getCheck() = string(v.asCStrRef().data()) + string("/");
|
||||
} else {
|
||||
|
||||
@@ -31,7 +31,7 @@ namespace HPHP {
|
||||
|
||||
class XboxTransport : public Transport, public Synchronizable {
|
||||
public:
|
||||
XboxTransport(CStrRef message, CStrRef reqInitDoc = "")
|
||||
explicit XboxTransport(CStrRef message, CStrRef reqInitDoc = "")
|
||||
: m_refCount(0), m_done(false), m_code(0) {
|
||||
gettime(CLOCK_MONOTONIC, &m_queueTime);
|
||||
|
||||
@@ -239,6 +239,11 @@ static bool isLocalHost(CStrRef host) {
|
||||
return host.empty() || host == "localhost" || host == "127.0.0.1";
|
||||
}
|
||||
|
||||
static const StaticString
|
||||
s_code("code"),
|
||||
s_response("response"),
|
||||
s_error("error");
|
||||
|
||||
bool XboxServer::SendMessage(CStrRef message, Variant &ret, int timeout_ms,
|
||||
CStrRef host /* = "localhost" */) {
|
||||
if (isLocalHost(host)) {
|
||||
@@ -262,11 +267,11 @@ bool XboxServer::SendMessage(CStrRef message, Variant &ret, int timeout_ms,
|
||||
job->decRefCount(); // i'm done with this job
|
||||
|
||||
if (code > 0) {
|
||||
ret.set("code", code);
|
||||
ret.set(s_code, code);
|
||||
if (code == 200) {
|
||||
ret.set("response", unserialize_from_string(response));
|
||||
ret.set(s_response, unserialize_from_string(response));
|
||||
} else {
|
||||
ret.set("error", response);
|
||||
ret.set(s_error, response);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -294,17 +299,17 @@ bool XboxServer::SendMessage(CStrRef message, Variant &ret, int timeout_ms,
|
||||
int len = 0;
|
||||
char *response = http->recv(len);
|
||||
String sresponse(response, len, AttachString);
|
||||
ret.set("code", code);
|
||||
ret.set(s_code, code);
|
||||
if (code == 200) {
|
||||
ret.set("response", unserialize_from_string(sresponse));
|
||||
ret.set(s_response, unserialize_from_string(sresponse));
|
||||
} else {
|
||||
ret.set("error", sresponse);
|
||||
ret.set(s_error, sresponse);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
// code wasn't correctly set by http client, treat it as not found
|
||||
ret.set("code", 404);
|
||||
ret.set("error", "http client failed");
|
||||
ret.set(s_code, 404);
|
||||
ret.set(s_error, "http client failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -291,10 +291,6 @@ HOT_FUNC IMPLEMENT_SET(bool, m_type = KindOfBoolean; m_data.num = v)
|
||||
IMPLEMENT_SET(int, m_type = KindOfInt64; m_data.num = v)
|
||||
HOT_FUNC IMPLEMENT_SET(int64_t, m_type = KindOfInt64; m_data.num = v)
|
||||
IMPLEMENT_SET(double, m_type = KindOfDouble; m_data.dbl = v)
|
||||
IMPLEMENT_SET(litstr,
|
||||
m_type = KindOfString;
|
||||
m_data.pstr = NEW(StringData)(v);
|
||||
m_data.pstr->incRefCount())
|
||||
IMPLEMENT_SET(const StaticString&,
|
||||
StringData* s = v.get();
|
||||
assert(s);
|
||||
@@ -1279,7 +1275,7 @@ Variant &Variant::operator++() {
|
||||
case KindOfString:
|
||||
{
|
||||
if (getStringData()->empty()) {
|
||||
set("1");
|
||||
set(s_1);
|
||||
} else {
|
||||
int64_t lval; double dval;
|
||||
DataType ret = convertToNumeric(&lval, &dval);
|
||||
@@ -1914,11 +1910,6 @@ Variant Variant::rvalAtHelper(int64_t offset, ACCESSPARAMS_IMPL) const {
|
||||
return null_variant;
|
||||
}
|
||||
|
||||
Variant Variant::rvalAt(litstr offset, ACCESSPARAMS_IMPL) const {
|
||||
String key(offset);
|
||||
return rvalAt(key, flags);
|
||||
}
|
||||
|
||||
Variant Variant::rvalAt(CStrRef offset, ACCESSPARAMS_IMPL) const {
|
||||
if (m_type == KindOfArray) {
|
||||
bool error = flags & AccessFlags::Error;
|
||||
@@ -2068,11 +2059,6 @@ CVarRef Variant::rvalRef(double offset, CVarRef tmp, ACCESSPARAMS_IMPL) const {
|
||||
return rvalRefHelper(offset, tmp, flags);
|
||||
}
|
||||
|
||||
CVarRef Variant::rvalRef(litstr offset, CVarRef tmp, ACCESSPARAMS_IMPL) const {
|
||||
String key(offset);
|
||||
return rvalRef(key, tmp, flags);
|
||||
}
|
||||
|
||||
CVarRef Variant::rvalRef(CStrRef offset, CVarRef tmp, ACCESSPARAMS_IMPL) const {
|
||||
if (m_type == KindOfArray) {
|
||||
bool error = flags & AccessFlags::Error;
|
||||
@@ -2252,10 +2238,6 @@ Variant &Variant::lvalAt(int64_t key, ACCESSPARAMS_IMPL) {
|
||||
Variant &Variant::lvalAt(double key, ACCESSPARAMS_IMPL) {
|
||||
return lvalAtImpl(key, flags);
|
||||
}
|
||||
Variant &Variant::lvalAt(litstr ckey, ACCESSPARAMS_IMPL) {
|
||||
String key(ckey);
|
||||
return lvalAt(key, flags);
|
||||
}
|
||||
Variant &Variant::lvalAt(CStrRef key, ACCESSPARAMS_IMPL) {
|
||||
return lvalAtImpl<CStrRef>(key, flags);
|
||||
}
|
||||
@@ -2272,10 +2254,6 @@ Variant &Variant::lvalRef(int64_t key, Variant& tmp, ACCESSPARAMS_IMPL) {
|
||||
Variant &Variant::lvalRef(double key, Variant& tmp, ACCESSPARAMS_IMPL) {
|
||||
return LvalAtImpl0(this, key, &tmp, false, flags);
|
||||
}
|
||||
Variant &Variant::lvalRef(litstr ckey, Variant& tmp, ACCESSPARAMS_IMPL) {
|
||||
String key(ckey);
|
||||
return lvalRef(key, tmp, flags);
|
||||
}
|
||||
Variant &Variant::lvalRef(CStrRef key, Variant& tmp, ACCESSPARAMS_IMPL) {
|
||||
return Variant::LvalAtImpl0<CStrRef>(this, key, &tmp, false, flags);
|
||||
}
|
||||
|
||||
@@ -802,7 +802,7 @@ class Variant : private TypedValue {
|
||||
return rvalAtHelper(offset, flags);
|
||||
}
|
||||
Variant rvalAt(double offset, ACCESSPARAMS_DECL) const;
|
||||
Variant rvalAt(litstr offset, ACCESSPARAMS_DECL) const;
|
||||
Variant rvalAt(litstr offset, ACCESSPARAMS_DECL) const = delete;
|
||||
Variant rvalAt(CStrRef offset, ACCESSPARAMS_DECL) const;
|
||||
Variant rvalAt(CVarRef offset, ACCESSPARAMS_DECL) const;
|
||||
|
||||
@@ -819,7 +819,7 @@ class Variant : private TypedValue {
|
||||
return rvalRefHelper(offset, tmp, flags);
|
||||
}
|
||||
CVarRef rvalRef(double offset, CVarRef tmp, ACCESSPARAMS_DECL) const;
|
||||
CVarRef rvalRef(litstr offset, CVarRef tmp, ACCESSPARAMS_DECL) const;
|
||||
CVarRef rvalRef(litstr offset, CVarRef tmp, ACCESSPARAMS_DECL) const = delete;
|
||||
CVarRef rvalRef(CStrRef offset, CVarRef tmp, ACCESSPARAMS_DECL) const;
|
||||
CVarRef rvalRef(CVarRef offset, CVarRef tmp, ACCESSPARAMS_DECL) const;
|
||||
|
||||
@@ -873,14 +873,14 @@ class Variant : private TypedValue {
|
||||
Variant &lvalAt(int key, ACCESSPARAMS_DECL);
|
||||
Variant &lvalAt(int64_t key, ACCESSPARAMS_DECL);
|
||||
Variant &lvalAt(double key, ACCESSPARAMS_DECL);
|
||||
Variant &lvalAt(litstr key, ACCESSPARAMS_DECL);
|
||||
Variant &lvalAt(litstr key, ACCESSPARAMS_DECL) = delete;
|
||||
Variant &lvalAt(CStrRef key, ACCESSPARAMS_DECL);
|
||||
Variant &lvalAt(CVarRef key, ACCESSPARAMS_DECL);
|
||||
|
||||
Variant &lvalRef(int key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
Variant &lvalRef(int64_t key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
Variant &lvalRef(double key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
Variant &lvalRef(litstr key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
Variant &lvalRef(litstr key, Variant& tmp, ACCESSPARAMS_DECL) = delete;
|
||||
Variant &lvalRef(CStrRef key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
Variant &lvalRef(CVarRef key, Variant& tmp, ACCESSPARAMS_DECL);
|
||||
|
||||
@@ -907,9 +907,7 @@ class Variant : private TypedValue {
|
||||
CVarRef set(int key, CVarRef v) { return set((int64_t)key, v); }
|
||||
CVarRef set(int64_t key, CVarRef v);
|
||||
CVarRef set(double key, CVarRef v);
|
||||
CVarRef set(litstr key, CVarRef v, bool isString = false) {
|
||||
return set(String(key), v, isString);
|
||||
}
|
||||
CVarRef set(litstr key, CVarRef v, bool isString = false) = delete;
|
||||
CVarRef set(CStrRef key, CVarRef v, bool isString = false);
|
||||
CVarRef set(CVarRef key, CVarRef v);
|
||||
|
||||
@@ -918,18 +916,14 @@ class Variant : private TypedValue {
|
||||
CVarRef setRef(int key, CVarRef v) { return setRef((int64_t)key, v); }
|
||||
CVarRef setRef(int64_t key, CVarRef v);
|
||||
CVarRef setRef(double key, CVarRef v);
|
||||
CVarRef setRef(litstr key, CVarRef v, bool isString = false) {
|
||||
return setRef(String(key), v, isString);
|
||||
}
|
||||
CVarRef setRef(litstr key, CVarRef v, bool isString = false) = delete;
|
||||
CVarRef setRef(CStrRef key, CVarRef v, bool isString = false);
|
||||
CVarRef setRef(CVarRef key, CVarRef v);
|
||||
|
||||
CVarRef set(int key, RefResult v) { return setRef(key, variant(v)); }
|
||||
CVarRef set(int64_t key, RefResult v) { return setRef(key, variant(v)); }
|
||||
CVarRef set(double key, RefResult v) { return setRef(key, variant(v)); }
|
||||
CVarRef set(litstr key, RefResult v, bool isString = false) {
|
||||
return setRef(key, variant(v), isString);
|
||||
}
|
||||
CVarRef set(litstr key, RefResult v, bool isString = false) = delete;
|
||||
CVarRef set(CStrRef key, RefResult v, bool isString = false) {
|
||||
return setRef(key, variant(v), isString);
|
||||
}
|
||||
@@ -941,9 +935,7 @@ class Variant : private TypedValue {
|
||||
void remove(int key) { removeImpl((int64_t)key);}
|
||||
void remove(int64_t key) { removeImpl(key);}
|
||||
void remove(double key) { removeImpl(key);}
|
||||
void remove(litstr key, bool isString = false) {
|
||||
remove(String(key), isString);
|
||||
}
|
||||
void remove(litstr key, bool isString = false) = delete;
|
||||
void remove(CStrRef key, bool isString = false) {
|
||||
removeImpl(key, isString);
|
||||
}
|
||||
@@ -1129,7 +1121,7 @@ class Variant : private TypedValue {
|
||||
CVarRef set(int v);
|
||||
CVarRef set(int64_t v);
|
||||
CVarRef set(double v);
|
||||
CVarRef set(litstr v);
|
||||
CVarRef set(litstr v) = delete;
|
||||
CVarRef set(const std::string & v) {
|
||||
return set(String(v));
|
||||
}
|
||||
@@ -1449,8 +1441,8 @@ public:
|
||||
return asVariant()->isNull();
|
||||
}
|
||||
private:
|
||||
/* implicit */ VarNR(litstr v); // not implemented
|
||||
/* implicit */ VarNR(const std::string & v); // not implemented
|
||||
/* implicit */ VarNR(litstr v) = delete;
|
||||
/* implicit */ VarNR(const std::string & v) = delete;
|
||||
|
||||
void init(DataType dt) {
|
||||
m_type = dt;
|
||||
|
||||
@@ -49,6 +49,10 @@ bool f_function_exists(CStrRef function_name, bool autoload /* = true */) {
|
||||
function_exists(function_name));
|
||||
}
|
||||
|
||||
static const StaticString
|
||||
s__invoke("__invoke"),
|
||||
s_Closure__invoke("Closure::__invoke");
|
||||
|
||||
bool f_is_callable(CVarRef v, bool syntax /* = false */,
|
||||
VRefParam name /* = null */) {
|
||||
bool ret = true;
|
||||
@@ -107,13 +111,11 @@ bool f_is_callable(CVarRef v, bool syntax /* = false */,
|
||||
|
||||
if (Variant::GetAccessorType(tv_func) == KindOfObject) {
|
||||
ObjectData *d = Variant::GetObjectData(tv_func);
|
||||
static const StringData* sd__invoke
|
||||
= StringData::GetStaticString("__invoke");
|
||||
const Func* invoke = d->getVMClass()->lookupMethod(sd__invoke);
|
||||
const Func* invoke = d->getVMClass()->lookupMethod(s__invoke.get());
|
||||
if (name.isReferenced()) {
|
||||
if (d->instanceof(c_Closure::s_cls)) {
|
||||
// Hack to stop the mangled name from showing up
|
||||
name = "Closure::__invoke";
|
||||
name = s_Closure__invoke;
|
||||
} else {
|
||||
name = d->o_getClassName() + "::__invoke";
|
||||
}
|
||||
@@ -124,7 +126,8 @@ bool f_is_callable(CVarRef v, bool syntax /* = false */,
|
||||
return false;
|
||||
}
|
||||
|
||||
Variant f_call_user_func(int _argc, CVarRef function, CArrRef _argv /* = null_array */) {
|
||||
Variant f_call_user_func(int _argc, CVarRef function,
|
||||
CArrRef _argv /* = null_array */) {
|
||||
return vm_call_user_func(function, _argv);
|
||||
}
|
||||
|
||||
@@ -165,9 +168,9 @@ String f_call_user_func_serialized(CStrRef input) {
|
||||
Variant out;
|
||||
try {
|
||||
Variant in = unserialize_from_string(input);
|
||||
out.set("ret", vm_call_user_func(in[s_func], in[s_args]));
|
||||
out.set(s_ret, vm_call_user_func(in[s_func], in[s_args]));
|
||||
} catch (Object &e) {
|
||||
out.set("exception", e);
|
||||
out.set(s_exception, e);
|
||||
}
|
||||
return f_serialize(out);
|
||||
}
|
||||
|
||||
@@ -260,7 +260,7 @@ bool f_msg_receive(CObjRef queue, int64_t desiredmsgtype, VRefParam msgtype,
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
message = (const char *)MSGBUF_MTEXT(buffer);
|
||||
message = String((const char *)MSGBUF_MTEXT(buffer));
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -1670,7 +1670,7 @@ static inline void fetch_value(sp_PDOStatement stmt, Variant &dest, int colno,
|
||||
dest = dest.toString();
|
||||
}
|
||||
if (dest.isNull() && stmt->dbh->oracle_nulls == PDO_NULL_TO_STRING) {
|
||||
dest = "";
|
||||
dest = empty_string;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -842,6 +842,10 @@ Variant f_socket_recv(CObjRef socket, VRefParam buf, int len, int flags) {
|
||||
return retval;
|
||||
}
|
||||
|
||||
static const StaticString
|
||||
s_2colons("::"),
|
||||
s_0_0_0_0("0.0.0.0");
|
||||
|
||||
Variant f_socket_recvfrom(CObjRef socket, VRefParam buf, int len, int flags,
|
||||
VRefParam name, VRefParam port /* = 0 */) {
|
||||
if (len <= 0) {
|
||||
@@ -893,7 +897,7 @@ Variant f_socket_recvfrom(CObjRef socket, VRefParam buf, int len, int flags,
|
||||
|
||||
name = String(Util::safe_inet_ntoa(sin.sin_addr));
|
||||
if (name.toString().empty()) {
|
||||
name = "0.0.0.0";
|
||||
name = s_0_0_0_0;
|
||||
}
|
||||
port = ntohs(sin.sin_port);
|
||||
}
|
||||
@@ -922,7 +926,7 @@ Variant f_socket_recvfrom(CObjRef socket, VRefParam buf, int len, int flags,
|
||||
if (succ) {
|
||||
name = String(addr6, CopyString);
|
||||
} else {
|
||||
name = "::";
|
||||
name = s_2colons;
|
||||
}
|
||||
port = ntohs(sin6.sin6_port);
|
||||
}
|
||||
|
||||
@@ -337,20 +337,20 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(1) = "v2";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
arr.lvalAt(1) = String("v2");
|
||||
VS(arr, CREATE_VECTOR2("v1", "v2"));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(s_n1) = "v1";
|
||||
arr.lvalAt(s_n2) = "v2";
|
||||
arr.lvalAt(s_n1) = String("v1");
|
||||
arr.lvalAt(s_n2) = String("v2");
|
||||
VS(arr, CREATE_MAP2("n1", "v1", "n2", "v2"));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
Variant name = "name";
|
||||
arr.lvalAt(name) = "value";
|
||||
arr.lvalAt(name) = String("value");
|
||||
VS(arr, CREATE_MAP1("name", "value"));
|
||||
}
|
||||
{
|
||||
@@ -400,8 +400,8 @@ bool TestCppBase::TestArray() {
|
||||
// membership
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(1) = "v2";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
arr.lvalAt(1) = String("v2");
|
||||
VERIFY(arr.exists(0));
|
||||
arr.remove(0);
|
||||
VERIFY(!arr.exists(0));
|
||||
@@ -412,28 +412,28 @@ bool TestCppBase::TestArray() {
|
||||
{
|
||||
static const StaticString s_0("0");
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
VERIFY(arr.exists(0));
|
||||
arr.remove(String(s_0));
|
||||
VERIFY(!arr.exists(0));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
VERIFY(arr.exists(0));
|
||||
arr.remove(Variant("0"));
|
||||
VERIFY(!arr.exists(0));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
VERIFY(arr.exists(0));
|
||||
arr.remove(Variant(Variant("0")));
|
||||
VERIFY(!arr.exists(0));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(0) = "v1";
|
||||
arr.lvalAt(0) = String("v1");
|
||||
VERIFY(arr.exists(0));
|
||||
arr.remove(Variant(Variant(0.5)));
|
||||
VERIFY(!arr.exists(0));
|
||||
@@ -447,8 +447,8 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(s_n1) = "v1";
|
||||
arr.lvalAt(s_n2) = "v2";
|
||||
arr.lvalAt(s_n1) = String("v1");
|
||||
arr.lvalAt(s_n2) = String("v2");
|
||||
VERIFY(arr.exists(s_n1));
|
||||
arr.remove(s_n1);
|
||||
VERIFY(!arr.exists(s_n1));
|
||||
@@ -458,17 +458,17 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt() = "test";
|
||||
arr.lvalAt() = String("test");
|
||||
VS(arr, CREATE_VECTOR1("test"));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(s_name) = "value";
|
||||
arr.lvalAt(s_name) = String("value");
|
||||
VERIFY(arr.exists(s_name));
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(1) = "value";
|
||||
arr.lvalAt(1) = String("value");
|
||||
VERIFY(arr.exists(1));
|
||||
VERIFY(arr.exists(1.5));
|
||||
VERIFY(arr.exists(s_1));
|
||||
@@ -478,7 +478,7 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(s_1) = "value";
|
||||
arr.lvalAt(s_1) = String("value");
|
||||
VERIFY(arr.exists(1));
|
||||
VERIFY(arr.exists(1.5));
|
||||
VERIFY(arr.exists(s_1));
|
||||
@@ -488,7 +488,7 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(1.5) = "value";
|
||||
arr.lvalAt(1.5) = String("value");
|
||||
VERIFY(arr.exists(1));
|
||||
VERIFY(arr.exists(1.5));
|
||||
VERIFY(arr.exists(s_1));
|
||||
@@ -498,7 +498,7 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(Variant(1.5)) = "value";
|
||||
arr.lvalAt(Variant(1.5)) = String("value");
|
||||
VERIFY(arr.exists(1));
|
||||
VERIFY(arr.exists(1.5));
|
||||
VERIFY(arr.exists(s_1));
|
||||
@@ -508,7 +508,7 @@ bool TestCppBase::TestArray() {
|
||||
}
|
||||
{
|
||||
Array arr;
|
||||
arr.lvalAt(Variant("1")) = "value";
|
||||
arr.lvalAt(Variant("1")) = String("value");
|
||||
VERIFY(arr.exists(1));
|
||||
VERIFY(arr.exists(1.5));
|
||||
VERIFY(arr.exists(s_1));
|
||||
@@ -657,19 +657,19 @@ bool TestCppBase::TestVariant() {
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(0) = "v0";
|
||||
v.lvalAt(1) = "v1";
|
||||
v.lvalAt(0) = String("v0");
|
||||
v.lvalAt(1) = String("v1");
|
||||
VERIFY(v[0] == "v0");
|
||||
VERIFY(v[1] == "v1");
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt() = "test";
|
||||
v.lvalAt() = String("test");
|
||||
VS(v, CREATE_VECTOR1("test"));
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(1) = "test";
|
||||
v.lvalAt(1) = String("test");
|
||||
VS(v[1], "test");
|
||||
VS(v[1.5], "test");
|
||||
VS(v[Variant(1.5)], "test");
|
||||
@@ -678,7 +678,7 @@ bool TestCppBase::TestVariant() {
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(Variant(1.5)) = "test";
|
||||
v.lvalAt(Variant(1.5)) = String("test");
|
||||
VS(v[1], "test");
|
||||
VS(v[1.5], "test");
|
||||
VS(v[Variant(1.5)], "test");
|
||||
@@ -687,7 +687,7 @@ bool TestCppBase::TestVariant() {
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_1) = "test";
|
||||
v.lvalAt(s_1) = String("test");
|
||||
VS(v[1], "test");
|
||||
VS(v[1.5], "test");
|
||||
VS(v[Variant(1.5)], "test");
|
||||
@@ -696,7 +696,7 @@ bool TestCppBase::TestVariant() {
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(Variant("1")) = "test";
|
||||
v.lvalAt(Variant("1")) = String("test");
|
||||
VS(v[1], "test");
|
||||
VS(v[1.5], "test");
|
||||
VS(v[Variant(1.5)], "test");
|
||||
@@ -707,8 +707,8 @@ bool TestCppBase::TestVariant() {
|
||||
// membership
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_n0) = "v0";
|
||||
v.lvalAt(s_n1) = "v1";
|
||||
v.lvalAt(s_n0) = String("v0");
|
||||
v.lvalAt(s_n1) = String("v1");
|
||||
v.remove(s_n1);
|
||||
VS(v, CREATE_MAP1(s_n0, "v0"));
|
||||
v.append("v2");
|
||||
@@ -716,29 +716,29 @@ bool TestCppBase::TestVariant() {
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_n0) = "v0";
|
||||
v.lvalAt(1) = "v1";
|
||||
v.lvalAt(s_n0) = String("v0");
|
||||
v.lvalAt(1) = String("v1");
|
||||
v.remove(Variant(1.5));
|
||||
VS(v, CREATE_MAP1("n0", "v0"));
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_n0) = "v0";
|
||||
v.lvalAt(1) = "v1";
|
||||
v.lvalAt(s_n0) = String("v0");
|
||||
v.lvalAt(1) = String("v1");
|
||||
v.remove(Variant("1"));
|
||||
VS(v, CREATE_MAP1("n0", "v0"));
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_n0) = "v0";
|
||||
v.lvalAt(1) = "v1";
|
||||
v.remove("1");
|
||||
v.lvalAt(s_n0) = String("v0");
|
||||
v.lvalAt(1) = String("v1");
|
||||
v.remove(String("1"));
|
||||
VS(v, CREATE_MAP1("n0", "v0"));
|
||||
}
|
||||
{
|
||||
Variant v;
|
||||
v.lvalAt(s_n0) = "v0";
|
||||
v.lvalAt(empty_string) = "v1";
|
||||
v.lvalAt(s_n0) = String("v0");
|
||||
v.lvalAt(empty_string) = String("v1");
|
||||
v.remove(Variant());
|
||||
VS(v, CREATE_MAP1("n0", "v0"));
|
||||
}
|
||||
@@ -747,13 +747,13 @@ bool TestCppBase::TestVariant() {
|
||||
{
|
||||
Variant v1("original");
|
||||
Variant v2 = v1;
|
||||
v2 = "changed";
|
||||
v2 = String("changed");
|
||||
VERIFY(v1 == "original");
|
||||
}
|
||||
{
|
||||
Variant v1("original");
|
||||
Variant v2 = strongBind(v1);
|
||||
v2 = "changed";
|
||||
v2 = String("changed");
|
||||
VERIFY(v1 == "changed");
|
||||
}
|
||||
{
|
||||
@@ -972,18 +972,18 @@ bool TestCppBase::TestEqualAsStr() {
|
||||
var_array[5] = 0.0;
|
||||
var_array[6] = 1.0;
|
||||
var_array[7] = 42.2;
|
||||
var_array[8] = "0";
|
||||
var_array[9] = "1";
|
||||
var_array[10] = "42";
|
||||
var_array[11] = "x";
|
||||
var_array[8] = String("0");
|
||||
var_array[9] = String("1");
|
||||
var_array[10] = String("42");
|
||||
var_array[11] = String("x");
|
||||
var_array[12] = Array::Create();
|
||||
Variant v1("original");
|
||||
var_array[13] = v1;
|
||||
Variant v2("changed");
|
||||
var_array[14] = v2;
|
||||
var_array[15] = "";
|
||||
var_array[16] = "Array";
|
||||
var_array[17] = "ARRAY";
|
||||
var_array[15] = empty_string;
|
||||
var_array[16] = String("Array");
|
||||
var_array[17] = String("ARRAY");
|
||||
for (int i = 0; i < arr_len; i++) {
|
||||
for (int j = 0; j < arr_len; j++) {
|
||||
bool eqAsStr = equalAsStr(var_array[i], var_array[j]);
|
||||
|
||||
@@ -158,7 +158,7 @@ bool TestExtApc::test_apc_fetch() {
|
||||
{
|
||||
Variant apcdata = f_apc_fetch("apcdata");
|
||||
Variant c = apcdata; // bump up ref count to make a MapVariant copy
|
||||
apcdata.set("b", 3); // problem
|
||||
apcdata.set(String("b"), 3); // problem
|
||||
VS(apcdata, CREATE_MAP2("a", "test", "b", 3));
|
||||
}
|
||||
{
|
||||
|
||||
@@ -1115,7 +1115,7 @@ bool TestExtArray::test_array_unshift() {
|
||||
")\n");
|
||||
|
||||
q = CREATE_MAP3(0, "orange", 1, "banana", "a", "dummy");
|
||||
q.remove("a");
|
||||
q.remove(String("a"));
|
||||
f_array_unshift(3, ref(q), "apple", CREATE_VECTOR1("raspberry"));
|
||||
VS(f_print_r(q, true),
|
||||
"Array\n"
|
||||
|
||||
@@ -80,7 +80,7 @@ bool TestExtSqlite3::test_sqlite3() {
|
||||
|
||||
Variant id = "DEF";
|
||||
VERIFY(stmt->t_bindvalue(":id", id, SQLITE3_TEXT));
|
||||
id = "ABC";
|
||||
id = String("ABC");
|
||||
{
|
||||
Object objResult = stmt->t_execute();
|
||||
c_SQLite3Result *res = objResult.getTyped<c_SQLite3Result>();
|
||||
@@ -89,9 +89,9 @@ bool TestExtSqlite3::test_sqlite3() {
|
||||
|
||||
VERIFY(stmt->t_clear());
|
||||
VERIFY(stmt->t_reset());
|
||||
id = "DEF";
|
||||
id = String("DEF");
|
||||
VERIFY(stmt->t_bindparam(":id", ref(id), SQLITE3_TEXT));
|
||||
id = "ABC";
|
||||
id = String("ABC");
|
||||
{
|
||||
Object objResult = stmt->t_execute();
|
||||
c_SQLite3Result *res = objResult.getTyped<c_SQLite3Result>();
|
||||
|
||||
@@ -74,9 +74,9 @@ bool TestExtXml::test_xml_parse_into_struct() {
|
||||
Variant vals, index;
|
||||
f_xml_parse_into_struct(p, simple, ref(vals), ref(index));
|
||||
f_xml_parser_free(p);
|
||||
VS(f_print_r(index.rvalAt("PARA"),1),
|
||||
VS(f_print_r(index.rvalAt(String("PARA")),1),
|
||||
"Array\n(\n [0] => 0\n [1] => 2\n)\n");
|
||||
VS(f_print_r(index.rvalAt("NOTE"),1),
|
||||
VS(f_print_r(index.rvalAt(String("NOTE")),1),
|
||||
"Array\n(\n [0] => 1\n)\n");
|
||||
VS(f_print_r(vals.rvalAt(0),1),
|
||||
"Array\n(\n [tag] => PARA\n [type] => open\n [level] => 1\n)\n");
|
||||
|
||||
Referência em uma Nova Issue
Bloquear um usuário