From 6c8d62160c3a5d744f797f06d8c505c5bb8f2622 Mon Sep 17 00:00:00 2001 From: Andreas Baumann Date: Tue, 7 Aug 2012 08:28:12 +0200 Subject: reduced some code duplication when registering modules --- .gitignore | 4 +++- src/ModuleRegistry.hpp | 13 +++++++++++++ src/crawlingwolf.cpp | 10 +++++----- src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp | 12 +----------- src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp | 12 +----------- 5 files changed, 23 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 2ba8d22..b28a811 100644 --- a/.gitignore +++ b/.gitignore @@ -2,12 +2,14 @@ *.RES *.d *.o +*.sho++ *.db *.a +*.so *~ tests/*/test1 tests/*/test2 tests/*/test3 -crawlingwolf +src/crawlingwolf makefiles/gmake/platform.mk.vars makefiles/gmake/platform.vars diff --git a/src/ModuleRegistry.hpp b/src/ModuleRegistry.hpp index fbbdd40..e1c8a08 100644 --- a/src/ModuleRegistry.hpp +++ b/src/ModuleRegistry.hpp @@ -18,4 +18,17 @@ struct ModuleRegistry { } }; +#define REGISTER_MODULE( name, baseClass, subClass ) \ +static baseClass *create( ) \ +{ \ + return new subClass( ); \ +} \ + \ +static void destroy( baseClass *obj ) \ +{ \ + delete obj; \ +} \ + \ +ModuleRegistry registry( name, &create, &destroy ); + #endif diff --git a/src/crawlingwolf.cpp b/src/crawlingwolf.cpp index b322994..328cc80 100644 --- a/src/crawlingwolf.cpp +++ b/src/crawlingwolf.cpp @@ -17,6 +17,11 @@ using namespace std; int main( void ) { FILELog::reportingLevel( ) = logINFO; + + vector modules; + modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" ); + modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" ); + ModuleLoader urlNormalizers( modules ); Frontier *frontier = new MemoryFrontier( ); Fetcher *fetcher = new LibFetchFetcher( ); @@ -34,11 +39,6 @@ int main( void ) ChainURLFilter filters( &protocolFilter, &hostFilter ); - vector modules; - modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" ); - modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" ); - ModuleLoader urlNormalizers( modules ); - //URLNormalizer *normalizer = urlNormalizers.create( "simple" ); URLNormalizer *normalizer = urlNormalizers.create( "google" ); Processor *processor = new HTMLLinkExtractProcessor( normalizer, frontier, &filters, urlSeen ); diff --git a/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp b/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp index e5810d6..4399a01 100644 --- a/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp +++ b/src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp @@ -104,14 +104,4 @@ URL GoogleURLNormalizer::normalize( const URL url, const string s ) "", "" ); } -static URLNormalizer *create( ) -{ - return new GoogleURLNormalizer( ); -} - -static void destroy( URLNormalizer *obj ) -{ - delete obj; -} - -ModuleRegistry registry( "google", &create, &destroy ); +REGISTER_MODULE( "google", URLNormalizer, GoogleURLNormalizer ) diff --git a/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp b/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp index e2f0ed7..414adf1 100644 --- a/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp +++ b/src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp @@ -150,14 +150,4 @@ void SimpleURLNormalizer::normalizePath( string &path ) } } -static URLNormalizer *create( ) -{ - return new SimpleURLNormalizer( ); -} - -static void destroy( URLNormalizer *obj ) -{ - delete obj; -} - -ModuleRegistry registry( "simple", &create, &destroy ); +REGISTER_MODULE( "simple", URLNormalizer, SimpleURLNormalizer ) -- cgit v1.2.3-54-g00ecf