本文整理汇总了C++中wrapper_map_t类的典型用法代码示例。如果您正苦于以下问题:C++ wrapper_map_t类的具体用法?C++ wrapper_map_t怎么用?C++ wrapper_map_t使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了wrapper_map_t类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: registerWrapper
namespace HPHP { namespace Stream {
///////////////////////////////////////////////////////////////////////////////
typedef std::map<std::string,Wrapper*> wrapper_map_t;
// Global registry for wrappers
static wrapper_map_t s_wrappers;
bool registerWrapper(const std::string &scheme, Wrapper *wrapper) {
assert(s_wrappers.find(scheme) == s_wrappers.end());
s_wrappers[scheme] = wrapper;
return true;
}
Wrapper* getWrapper(CStrRef scheme) {
String lscheme = StringUtil::ToLower(scheme);
auto it = s_wrappers.find(lscheme.data());
if (it != s_wrappers.end()) {
return it->second;
}
return nullptr;
}
File* open(CStrRef uri, CStrRef mode, CArrRef options) {
const char *uri_string = uri.data();
Wrapper *wrapper = NULL;
/* Special case for PHP4 Backward Compatability */
if (!strncasecmp(uri_string, "zlib:", sizeof("zlib:") - 1)) {
wrapper = getWrapper("compress.zlib");
} else {
const char *colon = strstr(uri_string, "://");
if (colon) {
wrapper = getWrapper(String(uri_string, colon - uri_string, CopyString));
}
}
if (wrapper == NULL) {
wrapper = getWrapper("file");
}
assert(wrapper);
return wrapper->open(uri, mode, options);
}
static FileStreamWrapper s_file_stream_wrapper;
static PhpStreamWrapper s_php_stream_wrapper;
static HttpStreamWrapper s_http_stream_wrapper;
void RegisterCoreWrappers() {
s_file_stream_wrapper.registerAs("file");
s_php_stream_wrapper.registerAs("php");
s_http_stream_wrapper.registerAs("http");
s_http_stream_wrapper.registerAs("https");
}
///////////////////////////////////////////////////////////////////////////////
}}
开发者ID:gitlisted,项目名称:hiphop-php,代码行数:58,代码来源:stream_wrapper_registry.cpp
示例2: requestInit
namespace HPHP { namespace Stream {
///////////////////////////////////////////////////////////////////////////////
namespace {
struct RequestWrappers final : RequestEventHandler {
void requestInit() override {}
void requestShutdown() override {
m_disabled.clear();
m_wrappers.clear();
}
std::set<String> m_disabled;
std::map<String,std::unique_ptr<Wrapper>> m_wrappers;
};
} // empty namespace
typedef std::map<std::string,Wrapper*> wrapper_map_t;
// Global registry for wrappers
static wrapper_map_t s_wrappers;
// Request local registry for user defined wrappers and disabled builtins
IMPLEMENT_STATIC_REQUEST_LOCAL(RequestWrappers, s_request_wrappers);
bool registerWrapper(const std::string &scheme, Wrapper *wrapper) {
assert(s_wrappers.find(scheme) == s_wrappers.end());
s_wrappers[scheme] = wrapper;
return true;
}
const StaticString
s_file("file"),
s_compress_zlib("compress.zlib"),
s_data("data");
bool disableWrapper(const String& scheme) {
String lscheme = f_strtolower(scheme);
if (lscheme.same(s_file)) {
// Zend quietly succeeds, but does nothing
return true;
}
bool ret = false;
// Unregister request-specific wrappers entirely
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
s_request_wrappers->m_wrappers.erase(lscheme);
ret = true;
}
// Disable builtin wrapper if it exists
if (s_wrappers.find(lscheme.data()) == s_wrappers.end()) {
// No builtin to disable
return ret;
}
if (s_request_wrappers->m_disabled.find(lscheme) !=
s_request_wrappers->m_disabled.end()) {
// Already disabled
return ret;
}
// Disable it
s_request_wrappers->m_disabled.insert(lscheme);
return true;
}
bool restoreWrapper(const String& scheme) {
String lscheme = f_strtolower(scheme);
bool ret = false;
// Unregister request-specific wrapper
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
s_request_wrappers->m_wrappers.erase(lscheme);
ret = true;
}
// Un-disable builtin wrapper
if (s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end()) {
// Not disabled
return ret;
}
// Perform action un-disable
s_request_wrappers->m_disabled.erase(lscheme);
return true;
}
bool registerRequestWrapper(const String& scheme,
std::unique_ptr<Wrapper> wrapper) {
String lscheme = f_strtolower(scheme);
// Global, non-disabled wrapper
if ((s_wrappers.find(lscheme.data()) != s_wrappers.end()) &&
(s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end())) {
//.........这里部分代码省略.........
开发者ID:2bj,项目名称:hhvm,代码行数:101,代码来源:stream-wrapper-registry.cpp
示例3: requestInit
namespace HPHP { namespace Stream {
///////////////////////////////////////////////////////////////////////////////
namespace {
class RequestWrappers : RequestEventHandler {
public:
virtual void requestInit() {}
virtual void requestShutdown() {
m_disabled.clear();
m_wrappers.clear();
}
std::set<String> m_disabled;
std::map<String,std::unique_ptr<Wrapper>> m_wrappers;
};
} // empty namespace
typedef std::map<std::string,Wrapper*> wrapper_map_t;
// Global registry for wrappers
static wrapper_map_t s_wrappers;
// Request local registry for user defined wrappers and disabled builtins
static IMPLEMENT_THREAD_LOCAL(RequestWrappers, s_request_wrappers);
bool registerWrapper(const std::string &scheme, Wrapper *wrapper) {
assert(s_wrappers.find(scheme) == s_wrappers.end());
s_wrappers[scheme] = wrapper;
return true;
}
bool disableWrapper(CStrRef scheme) {
String lscheme = StringUtil::ToLower(scheme);
if (lscheme.same("file")) {
// Zend quietly succeeds, but does nothing
return true;
}
bool ret = false;
// Unregister request-specific wrappers entirely
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
s_request_wrappers->m_wrappers.erase(lscheme);
ret = true;
}
// Disable builtin wrapper if it exists
if (s_wrappers.find(lscheme.data()) == s_wrappers.end()) {
// No builtin to disable
return ret;
}
if (s_request_wrappers->m_disabled.find(lscheme) !=
s_request_wrappers->m_disabled.end()) {
// Already disabled
return ret;
}
// Disable it
s_request_wrappers->m_disabled.insert(lscheme);
return true;
}
bool restoreWrapper(CStrRef scheme) {
String lscheme = StringUtil::ToLower(scheme);
bool ret = false;
// Unregister request-specific wrapper
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
s_request_wrappers->m_wrappers.erase(lscheme);
ret = true;
}
// Un-disable builtin wrapper
if (s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end()) {
// Not disabled
return ret;
}
// Perform action un-disable
s_request_wrappers->m_disabled.erase(lscheme);
return true;
}
bool registerRequestWrapper(CStrRef scheme, std::unique_ptr<Wrapper> wrapper) {
String lscheme = StringUtil::ToLower(scheme);
// Global, non-disabled wrapper
if ((s_wrappers.find(lscheme.data()) != s_wrappers.end()) &&
(s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end())) {
return false;
}
// A wrapper has already been registered for that scheme
if (s_request_wrappers->m_wrappers.find(lscheme) !=
//.........这里部分代码省略.........
开发者ID:MarkTseng,项目名称:hiphop-php,代码行数:101,代码来源:stream_wrapper_registry.cpp
示例4: disableWrapper
bool disableWrapper(const String& scheme) {
String lscheme = f_strtolower(scheme);
if (lscheme.same(s_file)) {
// Zend quietly succeeds, but does nothing
return true;
}
bool ret = false;
// Unregister request-specific wrappers entirely
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
s_request_wrappers->m_wrappers.erase(lscheme);
ret = true;
}
// Disable builtin wrapper if it exists
if (s_wrappers.find(lscheme.data()) == s_wrappers.end()) {
// No builtin to disable
return ret;
}
if (s_request_wrappers->m_disabled.find(lscheme) !=
s_request_wrappers->m_disabled.end()) {
// Already disabled
return ret;
}
// Disable it
s_request_wrappers->m_disabled.insert(lscheme);
return true;
}
开发者ID:2bj,项目名称:hhvm,代码行数:33,代码来源:stream-wrapper-registry.cpp
示例5: getWrapper
Wrapper* getWrapper(CStrRef scheme) {
String lscheme = StringUtil::ToLower(scheme);
auto it = s_wrappers.find(lscheme.data());
if (it != s_wrappers.end()) {
return it->second;
}
return nullptr;
}
开发者ID:gitlisted,项目名称:hiphop-php,代码行数:8,代码来源:stream_wrapper_registry.cpp
示例6: enumWrappers
Array enumWrappers() {
Array ret = Array::Create();
// Enum global wrappers which are not disabled
for (auto it = s_wrappers.begin(); it != s_wrappers.end(); ++it) {
if (s_request_wrappers->m_disabled.find(it->first) ==
s_request_wrappers->m_disabled.end()) {
ret.append(it->first);
}
}
// Enum request local wrappers
for (auto it = s_request_wrappers->m_wrappers.begin();
it != s_request_wrappers->m_wrappers.end(); ++it) {
ret.append(it->first);
}
return ret;
}
开发者ID:2bj,项目名称:hhvm,代码行数:18,代码来源:stream-wrapper-registry.cpp
示例7: registerRequestWrapper
bool registerRequestWrapper(CStrRef scheme, std::unique_ptr<Wrapper> wrapper) {
String lscheme = StringUtil::ToLower(scheme);
// Global, non-disabled wrapper
if ((s_wrappers.find(lscheme.data()) != s_wrappers.end()) &&
(s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end())) {
return false;
}
// A wrapper has already been registered for that scheme
if (s_request_wrappers->m_wrappers.find(lscheme) !=
s_request_wrappers->m_wrappers.end()) {
return false;
}
s_request_wrappers->m_wrappers[lscheme] = std::move(wrapper);
return true;
}
开发者ID:Tlamelo,项目名称:hiphop-php,代码行数:19,代码来源:stream-wrapper-registry.cpp
示例8: getWrapper
Wrapper* getWrapper(const String& scheme) {
String lscheme = f_strtolower(scheme);
// Request local wrapper?
{
auto it = s_request_wrappers->m_wrappers.find(lscheme);
if (it != s_request_wrappers->m_wrappers.end()) {
return it->second.get();
}
}
// Global, non-disabled wrapper?
{
auto it = s_wrappers.find(lscheme.data());
if ((it != s_wrappers.end()) &&
(s_request_wrappers->m_disabled.find(lscheme) ==
s_request_wrappers->m_disabled.end())) {
return it->second;
}
}
return nullptr;
}
开发者ID:2bj,项目名称:hhvm,代码行数:23,代码来源:stream-wrapper-registry.cpp
示例9: registerWrapper
bool registerWrapper(const std::string &scheme, Wrapper *wrapper) {
assert(s_wrappers.find(scheme) == s_wrappers.end());
s_wrappers[scheme] = wrapper;
return true;
}
开发者ID:2bj,项目名称:hhvm,代码行数:5,代码来源:stream-wrapper-registry.cpp
注:本文中的wrapper_map_t类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论