diff --git a/src/libprojectM/Algorithms.hpp b/src/libprojectM/Algorithms.hpp deleted file mode 100644 index 32edd9317..000000000 --- a/src/libprojectM/Algorithms.hpp +++ /dev/null @@ -1,68 +0,0 @@ -#ifndef PROJECTM_ALGORITHMS_HPP -#define PROJECTM_ALGORITHMS_HPP -#include -/// A collection of algorithms generically written over map style containers -namespace Algorithms -{ - - template - void traverse(Container & container) - { - - TraverseFunctor functor; - - for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) - { - assert(pos->second); - functor(pos->second); - } - - } - - - template - void traverseVector(Container & container) - { - - TraverseFunctor functor; - - for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) - { - assert(*pos); - functor(*pos); - } - - } - - template - void traverse(Container & container, TraverseFunctor & functor) - { - - for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) - { - assert(pos->second); - functor(pos->second); - } - - } - - namespace TraverseFunctors - { - template - class DeleteFunctor - { - - public: - - void operator() (Data * data) - { - assert(data); - delete(data); - } - - }; - } - - -} -#endif diff --git a/src/libprojectM/BuiltinFuncs.cpp b/src/libprojectM/BuiltinFuncs.cpp index b3a9ba10b..c533a7357 100644 --- a/src/libprojectM/BuiltinFuncs.cpp +++ b/src/libprojectM/BuiltinFuncs.cpp @@ -16,10 +16,8 @@ /* Loads a builtin function */ #include "BuiltinFuncs.hpp" #include -#include "Algorithms.hpp" #include #include "fatal.h" -using namespace Algorithms; std::map BuiltinFuncs::builtin_func_tree; @@ -133,7 +131,7 @@ int BuiltinFuncs::init_builtin_func_db() { Generally, do this on projectm exit */ int BuiltinFuncs::destroy_builtin_func_db() { -traverse >(builtin_func_tree); +traverse >(builtin_func_tree); builtin_func_tree.clear(); diff --git a/src/libprojectM/BuiltinParams.cpp b/src/libprojectM/BuiltinParams.cpp index 1dc80fe49..b4b5a6e00 100644 --- a/src/libprojectM/BuiltinParams.cpp +++ b/src/libprojectM/BuiltinParams.cpp @@ -2,13 +2,11 @@ #include "fatal.h" #include "BuiltinParams.hpp" #include -#include "Algorithms.hpp" #include #include #include "InitCondUtils.hpp" #include - -using namespace Algorithms; +#include "Common.hpp" BuiltinParams::BuiltinParams() {} @@ -106,7 +104,7 @@ std::transform(lowerName.begin(), lowerName.end(), lowerName.begin(), tolower); int BuiltinParams::destroy_builtin_param_db() { - Algorithms::traverse >(builtin_param_tree); + traverse >(builtin_param_tree); return PROJECTM_SUCCESS; } diff --git a/src/libprojectM/BuiltinParams.hpp b/src/libprojectM/BuiltinParams.hpp index 2bef58c27..5d45e7922 100644 --- a/src/libprojectM/BuiltinParams.hpp +++ b/src/libprojectM/BuiltinParams.hpp @@ -31,7 +31,6 @@ #include "PresetFrameIO.hpp" #include "Param.hpp" #include -#include "Algorithms.hpp" class BuiltinParams { @@ -69,8 +68,8 @@ public: int insert_builtin_param( Param *param ); template - void traverse(Fun & fun) { - Algorithms::traverse(builtin_param_tree, fun); + void apply(Fun & fun) { + traverse(builtin_param_tree, fun); } diff --git a/src/libprojectM/Common.hpp b/src/libprojectM/Common.hpp index 37ca0b6d7..ebfe5427b 100755 --- a/src/libprojectM/Common.hpp +++ b/src/libprojectM/Common.hpp @@ -28,7 +28,7 @@ #define COMMON_H #include - +#include #ifdef _MSC_VER #define strcasecmp(s, t) _strcmpi(s, t) #endif @@ -140,6 +140,64 @@ const std::string PROJECTM_FILE_EXTENSION("prjm"); const std::string MILKDROP_FILE_EXTENSION("milk"); const std::string PROJECTM_MODULE_EXTENSION("so"); + template + void traverse(Container & container) + { + + TraverseFunctor functor; + + for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) + { + assert(pos->second); + functor(pos->second); + } + + } + + + template + void traverseVector(Container & container) + { + + TraverseFunctor functor; + + for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) + { + assert(*pos); + functor(*pos); + } + + } + + template + void traverse(Container & container, TraverseFunctor & functor) + { + + for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos) + { + assert(pos->second); + functor(pos->second); + } + + } + + namespace TraverseFunctors + { + template + class Delete + { + + public: + + void operator() (Data * data) + { + assert(data); + delete(data); + } + + }; + } + inline std::string parseExtension(const std::string & filename) { diff --git a/src/libprojectM/CustomShape.cpp b/src/libprojectM/CustomShape.cpp index 482d5b0d1..4d2c28306 100755 --- a/src/libprojectM/CustomShape.cpp +++ b/src/libprojectM/CustomShape.cpp @@ -34,9 +34,7 @@ #include "ParamUtils.hpp" #include "InitCondUtils.hpp" #include "wipemalloc.h" -#include "Algorithms.hpp" -using namespace Algorithms; CustomShape::CustomShape() : Shape() @@ -233,11 +231,11 @@ CustomShape::CustomShape ( int id ) : Shape() CustomShape::~CustomShape() { - traverseVector > ( per_frame_eqn_tree ); - traverse > ( init_cond_tree ); - traverse > ( param_tree ); - traverse > ( per_frame_init_eqn_tree ); - traverse > ( text_properties_tree ); + traverseVector > ( per_frame_eqn_tree ); + traverse > ( init_cond_tree ); + traverse > ( param_tree ); + traverse > ( per_frame_init_eqn_tree ); + traverse > ( text_properties_tree ); } diff --git a/src/libprojectM/CustomWave.cpp b/src/libprojectM/CustomWave.cpp index 24d1092b8..935cea745 100755 --- a/src/libprojectM/CustomWave.cpp +++ b/src/libprojectM/CustomWave.cpp @@ -534,6 +534,6 @@ void CustomWave::loadUnspecInitConds() { InitCondUtils::LoadUnspecInitCond fun(this->init_cond_tree, this->per_frame_init_eqn_tree); - Algorithms::traverse(param_tree, fun); + traverse(param_tree, fun); } diff --git a/src/libprojectM/MilkdropPreset.cpp b/src/libprojectM/MilkdropPreset.cpp index e50866056..6e70e4834 100755 --- a/src/libprojectM/MilkdropPreset.cpp +++ b/src/libprojectM/MilkdropPreset.cpp @@ -71,15 +71,15 @@ MilkdropPreset::MilkdropPreset(const std::string & absoluteFilePath, const std:: MilkdropPreset::~MilkdropPreset() { - Algorithms::traverse >(init_cond_tree); + traverse >(init_cond_tree); - Algorithms::traverse >(per_frame_init_eqn_tree); + traverse >(per_frame_init_eqn_tree); - Algorithms::traverse >(per_pixel_eqn_tree); + traverse >(per_pixel_eqn_tree); - Algorithms::traverseVector >(per_frame_eqn_tree); + traverseVector >(per_frame_eqn_tree); - Algorithms::traverse >(user_param_tree); + traverse >(user_param_tree); for (PresetOutputs::cwave_container::iterator pos = customWaves.begin(); pos != customWaves.end(); ++pos) { @@ -324,8 +324,8 @@ void MilkdropPreset::loadBuiltinParamsUnspecInitConds() { InitCondUtils::LoadUnspecInitCond loadUnspecInitCond(this->init_cond_tree, this->per_frame_init_eqn_tree); - this->builtinParams.traverse(loadUnspecInitCond); - Algorithms::traverse(user_param_tree, loadUnspecInitCond); + this->builtinParams.apply(loadUnspecInitCond); + traverse(user_param_tree, loadUnspecInitCond); }