diff --git a/Code/Mantid/API/inc/MantidAPI/AlgorithmManager.h b/Code/Mantid/API/inc/MantidAPI/AlgorithmManager.h index 33b60325a95d3f72245ac7fb7129c7d465aa9be2..d0b239b8c332a0c180808d8f21fbcd4b1efb8827 100644 --- a/Code/Mantid/API/inc/MantidAPI/AlgorithmManager.h +++ b/Code/Mantid/API/inc/MantidAPI/AlgorithmManager.h @@ -1,15 +1,12 @@ #ifndef MANTID_KERNEL_ALGORITHMMANAGER_H_ #define MANTID_KERNEL_ALGORITHMMANAGER_H_ - - - - //---------------------------------------------------------------------- // Includes //---------------------------------------------------------------------- #include "boost/shared_ptr.hpp" #include <vector> +#include <string> #include "MantidAPI/DllExport.h" #include "MantidKernel/Logger.h" #include "MantidKernel/SingletonHolder.h" @@ -70,6 +67,8 @@ namespace Mantid * @return The number of registered algorithms */ int size() const { return regAlg.size(); } + + const std::vector<std::string> getNames() const; private: friend struct Mantid::Kernel::CreateUsingNew<AlgorithmManagerImpl>; diff --git a/Code/Mantid/API/src/AlgorithmManager.cpp b/Code/Mantid/API/src/AlgorithmManager.cpp index 8f99d12e568afad5fc9b1b57e942f2bd1e5e5dcb..8d862e095f23b128e535909e92b1c3a671c3fdf8 100644 --- a/Code/Mantid/API/src/AlgorithmManager.cpp +++ b/Code/Mantid/API/src/AlgorithmManager.cpp @@ -40,6 +40,22 @@ namespace Mantid { return AlgorithmFactory::Instance().create(algName,version); // Throws on fail: } + + /** Gets the names of all the currently available algorithms + * + * \return A pointer to the created algorithm + */ + const std::vector<std::string> AlgorithmManagerImpl::getNames() const + { + std::vector<std::string> names; + + for (int i=0; i < regAlg.size(); ++i) + { + names.push_back(regAlg[i]->name()); + } + + return names; + } /** Creates an instance of an algorithm * diff --git a/Code/Mantid/API/test/AlgorithmManagerTest.h b/Code/Mantid/API/test/AlgorithmManagerTest.h index 5a8cedeb13adfb3183e53fc82097a8f1f5151c3a..a56631c5b810b6a6fcbe2db28f3c5bb701c78f07 100644 --- a/Code/Mantid/API/test/AlgorithmManagerTest.h +++ b/Code/Mantid/API/test/AlgorithmManagerTest.h @@ -5,6 +5,7 @@ #include "MantidAPI/Algorithm.h" #include <stdexcept> +#include <vector> using namespace Mantid::API; @@ -91,6 +92,15 @@ public: TS_ASSERT_THROWS(AlgorithmManager::Instance().create("AlgTest",3), std::runtime_error ) TS_ASSERT_THROWS(AlgorithmManager::Instance().create("aaaaaa"), std::runtime_error ) } + + void testGetNames() + { + AlgorithmManager::Instance().clear(); + TS_ASSERT_THROWS_NOTHING( AlgorithmManager::Instance().create("AlgTest") ); + TS_ASSERT_THROWS_NOTHING(AlgorithmManager::Instance().create("AlgTestSecond") ); + std::vector<std::string> names = AlgorithmManager::Instance().getNames(); + TS_ASSERT_EQUALS(names.size(), 2) + } void testClear() { diff --git a/Code/Mantid/Kernel/test/LibraryManagerTest.h b/Code/Mantid/Kernel/test/LibraryManagerTest.h index c29b4fcf081799c2e6528e2fcd8d5dcaa969584a..4e6081deb24d913c9c260c24dd200eec6d5ab157 100644 --- a/Code/Mantid/Kernel/test/LibraryManagerTest.h +++ b/Code/Mantid/Kernel/test/LibraryManagerTest.h @@ -2,9 +2,12 @@ #define MANTID_LIBRARYMANAGERTEST_H_ #include <iostream> +#include <string> +#include <vector> #include <cxxtest/TestSuite.h> #include "MantidAPI/FrameworkManager.h" +#include "MantidAPI/AlgorithmManager.h" #include "MantidKernel/LibraryManager.h" #include "MantidKernel/ConfigService.h" diff --git a/Code/Mantid/UserAlgorithms/.sconsign.dblite b/Code/Mantid/UserAlgorithms/.sconsign.dblite index 250eebe26be4f2bcbb2bdf5fc587734fd2ad6ae2..d7231aa6506013b1535d060c2ef7ad744c2c74ae 100644 Binary files a/Code/Mantid/UserAlgorithms/.sconsign.dblite and b/Code/Mantid/UserAlgorithms/.sconsign.dblite differ diff --git a/Code/Mantid/UserAlgorithms/HelloWorldAlgorithm.cpp b/Code/Mantid/UserAlgorithms/HelloWorldAlgorithm.cpp index 0e24535f56fc6a012026f4c0767ed04677ad2e6f..df7f0834f1772ac48267a7413060bf0b744ec841 100644 --- a/Code/Mantid/UserAlgorithms/HelloWorldAlgorithm.cpp +++ b/Code/Mantid/UserAlgorithms/HelloWorldAlgorithm.cpp @@ -5,7 +5,7 @@ namespace Mantid namespace Algorithms { - +DECLARE_ALGORITHM(HelloWorldAlgorithm); } }