diff options
-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 ) |