From 8e278873d4bd35a7cd7f3b6d9d7852fa422370b8 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Mon, 29 Dec 2008 12:09:27 -0500 Subject: Merged CHECK macro branch --- sigmod/MapTrainer.cpp | 185 +++++++++----------------------------------------- 1 file changed, 32 insertions(+), 153 deletions(-) (limited to 'sigmod/MapTrainer.cpp') diff --git a/sigmod/MapTrainer.cpp b/sigmod/MapTrainer.cpp index b4b5fa33..516af27c 100644 --- a/sigmod/MapTrainer.cpp +++ b/sigmod/MapTrainer.cpp @@ -68,10 +68,10 @@ void Sigmod::MapTrainer::validate() TEST_BEGIN(); if (m_name.isEmpty()) emit(error("Name is empty")); - TEST(setTrainerClass, trainerClass); - TEST(setCoordinate, coordinate); - TEST(setNumberFight, numberFight); - TEST(setLeadTeamMember, leadTeamMember); + TEST(trainerClass); + TEST(coordinate); + TEST(numberFight); + TEST(leadTeamMember); if (!teamMemberCount()) emit(error("There are no team members")); QSet idChecker; @@ -89,6 +89,7 @@ void Sigmod::MapTrainer::load(const QDomElement& xml) LOAD(coordinate); LOAD(numberFight); LOAD(script); + LOAD(leadTeamMember); LOAD_SUB(newTeamMember, MapTrainerTeamMember); LOAD(leadTeamMember); } @@ -101,164 +102,43 @@ QDomElement Sigmod::MapTrainer::save() const SAVE(coordinate); SAVE(numberFight); SAVE(script); + SAVE(leadTeamMember); SAVE_SUB(MapTrainerTeamMember, teamMembers); return xml; } -void Sigmod::MapTrainer::setName(const QString& name) -{ - CHECK(name); -} +SETTER(MapTrainer, QString&, Name, name) +SETTER(MapTrainer, int, TrainerClass, trainerClass) +SETTER(MapTrainer, QPoint&, Coordinate, coordinate) +SETTER(MapTrainer, int, NumberFight, numberFight) +SETTER(MapTrainer, Sigcore::Script&, Script, script) +SETTER(MapTrainer, int, LeadTeamMember, leadTeamMember) -void Sigmod::MapTrainer::setTrainerClass(const int trainerClass) -{ - if (!sigmod()->trainerById(trainerClass)) - emit(error(bounds("trainerClass", trainerClass))); - else - CHECK(trainerClass); -} +GETTER(MapTrainer, QString, name) +GETTER(MapTrainer, int, trainerClass) +GETTER(MapTrainer, QPoint, coordinate) +GETTER(MapTrainer, int, numberFight) +GETTER(MapTrainer, Sigcore::Script, script) +GETTER(MapTrainer, int, leadTeamMember) -void Sigmod::MapTrainer::setCoordinate(const QPoint& coordinate) -{ +CHECK(MapTrainer, QString&, name) +CHECK_INDEX(MapTrainer, int, trainerClass, sigmod(), trainer) +CHECK_BEGIN(MapTrainer, QPoint&, coordinate) const Map* map = qobject_cast(parent()); - if ((coordinate.x() < 0) || (coordinate.y() < 0) || (map->width() <= coordinate.x()) || (map->height() <= coordinate.y())) - emit(error(bounds("coordinate", QPoint(0, 0), QPoint(map->width(), map->height()), coordinate))); - else - CHECK(coordinate); -} - -void Sigmod::MapTrainer::setNumberFight(const int numberFight) -{ - if ((numberFight <= 0) || (sigmod()->rules()->maxFight() < numberFight)) - emit(error(bounds("numberFight", 1, sigmod()->rules()->maxFight(), numberFight))); - else - CHECK(numberFight); -} - -void Sigmod::MapTrainer::setScript(const Sigcore::Script& script) -{ - CHECK(script); -} - -void Sigmod::MapTrainer::setLeadTeamMember(const int leadTeamMember) -{ + TBOUNDS_MOD(coordinate_x, 0, map->width() - 1, coordinate.x()) + TBOUNDS_MOD(coordinate_y, 0, map->height() - 1, coordinate.y()) +CHECK_END() +CHECK_BOUNDS(MapTrainer, int, numberFight, 1, sigmod()->rules()->maxFight()) +CHECK(MapTrainer, Sigcore::Script&, script) +CHECK_BEGIN(MapTrainer, int, leadTeamMember) if (!teamMemberById(leadTeamMember)) - emit(error(bounds("leadTeamMember", leadTeamMember))); - else - CHECK(leadTeamMember); -} - -QString Sigmod::MapTrainer::name() const -{ - return m_name; -} - -int Sigmod::MapTrainer::trainerClass() const -{ - return m_trainerClass; -} - -QPoint Sigmod::MapTrainer::coordinate() const -{ - return m_coordinate; -} - -int Sigmod::MapTrainer::numberFight() const -{ - return m_numberFight; -} - -Sigcore::Script Sigmod::MapTrainer::script() const -{ - return m_script; -} - -int Sigmod::MapTrainer::leadTeamMember() const -{ - return m_leadTeamMember; -} - -const Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::teamMember(const int index) const -{ - if (index < teamMemberCount()) - return m_teamMembers.at(index); - return NULL; -} - -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::teamMember(const int index) -{ - if (index < teamMemberCount()) - return m_teamMembers[index]; - return NULL; -} - -const Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::teamMemberById(const int id) const -{ - return teamMember(teamMemberIndex(id)); -} - -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::teamMemberById(const int id) -{ - return teamMember(teamMemberIndex(id)); -} - -int Sigmod::MapTrainer::teamMemberIndex(const int id) const -{ - for (int i = 0; i < teamMemberCount(); ++i) { - if (m_teamMembers[i]->id() == id) - return i; + EBOUNDS_IDX(leadTeamMember); + return false; } - return INT_MAX; -} - -int Sigmod::MapTrainer::teamMemberCount() const -{ - return m_teamMembers.size(); -} +CHECK_END() -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::newTeamMember() -{ - return newTeamMember(new MapTrainerTeamMember(this, newTeamMemberId())); -} - -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::newTeamMember(const QDomElement& xml) -{ - return newTeamMember(new MapTrainerTeamMember(xml, this, newTeamMemberId())); -} - -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::newTeamMember(const MapTrainerTeamMember& teamMember) -{ - return newTeamMember(new MapTrainerTeamMember(teamMember, this, newTeamMemberId())); -} - -Sigmod::MapTrainerTeamMember* Sigmod::MapTrainer::newTeamMember(MapTrainerTeamMember* teamMember) -{ - m_teamMembers.append(teamMember); - return teamMember; -} - -void Sigmod::MapTrainer::deleteTeamMember(const int index) -{ - if (index < teamMemberCount()) - { - delete m_teamMembers[index]; - m_teamMembers.removeAt(index); - } -} - -void Sigmod::MapTrainer::deleteTeamMemberById(const int id) -{ - deleteTeamMember(teamMemberIndex(id)); -} - -int Sigmod::MapTrainer::newTeamMemberId() const -{ - int i = 0; - while ((i < teamMemberCount()) && (teamMemberIndex(i) != INT_MAX)) - ++i; - return i; -} +SUBCLASS(MapTrainer, TeamMember, teamMember, teamMembers) Sigmod::MapTrainer& Sigmod::MapTrainer::operator=(const MapTrainer& rhs) { @@ -277,6 +157,5 @@ Sigmod::MapTrainer& Sigmod::MapTrainer::operator=(const MapTrainer& rhs) void Sigmod::MapTrainer::clear() { - while (teamMemberCount()) - deleteTeamMember(0); + SUBCLASS_CLEAR(teamMembers); } -- cgit