00001
00002
00003 #ifndef ASGTOOLS_TOOLSTORE_H
00004 #define ASGTOOLS_TOOLSTORE_H
00005
00006
00007 #include <string>
00008
00009
00010 #include "AsgTools/IAsgTool.h"
00011 #include "AsgTools/StatusCode.h"
00012
00013 namespace asg {
00014
00030 class ToolStore {
00031
00032 public:
00035 static StatusCode put( IAsgTool* ptool );
00036
00039 static StatusCode put( IAsgTool* ptool, const std::string& name );
00040
00042 static IAsgTool* get( const std::string& name, bool silent = false );
00043
00045 template< typename T >
00046 static T* get( const std::string& name ) {
00047
00048 return dynamic_cast< T* >( get( name ) );
00049 }
00050
00052 template< typename T >
00053 static bool contains( const std::string& name ) {
00054
00055 return ( dynamic_cast< T* >( get( name, true ) ) != 0 );
00056 }
00057
00059 static StatusCode remove( const IAsgTool* tool );
00061 static StatusCode remove( const std::string& name );
00062
00063 };
00064
00065 }
00066
00067 #endif // ASGTOOLS_TOOLSTORE_H