diff options
author | Andreas Baumann <abaumann@yahoo.com> | 2012-08-07 08:28:12 +0200 |
---|---|---|
committer | Andreas Baumann <abaumann@yahoo.com> | 2012-08-07 08:28:12 +0200 |
commit | 6c8d62160c3a5d744f797f06d8c505c5bb8f2622 (patch) | |
tree | 74c56f8c33f76837fd83452e5c4c60cf8ec0c3e8 | |
parent | 2db310d15eb46247e7221107dc2b82826a296d6b (diff) | |
download | crawler-6c8d62160c3a5d744f797f06d8c505c5bb8f2622.tar.gz crawler-6c8d62160c3a5d744f797f06d8c505c5bb8f2622.tar.bz2 |
reduced some code duplication when registering modules
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | src/ModuleRegistry.hpp | 13 | ||||
-rw-r--r-- | src/crawlingwolf.cpp | 10 | ||||
-rw-r--r-- | src/modules/urlnormalizer/googleurl/GoogleURLNormalizer.cpp | 12 | ||||
-rw-r--r-- | src/modules/urlnormalizer/simpleurl/SimpleURLNormalizer.cpp | 12 |
5 files changed, 23 insertions, 28 deletions
@@ -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<baseClass> 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<string> modules; + modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" ); + modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" ); + ModuleLoader<URLNormalizer> urlNormalizers( modules ); Frontier *frontier = new MemoryFrontier( ); Fetcher *fetcher = new LibFetchFetcher( ); @@ -34,11 +39,6 @@ int main( void ) ChainURLFilter filters( &protocolFilter, &hostFilter ); - vector<string> modules; - modules.push_back( "./modules/urlnormalizer/simpleurl/mod_urlnormalizer_simple.so" ); - modules.push_back( "./modules/urlnormalizer/googleurl/mod_urlnormalizer_googleurl.so" ); - ModuleLoader<URLNormalizer> 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<URLNormalizer> 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<URLNormalizer> registry( "simple", &create, &destroy ); +REGISTER_MODULE( "simple", URLNormalizer, SimpleURLNormalizer ) |