本文整理汇总了C++中ModeHandler::GetModeType方法的典型用法代码示例。如果您正苦于以下问题:C++ ModeHandler::GetModeType方法的具体用法?C++ ModeHandler::GetModeType怎么用?C++ ModeHandler::GetModeType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModeHandler
的用法示例。
在下文中一共展示了ModeHandler::GetModeType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AddService
void ModuleManager::AddService(ServiceProvider& item)
{
switch (item.service)
{
case SERVICE_COMMAND:
if (!ServerInstance->Parser->AddCommand(static_cast<Command*>(&item)))
throw ModuleException("Command "+std::string(item.name)+" already exists.");
return;
case SERVICE_MODE:
{
ModeHandler* mh = static_cast<ModeHandler*>(&item);
if (!ServerInstance->Modes->AddMode(mh))
throw ModuleException("Mode "+std::string(item.name)+" already exists.");
DataProviders.insert(std::make_pair((mh->GetModeType() == MODETYPE_CHANNEL ? "mode/" : "umode/") + item.name, &item));
dynamic_reference_base::reset_all();
return;
}
case SERVICE_METADATA:
if (!ServerInstance->Extensions.Register(static_cast<ExtensionItem*>(&item)))
throw ModuleException("Extension " + std::string(item.name) + " already exists.");
return;
case SERVICE_DATA:
case SERVICE_IOHOOK:
{
if ((item.name.substr(0, 5) == "mode/") || (item.name.substr(0, 6) == "umode/"))
throw ModuleException("The \"mode/\" and the \"umode\" service name prefixes are reserved.");
DataProviders.insert(std::make_pair(item.name, &item));
std::string::size_type slash = item.name.find('/');
if (slash != std::string::npos)
{
DataProviders.insert(std::make_pair(item.name.substr(0, slash), &item));
DataProviders.insert(std::make_pair(item.name.substr(slash + 1), &item));
}
dynamic_reference_base::reset_all();
return;
}
default:
throw ModuleException("Cannot add unknown service type");
}
}