}
};
-class ModuleRegexPCRE : public Module
+class PCREFactory : public RegexFactory
{
-public:
- ModuleRegexPCRE() {
- ServerInstance->Modules->PublishInterface("RegularExpression", this);
- }
-
- virtual Version GetVersion()
+ public:
+ PCREFactory(Module* m) : RegexFactory(m, "regex/pcre") {}
+ Regex* Create(const std::string& expr)
{
- return Version("Regex Provider Module for PCRE", VF_COMMON | VF_VENDOR);
+ return new PCRERegex(expr);
}
+};
- virtual ~ModuleRegexPCRE()
- {
- ServerInstance->Modules->UnpublishInterface("RegularExpression", this);
+class ModuleRegexPCRE : public Module
+{
+public:
+ PCREFactory ref;
+ ModuleRegexPCRE() : ref(this) {
+ ServerInstance->Modules->AddService(ref);
}
- void OnRequest(Request& request)
+ Version GetVersion()
{
- if (strcmp("REGEX-NAME", request.id) == 0)
- {
- static_cast<RegexNameRequest&>(request).result = "pcre";
- }
- else if (strcmp("REGEX", request.id) == 0)
- {
- RegexFactoryRequest& rfr = (RegexFactoryRequest&)request;
- std::string rx = rfr.GetRegex();
- rfr.result = new PCRERegex(rx);
- }
+ return Version("Regex Provider Module for PCRE", VF_OPTCOMMON | VF_VENDOR);
}
};