changed most unneccessary maps to vectors

git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@552 6778bc44-b910-0410-a7a0-be141de4315d
This commit is contained in:
w1z7ard
2007-10-09 01:36:02 +00:00
parent 3dc6d8df21
commit 965f674284
10 changed files with 39 additions and 26 deletions

View File

@ -20,6 +20,20 @@ namespace Algorithms
}
template <class TraverseFunctor, class Container>
void traverseVector(Container & container)
{
TraverseFunctor functor;
for (typename Container::iterator pos = container.begin(); pos != container.end(); ++pos)
{
assert(*pos);
functor(*pos);
}
}
template <class TraverseFunctor, class Container>
void traverse(Container & container, TraverseFunctor & functor)
{

View File

@ -264,7 +264,7 @@ CustomShape::CustomShape ( int id ) : imageUrl("")
CustomShape::~CustomShape()
{
traverse<TraverseFunctors::DeleteFunctor<PerFrameEqn> > ( per_frame_eqn_tree );
traverseVector<TraverseFunctors::DeleteFunctor<PerFrameEqn> > ( per_frame_eqn_tree );
traverse<TraverseFunctors::DeleteFunctor<InitCond> > ( init_cond_tree );
traverse<TraverseFunctors::DeleteFunctor<Param> > ( param_tree );
traverse<TraverseFunctors::DeleteFunctor<InitCond> > ( per_frame_init_eqn_tree );

View File

@ -34,6 +34,7 @@
#include "Param.hpp"
#include "PerFrameEqn.hpp"
#include "InitCond.hpp"
#include <vector>
class Preset;
@ -109,7 +110,7 @@ public:
/* Data structure to hold per frame / per frame init equations */
std::map<std::string,InitCond*> init_cond_tree;
std::map<int, PerFrameEqn*> per_frame_eqn_tree;
std::vector<PerFrameEqn*> per_frame_eqn_tree;
std::map<std::string,InitCond*> per_frame_init_eqn_tree;
std::map<std::string, Param*> text_properties_tree;

View File

@ -480,8 +480,8 @@ CustomWave::~CustomWave()
for (std::vector<PerPointEqn*>::iterator pos = per_point_eqn_tree.begin(); pos != per_point_eqn_tree.end(); ++pos)
delete(*pos);
for (std::map<int, PerFrameEqn*>::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos)
delete(pos->second);
for (std::vector<PerFrameEqn*>::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos)
delete(*pos);
for (std::map<std::string, InitCond*>::iterator pos = init_cond_tree.begin(); pos != init_cond_tree.end(); ++pos)
delete(pos->second);

View File

@ -117,7 +117,7 @@ public:
/* Data structures to hold per frame and per point equations */
std::map<std::string,InitCond*> init_cond_tree;
std::map<int, PerFrameEqn*> per_frame_eqn_tree;
std::vector<PerFrameEqn*> per_frame_eqn_tree;
std::vector<PerPointEqn*> per_point_eqn_tree;
std::map<std::string,InitCond*> per_frame_init_eqn_tree;

View File

@ -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);

View File

@ -77,7 +77,7 @@ Preset::~Preset()
Algorithms::traverse<Algorithms::TraverseFunctors::DeleteFunctor<PerPixelEqn> >(per_pixel_eqn_tree);
Algorithms::traverse<Algorithms::TraverseFunctors::DeleteFunctor<PerFrameEqn> >(per_frame_eqn_tree);
Algorithms::traverseVector<Algorithms::TraverseFunctors::DeleteFunctor<PerFrameEqn> >(per_frame_eqn_tree);
Algorithms::traverse<Algorithms::TraverseFunctors::DeleteFunctor<Param> >(user_param_tree);
@ -178,11 +178,10 @@ void Preset::evalCustomWavePerFrameEquations()
_pos->second->evaluate();
}
std::map<int, PerFrameEqn*> & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree;
for (std::map<int, PerFrameEqn*>::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos)
std::vector<PerFrameEqn*> & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree;
for (std::vector<PerFrameEqn*>::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<int, PerFrameEqn*> & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree;
for (std::map<int, PerFrameEqn*>::iterator _pos = per_frame_eqn_tree.begin(); _pos != per_frame_eqn_tree.end(); ++_pos)
std::vector<PerFrameEqn*> & per_frame_eqn_tree = (*pos)->per_frame_eqn_tree;
for (std::vector<PerFrameEqn*>::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<int, PerFrameEqn*>::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos)
for (std::vector<PerFrameEqn*>::iterator pos = per_frame_eqn_tree.begin(); pos != per_frame_eqn_tree.end(); ++pos)
{
assert(pos->second);
pos->second->evaluate();
(*pos)->evaluate();
}
}

View File

@ -140,7 +140,7 @@ public:
/// @bug encapsulate
/* Data structures that contain equation and initial condition information */
std::map<int, PerFrameEqn*> per_frame_eqn_tree; /* per frame equations */
std::vector<PerFrameEqn*> per_frame_eqn_tree; /* per frame equations */
std::map<int, PerPixelEqn*> per_pixel_eqn_tree; /* per pixel equation tree */
std::map<std::string,InitCond*> per_frame_init_eqn_tree; /* per frame initial equations */
std::map<std::string,InitCond*> init_cond_tree; /* initial conditions */

View File

@ -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);

View File

@ -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);