[cppcheck] Part 1: Performance
authorTobias Markus <tobbi@mozilla-uk.org>
Fri, 21 Nov 2014 00:22:54 +0000 (01:22 +0100)
committerTobias Markus <tobbi@mozilla-uk.org>
Fri, 21 Nov 2014 00:22:54 +0000 (01:22 +0100)
30 files changed:
src/audio/sound_manager.cpp
src/badguy/ghosttree.cpp
src/badguy/root.cpp
src/badguy/totem.cpp
src/object/ambient_sound.cpp
src/object/cloud_particle_system.cpp
src/object/coin_rain.cpp
src/object/falling_coin.cpp
src/object/infoblock.cpp
src/object/ispy.cpp
src/object/lantern.cpp
src/object/moving_sprite.cpp
src/object/particles.cpp
src/object/particlesystem_interactive.cpp
src/object/path.cpp
src/object/rainsplash.cpp
src/sprite/sprite_data.cpp
src/sprite/sprite_data.hpp
src/supertux/console.cpp
src/supertux/flip_level_transformer.cpp
src/supertux/info_box.cpp
src/supertux/info_box_line.cpp
src/supertux/levelintro.cpp
src/supertux/menu/language_menu.cpp
src/supertux/textscroller.cpp
src/supertux/tile.cpp
src/supertux/tile.hpp
src/trigger/trigger_base.cpp
src/worldmap/sprite_change.cpp
src/worldmap/worldmap.cpp

index e9ef764..d00c93c 100644 (file)
@@ -225,7 +225,7 @@ SoundManager::remove_from_update(StreamSoundSource* sss)
       if( *i == sss ){
         i = update_list.erase(i);
       } else {
-        i++;
+        ++i;
       }
     }
   }
@@ -356,7 +356,7 @@ SoundManager::update()
   StreamSoundSources::iterator s = update_list.begin();
   while( s != update_list.end() ){
     (*s)->update();
-    s++;
+    ++s;
   }
 }
 
index 088d73b..b7b4bd6 100644 (file)
@@ -44,7 +44,7 @@ GhostTree::GhostTree(const Reader& lisp) :
   willo_radius(200),
   willo_speed(1.8f),
   willo_color(0),
-  glow_sprite(),
+  glow_sprite(SpriteManager::current()->create("images/creatures/ghosttree/ghosttree-glow.sprite")),
   colorchange_timer(),
   suck_timer(),
   root_timer(),
