// // aegis - project change supervisor // Copyright (C) 2003-2008 Peter Miller // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see // . // #include #include #include #include #include #include change_list_ty::change_list_ty() { trace(("change_list_ty::change_list_ty()\n{\n")); length = 0; maximum = 0; item = 0; trace(("}\n")); } change_list_ty::~change_list_ty() { trace(("change_list_ty::~change_list_ty(this = %08lX)\n{\n", (long)this)); delete [] item; length = 0; maximum = 0; item = 0; trace(("}\n")); } void change_list_ty::clear() { trace(("change_list::clear(this = %08lX)\n{\n", (long)this)); length = 0; trace(("}\n")); } void change_list_ty::append(change::pointer cp) { trace(("change_list_ty::append(this = %08lX, cp = %08lX)\n{\n", (long)this, (long)cp)); assert(cp); trace(("project \"%s\", change %ld, delta %ld\n", project_name_get(cp->pp)->str_text, magic_zero_decode(cp->number), change_delta_number_get(cp))); if (length >= maximum) { maximum = maximum * 2 + 8; change::pointer *new_item = new change::pointer [maximum]; for (size_t k = 0; k < length; ++k) new_item[k] = item[k]; delete [] item; item = new_item; } item[length++] = cp; trace(("}\n")); } bool change_list_ty::member_p(change::pointer cp1) const { size_t j; for (j = 0; j < length; ++j) { change::pointer cp2 = item[j]; if (cp1 == cp2) return true; if ( cp1->number == cp2->number && str_equal(project_name_get(cp1->pp), project_name_get(cp2->pp)) ) return true; } return false; }