From 965f6742847ba008cb2d2a2da2a1461bb895a0bb Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Tue, 9 Oct 2007 01:36:02 +0000 Subject: [PATCH] changed most unneccessary maps to vectors git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@552 6778bc44-b910-0410-a7a0-be141de4315d --- src/projectM-engine/Algorithms.hpp | 14 ++++++++++++++ src/projectM-engine/CustomShape.cpp | 2 +- src/projectM-engine/CustomShape.hpp | 3 ++- src/projectM-engine/CustomWave.cpp | 4 ++-- src/projectM-engine/CustomWave.hpp | 2 +- src/projectM-engine/Parser.cpp | 10 +++++----- src/projectM-engine/Preset.cpp | 21 +++++++++------------ src/projectM-engine/Preset.hpp | 2 +- src/projectM-engine/Renderer.hpp | 3 ++- src/projectM-engine/projectM.cpp | 4 ++-- 10 files changed, 39 insertions(+), 26 deletions(-) diff --git a/src/projectM-engine/Algorithms.hpp b/src/projectM-engine/Algorithms.hpp index 0311bf13e..32edd9317 100644 --- a/src/projectM-engine/Algorithms.hpp +++ b/src/projectM-engine/Algorithms.hpp @@ -20,6 +20,20 @@ namespace Algorithms } + 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) { diff --git a/src/projectM-engine/CustomShape.cpp b/src/projectM-engine/CustomShape.cpp index eea34928d..a0aa366c3 100755 --- a/src/projectM-engine/CustomShape.cpp +++ b/src/projectM-engine/CustomShape.cpp @@ -264,7 +264,7 @@ CustomShape::CustomShape ( int id ) : imageUrl("") CustomShape::~CustomShape() { - traverse > ( per_frame_eqn_tree ); + traverseVector > ( per_frame_eqn_tree ); traverse > ( init_cond_tree ); traverse > ( param_tree ); traverse > ( per_frame_init_eqn_tree ); diff --git a/src/projectM-engine/CustomShape.hpp b/src/projectM-engine/CustomShape.hpp index faad4238f..cacb7218e 100755 --- a/src/projectM-engine/CustomShape.hpp +++ b/src/projectM-engine/CustomShape.hpp @@ -34,6 +34,7 @@ #include "Param.hpp" #include "PerFrameEqn.hpp" #include "InitCond.hpp" +#include class Preset; @@ -109,7 +110,7 @@ public: /* Data structure to hold per frame / per frame init equations */ std::map init_cond_tree; - std::map per_frame_eqn_tree; + std::vector per_frame_eqn_tree; std::map per_frame_init_eqn_tree; std::map text_properties_tree; diff --git a/src/projectM-engine/CustomWave.cpp b/src/projectM-engine/CustomWave.cpp index 7078c8d92..2ebbedee2 100755 --- a/src/projectM-engine/CustomWave.cpp +++ b/src/projectM-engine/CustomWave.cpp @@ -480,8 +480,8 @@ CustomWave::~CustomWave() for (std::vector::iterator pos = per_point_eqn_tree.begin(); pos != per_point_eqn_tree.end(); ++pos) delete(*pos); - for (std::map::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) - delete(pos->second); + for (std::vector::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) + delete(*pos); for (std::map::iterator pos = init_cond_tree.begin(); pos != init_cond_tree.end(); ++pos) delete(pos->second); diff --git a/src/projectM-engine/CustomWave.hpp b/src/projectM-engine/CustomWave.hpp index c302b6ed8..7226f8a7a 100755 --- a/src/projectM-engine/CustomWave.hpp +++ b/src/projectM-engine/CustomWave.hpp @@ -117,7 +117,7 @@ public: /* Data structures to hold per frame and per point equations */ std::map init_cond_tree; - std::map per_frame_eqn_tree; + std::vector per_frame_eqn_tree; std::vector per_point_eqn_tree; std::map per_frame_init_eqn_tree; diff --git a/src/projectM-engine/Parser.cpp b/src/projectM-engine/Parser.cpp index 49a2f9f97..41450ac01 100755 --- a/src/projectM-engine/Parser.cpp +++ b/src/projectM-engine/Parser.cpp @@ -522,7 +522,7 @@ int Parser::parse_line(std::istream & fs, Preset * preset) } /* Insert the equation in the per frame equation tree */ - preset->per_frame_eqn_tree.insert(std::make_pair(per_frame_eqn_count, per_frame_eqn)); + preset->per_frame_eqn_tree.push_back(per_frame_eqn); if (update_string_buffer(preset->per_frame_eqn_string_buffer, &preset->per_frame_eqn_string_index) < 0) @@ -625,7 +625,7 @@ int Parser::parse_line(std::istream & fs, Preset * preset) } /* Insert the equation in the per frame equation tree */ - preset->per_frame_eqn_tree.insert(std::make_pair(per_frame_eqn_count, per_frame_eqn)); + preset->per_frame_eqn_tree.push_back(per_frame_eqn); if (update_string_buffer(preset->per_frame_eqn_string_buffer, &preset->per_frame_eqn_string_index) < 0) @@ -2195,7 +2195,7 @@ int Parser::parse_wave_helper(std::istream & fs, Preset * preset, int id, char return PROJECTM_FAILURE; } - custom_wave->per_frame_eqn_tree.insert(std::make_pair(per_frame_eqn->index, per_frame_eqn)); + custom_wave->per_frame_eqn_tree.push_back(per_frame_eqn); if (PARSE_DEBUG) printf("parse_wave (per_frame): equation %d associated with custom wave %d [success]\n", per_frame_eqn->index, custom_wave->id); @@ -2480,7 +2480,7 @@ int Parser::parse_shape_per_frame_eqn(std::istream & fs, CustomShape * custom_sh return PROJECTM_FAILURE; } - custom_shape->per_frame_eqn_tree.insert(std::make_pair(per_frame_eqn->index, per_frame_eqn)); + custom_shape->per_frame_eqn_tree.push_back(per_frame_eqn); /* Need to add stuff to string buffer so the editor can read the equations. Why not make a nice little helper function for this? - here it is: */ @@ -2546,7 +2546,7 @@ int Parser::parse_wave_per_frame_eqn(std::istream & fs, CustomWave * custom_wav return PROJECTM_FAILURE; } - custom_wave->per_frame_eqn_tree.insert(std::make_pair(per_frame_eqn->index, per_frame_eqn)); + custom_wave->per_frame_eqn_tree.push_back(per_frame_eqn); if (PARSE_DEBUG) printf("parse_wave (per_frame): equation %d associated with custom wave %d [success]\n", per_frame_eqn->index, custom_wave->id); diff --git a/src/projectM-engine/Preset.cpp b/src/projectM-engine/Preset.cpp index 4be23f0b9..6bf5abf81 100755 --- a/src/projectM-engine/Preset.cpp +++ b/src/projectM-engine/Preset.cpp @@ -77,7 +77,7 @@ Preset::~Preset() Algorithms::traverse >(per_pixel_eqn_tree); - Algorithms::traverse >(per_frame_eqn_tree); + Algorithms::traverseVector >(per_frame_eqn_tree); Algorithms::traverse >(user_param_tree); @@ -178,11 +178,10 @@ void Preset::evalCustomWavePerFrameEquations() _pos->second->evaluate(); } - std::map & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree; - for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) + std::vector & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree; + for (std::vector::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) { - assert(_pos->second); - _pos->second->evaluate(); + (*_pos)->evaluate(); } } @@ -201,11 +200,10 @@ void Preset::evalCustomShapePerFrameEquations() _pos->second->evaluate(); } - std::map & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree; - for (std::map::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) + std::vector & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree; + for (std::vector::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos) { - assert(_pos->second); - _pos->second->evaluate(); + (*_pos)->evaluate(); } } @@ -231,10 +229,9 @@ void Preset::evalPerFrameEquations() pos->second->evaluate(); } - for (std::map::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) + for (std::vector::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos) { - assert(pos->second); - pos->second->evaluate(); + (*pos)->evaluate(); } } diff --git a/src/projectM-engine/Preset.hpp b/src/projectM-engine/Preset.hpp index c3cbb3459..3dbbe5558 100644 --- a/src/projectM-engine/Preset.hpp +++ b/src/projectM-engine/Preset.hpp @@ -140,7 +140,7 @@ public: /// @bug encapsulate /* Data structures that contain equation and initial condition information */ - std::map per_frame_eqn_tree; /* per frame equations */ + std::vector per_frame_eqn_tree; /* per frame equations */ std::map per_pixel_eqn_tree; /* per pixel equation tree */ std::map per_frame_init_eqn_tree; /* per frame initial equations */ std::map init_cond_tree; /* initial conditions */ diff --git a/src/projectM-engine/Renderer.hpp b/src/projectM-engine/Renderer.hpp index 9954250d1..eff979b58 100644 --- a/src/projectM-engine/Renderer.hpp +++ b/src/projectM-engine/Renderer.hpp @@ -83,6 +83,8 @@ private: float **origy2; int gx; int gy; + + std::string m_presetName; int vw; int vh; @@ -98,7 +100,6 @@ private: std::string title_fontURL; std::string menu_fontURL; - std::string m_presetName; void draw_waveform(PresetOutputs * presetOutputs); void Interpolation(PresetOutputs *presetOutputs, PresetInputs *presetInputs); diff --git a/src/projectM-engine/projectM.cpp b/src/projectM-engine/projectM.cpp index 257d08921..00249e465 100755 --- a/src/projectM-engine/projectM.cpp +++ b/src/projectM-engine/projectM.cpp @@ -69,7 +69,7 @@ double smoothDuration = 5; //int smoothFrame = 0; int oldFrame = 1; -DLLEXPORT projectM::projectM(int gx, int gy, int fps, int texsize, int width, int height, std::string preset_url,std::string title_fonturl, std::string title_menuurl) :renderer(0), presetURL(preset_url), title_fontURL(title_fonturl), menu_fontURL(menu_fontURL), smoothFrame(0), beatDetect ( 0 ) { +DLLEXPORT projectM::projectM(int gx, int gy, int fps, int texsize, int width, int height, std::string preset_url,std::string title_fonturl, std::string title_menuurl) :beatDetect ( 0 ), renderer(0), presetURL(preset_url), title_fontURL(title_fonturl), menu_fontURL(menu_fontURL), smoothFrame(0) { presetURL = preset_url; projectM_reset(); projectM_init(gx, gy, fps, texsize, width, height); @@ -94,7 +94,7 @@ DLLEXPORT unsigned projectM::initRenderToTexture() } DLLEXPORT projectM::projectM(std::string config_file) : - renderer(0), smoothFrame(0), beatDetect ( 0 ) { + beatDetect ( 0 ), renderer(0), smoothFrame(0) { projectM_reset(); readConfig(config_file);