@@ -53,7 +53,6 @@ GhostTree::GhostTree(const Reader& lisp) :
   suck_lantern(0),
   willowisps()
 {
-  glow_sprite = SpriteManager::current()->create("images/creatures/ghosttree/ghosttree-glow.sprite");
   set_colgroup_active(COLGROUP_TOUCHABLE);
   SoundManager::current()->preload("sounds/tree_howling.ogg");
   SoundManager::current()->preload("sounds/tree_suck.ogg");
index 8e5423d..33ac0af 100644 (file)
@@ -25,11 +25,10 @@ static const float HATCH_TIME = 0.75;
 Root::Root(const Vector& pos) :
   BadGuy(pos, "images/creatures/ghosttree/root.sprite", LAYER_TILES-1),
   mystate(STATE_APPEARING),
-  base_sprite(),
+  base_sprite(SpriteManager::current()->create("images/creatures/ghosttree/root-base.sprite")),
   offset_y(0),
   hatch_timer()
 {
-  base_sprite = SpriteManager::current()->create("images/creatures/ghosttree/root-base.sprite");
   base_sprite->set_action("appearing", 1);
   base_sprite->set_animation_loops(1); // TODO: necessary because set_action ignores loops for default action
   physic.enable_gravity(false);
index 5941a1b..42afee2 100644 (file)
@@ -86,7 +86,7 @@ Totem::active_update(float elapsed_time)
     Sector* s = Sector::current();
     if (s) {
       // jump a bit if we find a suitable totem
-      for (std::vector<MovingObject*>::iterator i = s->moving_objects.begin(); i != s->moving_objects.end(); i++) {
+      for (std::vector<MovingObject*>::iterator i = s->moving_objects.begin(); i != s->moving_objects.end(); ++i) {
         Totem* t = dynamic_cast<Totem*>(*i);
         if (!t) continue;
 
index 14539e6..0965fc3 100644 (file)
 #include "util/reader.hpp"
 
 AmbientSound::AmbientSound(const Reader& lisp) :
-  name(),
+  name(""),
   position(),
   dimension(),
-  sample(),
+  sample(""),
   sound_source(),
   latency(),
   distance_factor(),
@@ -41,7 +41,6 @@ AmbientSound::AmbientSound(const Reader& lisp) :
   currentvolume(),
   volume_ptr()
 {
-  name="";
   position.x = 0;
   position.y = 0;
 
@@ -51,7 +50,6 @@ AmbientSound::AmbientSound(const Reader& lisp) :
   distance_factor = 0;
   distance_bias = 0;
   maximumvolume = 1;
-  sample = "";
   currentvolume = 0;
 
   if (!(lisp.get("x", position.x)&&lisp.get("y", position.y))) {
@@ -97,7 +95,7 @@ AmbientSound::AmbientSound(Vector pos, float factor, float bias, float vol, std:
   name(),
   position(),
   dimension(),
-  sample(),
+  sample(file),
   sound_source(),
   latency(),
   distance_factor(),
@@ -117,7 +115,6 @@ AmbientSound::AmbientSound(Vector pos, float factor, float bias, float vol, std:
   distance_factor=factor*factor;
   distance_bias=bias*bias;
   maximumvolume=vol;
-  sample=file;
 
   // set default silence_distance
 
index 2cbbca2..396d295 100644 (file)
 
 CloudParticleSystem::CloudParticleSystem() :
   ParticleSystem(128),
-  cloudimage()
+  cloudimage(Surface::create("images/objects/particles/cloud.png"))
 {
-  cloudimage = Surface::create("images/objects/particles/cloud.png");
-
   virtual_width = 2000.0;
 
   // create some random clouds
index 7e6b4c3..66a67af 100644 (file)
 static const float DROP_TIME = .1f; // time duration between "drops" of coin rain
 
 CoinRain::CoinRain(const Vector& pos, bool emerge) :
-  sprite(),
+  sprite(SpriteManager::current()->create("images/objects/coin/coin.sprite")),
   position(pos),
   emerge_distance(0),
   timer(),
   counter(0),
   drop(0)
 {
-  sprite = SpriteManager::current()->create("images/objects/coin/coin.sprite");
-
   if(emerge) {
     emerge_distance = sprite->get_height();
   }
index ffa221c..975de6e 100644 (file)
 
 FallingCoin::FallingCoin(const Vector& start_position, const int vel_x) :
   physic(),
-  pos(),
-  sprite()
+  pos(start_position),
+  sprite(SpriteManager::current()->create("images/objects/coin/coin.sprite"))
 {
-  pos = start_position;
-  sprite = SpriteManager::current()->create("images/objects/coin/coin.sprite");
   physic.set_velocity_y(-800);
   physic.set_velocity_x(vel_x);
 }
index c6e8345..d81fc93 100644 (file)
@@ -53,7 +53,7 @@ InfoBlock::InfoBlock(const Reader& lisp) :
 
 InfoBlock::~InfoBlock()
 {
-  for(std::vector<InfoBoxLine*>::iterator i = lines.begin(); i != lines.end(); i++) {
+  for(std::vector<InfoBoxLine*>::iterator i = lines.begin(); i != lines.end(); ++i) {
     delete *i;
   }
 }
@@ -73,7 +73,7 @@ InfoBlock::hit(Player& player)
     // first hide all other InfoBlocks' messages in same sector
     Sector* parent = Sector::current();
     if (!parent) return;
-    for (Sector::GameObjects::iterator i = parent->gameobjects.begin(); i != parent->gameobjects.end(); i++) {
+    for (Sector::GameObjects::iterator i = parent->gameobjects.begin(); i != parent->gameobjects.end(); ++i) {
       InfoBlock* block = dynamic_cast<InfoBlock*>(i->get());
       if (!block) continue;
       if (block != this) block->hide_message();
index fa9e73e..949f69f 100644 (file)
@@ -118,7 +118,7 @@ Ispy::free_line_of_sight(Vector line_start, Vector line_end, const MovingObject*
   std::list<TileMap*> solid_tilemaps = Sector::current()->solid_tilemaps;
   for (float test_x = lsx; test_x <= lex; test_x += 16) {
     for (float test_y = lsy; test_y <= ley; test_y += 16) {
-      for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+      for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
         TileMap* solids = *i;
         const Tile* tile = solids->get_tile_at(Vector(test_x, test_y));
         if(!tile) continue;
index 798ccb4..db909a9 100644 (file)
@@ -42,9 +42,8 @@ Lantern::Lantern(const Reader& reader) :
 Lantern::Lantern(const Vector& pos) :
   Rock(pos, "images/objects/lantern/lantern.sprite"),
   lightcolor(0.0f, 0.0f, 0.0f),
-  lightsprite()
+  lightsprite(SpriteManager::current()->create("images/objects/lightmap_light/lightmap_light.sprite"))
 {
-  lightsprite = SpriteManager::current()->create("images/objects/lightmap_light/lightmap_light.sprite");
   lightsprite->set_blend(Blend(GL_SRC_ALPHA, GL_ONE));
   updateColor();
   SoundManager::current()->preload("sounds/willocatch.wav");
index 7d4f708..0a25d2f 100644 (file)
@@ -79,10 +79,9 @@ MovingSprite::MovingSprite(const Reader& reader, int layer_, CollisionGroup coll
 MovingSprite::MovingSprite(const MovingSprite& other) :
   MovingObject(other),
   sprite_name(),
-  sprite(),
+  sprite(other.sprite->clone()),
   layer(other.layer)
 {
-  sprite = other.sprite->clone();
 }
 /*
   MovingSprite&
index 424c4f2..a51da08 100644 (file)
@@ -65,7 +65,7 @@ Particles::~Particles()
 {
   // free particles
   for(std::vector<Particle*>::iterator i = particles.begin();
-      i < particles.end(); i++)
+      i < particles.end(); ++i)
     delete (*i);
 }
 
@@ -101,7 +101,7 @@ Particles::draw(DrawingContext& context)
 {
   // draw particles
   for(std::vector<Particle*>::iterator i = particles.begin();
-      i != particles.end(); i++) {
+      i != particles.end(); ++i) {
     context.draw_filled_rect((*i)->pos, Vector(size,size), color,drawing_layer);
   }
 }
index 880c4c5..6cd527b 100644 (file)
@@ -80,7 +80,7 @@ ParticleSystem_Interactive::collision(Particle* object, Vector movement)
   dest.move(movement);
   Constraints constraints;
 
-  for(std::list<TileMap*>::const_iterator i = Sector::current()->solid_tilemaps.begin(); i != Sector::current()->solid_tilemaps.end(); i++) {
+  for(std::list<TileMap*>::const_iterator i = Sector::current()->solid_tilemaps.begin(); i != Sector::current()->solid_tilemaps.end(); ++i) {
     TileMap* solids = *i;
     // FIXME Handle a nonzero tilemap offset
     for(int x = starttilex; x*32 < max_x; ++x) {
index c69e1a5..a646e96 100644 (file)
@@ -99,7 +99,7 @@ Path::get_nearest_node_no(Vector reference_point) const
   int nearest_node_id = -1;
   float nearest_node_dist = 0;
   int id = 0;
-  for (std::vector<Node>::const_iterator i = nodes.begin(); i != nodes.end(); i++, id++) {
+  for (std::vector<Node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i, ++id) {
     float dist = (i->position - reference_point).norm();
     if ((nearest_node_id == -1) || (dist < nearest_node_dist)) {
       nearest_node_id = id;
@@ -115,7 +115,7 @@ Path::get_farthest_node_no(Vector reference_point) const
   int farthest_node_id = -1;
   float farthest_node_dist = 0;
   int id = 0;
-  for (std::vector<Node>::const_iterator i = nodes.begin(); i != nodes.end(); i++, id++) {
+  for (std::vector<Node>::const_iterator i = nodes.begin(); i != nodes.end(); ++i, ++id) {
     float dist = (i->position - reference_point).norm();
     if ((farthest_node_id == -1) || (dist > farthest_node_dist)) {
       farthest_node_id = id;
index dcb6b4f..62ba8e1 100644 (file)
 
 RainSplash::RainSplash(Vector pos, bool vertical) :
   sprite(),
-  position(),
-  frame()
+  position(pos),
+  frame(0)
 {
-  frame = 0;
-  position = pos;
   if (vertical) sprite = SpriteManager::current()->create("images/objects/particles/rainsplash-vertical.sprite");
   else sprite = SpriteManager::current()->create("images/objects/particles/rainsplash.sprite");
 }
index b777cda..e4d29e4 100644 (file)
@@ -143,7 +143,7 @@ SpriteData::parse_action(const Reader& lisp, const std::string& basedir)
 }
 
 const SpriteData::Action*
-SpriteData::get_action(const std::string act)
+SpriteData::get_action(const std::string& act)
 {
   Actions::iterator i = actions.find(act);
   if(i == actions.end()) {
index 7a8945e..78f51a9 100644 (file)
@@ -68,7 +68,7 @@ private:
 
   void parse_action(const Reader& lispreader, const std::string& basedir);
   /** Get an action */
-  const Action* get_action(const std::string act);
+  const Action* get_action(const std::string& act);
 
   Actions actions;
   std::string name;
index 71b0c5f..43d09e7 100644 (file)
@@ -257,11 +257,11 @@ void
 Console::show_history(int offset_)
 {
   while ((offset_ > 0) && (m_history_position != m_history.end())) {
-    m_history_position++;
+    ++m_history_position;
     offset_--;
   }
   while ((offset_ < 0) && (m_history_position != m_history.begin())) {
-    m_history_position--;
+    --m_history_position;
     offset_++;
   }
   if (m_history_position == m_history.end()) {
@@ -561,7 +561,7 @@ Console::draw(DrawingContext& context)
   }
 
   int skipLines = -m_offset;
-  for (std::list<std::string>::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); i++)
+  for (std::list<std::string>::iterator i = m_buffer.m_lines.begin(); i != m_buffer.m_lines.end(); ++i)
   {
     if (skipLines-- > 0) continue;
     lineNo++;
index 3065fa8..0af3774 100644 (file)
@@ -87,7 +87,7 @@ FlipLevelTransformer::transform_drawing_effect(DrawingEffect effect)
 void
 FlipLevelTransformer::transform_path(float height, float obj_height, Path& path)
 {
-  for (std::vector<Path::Node>::iterator i = path.nodes.begin(); i != path.nodes.end(); i++) {
+  for (std::vector<Path::Node>::iterator i = path.nodes.begin(); i != path.nodes.end(); ++i) {
     Vector& pos = i->position;
     pos.y = height - pos.y - obj_height;
   }
index a5c6220..46c4da9 100644 (file)
 
 InfoBox::InfoBox(const std::string& text) :
   firstline(0),
-  lines(),
+  // Split text string lines into a vector
+  lines(InfoBoxLine::split(text, 400)),
   images(),
   arrow_scrollup(),
   arrow_scrolldown()
 {
-  // Split text string lines into a vector
-  lines = InfoBoxLine::split(text, 400);
-
   try
   {
     // get the arrow sprites
@@ -49,7 +47,7 @@ InfoBox::InfoBox(const std::string& text) :
 InfoBox::~InfoBox()
 {
   for(std::vector<InfoBoxLine*>::iterator i = lines.begin();
-      i != lines.end(); i++)
+      i != lines.end(); ++i)
     delete *i;
 }
 
index 20a287c..bc10362 100644 (file)
@@ -89,12 +89,11 @@ InfoBoxLine::LineType get_linetype_by_format_char(char format_char) {
 
 InfoBoxLine::InfoBoxLine(char format_char, const std::string& text_) :
   lineType(NORMAL),
-  font(Resources::normal_font),
+  font(get_font_by_format_char(format_char)),
   color(),
   text(text_),
   image()
 {
-  font = get_font_by_format_char(format_char);
   lineType = get_linetype_by_format_char(format_char);
   color = get_color_by_format_char(format_char);
   if (lineType == IMAGE)
index f4b77ac..8d00022 100644 (file)
 LevelIntro::LevelIntro(const Level* level_, const Statistics* best_level_statistics_) :
   level(level_),
   best_level_statistics(best_level_statistics_),
-  player_sprite(),
+  player_sprite(SpriteManager::current()->create("images/creatures/tux/tux.sprite")),
   player_sprite_py(0),
   player_sprite_vy(0),
   player_sprite_jump_timer()
 {
-  player_sprite = SpriteManager::current()->create("images/creatures/tux/tux.sprite");
   player_sprite->set_action("small-walk-right");
   player_sprite_jump_timer.start(graphicsRandom.randf(5,10));
 }
index e7ff524..508f1a4 100644 (file)
@@ -40,7 +40,7 @@ LanguageMenu::LanguageMenu()
 
   int mnid = MNID_LANGUAGE_NEXT;
   std::set<tinygettext::Language> languages = g_dictionary_manager->get_languages();
-  for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++)
+  for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); ++i)
   {
     add_entry(mnid++, i->get_name());
   }
@@ -76,7 +76,7 @@ LanguageMenu::menu_action(MenuItem* item)
     int mnid = MNID_LANGUAGE_NEXT;
     std::set<tinygettext::Language> languages = g_dictionary_manager->get_languages();
 
-    for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); i++)
+    for (std::set<tinygettext::Language>::iterator i = languages.begin(); i != languages.end(); ++i)
     {
       if (item->id == mnid++)
       {
index 491e1dd..9820891 100644 (file)
@@ -81,7 +81,7 @@ TextScroller::TextScroller(const std::string& filename) :
 
 TextScroller::~TextScroller()
 {
-  for(std::vector<InfoBoxLine*>::iterator i = lines.begin(); i != lines.end(); i++) delete *i;
+  for(std::vector<InfoBoxLine*>::iterator i = lines.begin(); i != lines.end(); ++i) delete *i;
 }
 
 void
index ae8f299..1d6b3f1 100644 (file)
@@ -154,7 +154,7 @@ Tile::print_debug(int id) const
  * in quotation marks because because the slope's gradient is taken.
  * Also, this uses the movement relative to the tilemaps own movement
  * (if any).  --octo */
-bool Tile::check_movement_unisolid (const Vector movement) const
+bool Tile::check_movement_unisolid (const Vector& movement) const
 {
   int slope_info;
   double mv_x;
index 92fa06e..d0dd424 100644 (file)
@@ -170,7 +170,7 @@ private:
 
   /** Returns zero if a unisolid tile is non-solid due to the movement
    * direction, non-zero if the tile is solid due to direction. */
-  bool check_movement_unisolid (const Vector movement) const;
+  bool check_movement_unisolid (const Vector& movement) const;
 
   /** Returns zero if a unisolid tile is non-solid due to the position of the
    * tile and the object, non-zero if the tile is solid. */
index 1407cad..2c1ffb3 100644 (file)
@@ -31,7 +31,7 @@ TriggerBase::TriggerBase() :
 TriggerBase::~TriggerBase()
 {
   // unregister remove_listener hooks, so nobody will try to call us after we've been destroyed
-  for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); i++) {
+  for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); ++i) {
     Player* p = *i;
     p->del_remove_listener(this);
   }
@@ -42,7 +42,7 @@ void
 TriggerBase::update(float )
 {
   if (lasthit && !hit) {
-    for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); i++) {
+    for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); ++i) {
       Player* p = *i;
       event(*p, EVENT_LOSETOUCH);
       p->del_remove_listener(this);
@@ -81,7 +81,7 @@ TriggerBase::collision(GameObject& other, const CollisionHit& )
 void
 TriggerBase::object_removed(GameObject* object)
 {
-  for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); i++) {
+  for (std::list<Player*>::iterator i = losetouch_listeners.begin(); i != losetouch_listeners.end(); ++i) {
     Player* p = *i;
     if (p == object) {
       losetouch_listeners.erase(i);
index 6952559..ff1460f 100644 (file)
@@ -79,7 +79,7 @@ SpriteChange::clear_stay_action()
 
   // if we are in a stay_group, also clear all stay actions in this group
   if (stay_group != "") {
-    for (std::list<SpriteChange*>::iterator i = all_sprite_changes.begin(); i != all_sprite_changes.end(); i++) {
+    for (std::list<SpriteChange*>::iterator i = all_sprite_changes.begin(); i != all_sprite_changes.end(); ++i) {
       SpriteChange* sc = *i;
       if (sc->stay_group != stay_group) continue;
       sc->in_stay_action = false;
index 3300fa8..e5fba03 100644 (file)
@@ -330,7 +330,7 @@ WorldMap::load(const std::string& filename)
     }
     current_tileset = NULL;
 
-    if(solid_tilemaps.size() == 0)
+    if(solid_tilemaps.empty())
       throw std::runtime_error("No solid tilemap specified");
 
     move_to_spawnpoint("main");
@@ -718,7 +718,7 @@ WorldMap::tile_data_at(Vector p)
 {
   int dirs = 0;
 
-  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
     TileMap* tilemap = *i;
     const Tile* tile = tilemap->get_tile((int)p.x, (int)p.y);
     int dirdata = tile->getData();
@@ -1180,7 +1180,7 @@ float
 WorldMap::get_width() const
 {
   float width = 0;
-  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
     TileMap* solids = *i;
     if (solids->get_width() > width) width = solids->get_width();
   }
@@ -1191,7 +1191,7 @@ float
 WorldMap::get_height() const
 {
   float height = 0;
-  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); i++) {
+  for(std::list<TileMap*>::const_iterator i = solid_tilemaps.begin(); i != solid_tilemaps.end(); ++i) {
     TileMap* solids = *i;
     if (solids->get_height() > height) height = solids->get_height();
   }