// // aegis - project change supervisor // Copyright (C) 2006-2009, 2011, 2012, 2014 Peter Miller // Copyright (C) 2005, 2008 Walter Franzini; // // 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 #include #include change_functor_pending_printer::~change_functor_pending_printer() { if (pp) pp->free(); size_t sz = remote_inventory->size(); uuid_col->fprintf("Remote change set%s: %d.", sz == 1 ? "" : "s", (int) sz); colp->eoln(); uuid_col->fprintf("Pending %d change set%s.", n, (n == 1 ? "" : "s")); colp->eoln(); } change_functor_pending_printer::change_functor_pending_printer(bool arg1, project *arg2, const nstring &arg3, symtab *arg4, nstring_list *arg5, nstring_list *arg6, nstring_list *arg7, nstring_list *arg8) : change_functor(arg1), pp(arg2), remote_inventory(arg4), in_uuid_list(arg5), in_version_list(arg6), ex_uuid_list(arg7), ex_version_list(arg8), n(0) { colp = col::open(0); nstring line1 = nstring::format ( "Project \"%s\", Pending Change Set Inventory", project_name_get(pp).c_str() ); colp->title(line1.c_str(), arg3.c_str()); int left = 0; vers_col = colp->create(left, left + VERSION_WIDTH, "Change\n------"); left += VERSION_WIDTH + 1; uuid_col = colp->create(left, left + UUID_WIDTH, "UUID\n------"); left += UUID_WIDTH + 1; desc_col = colp->create(left, 0, "Description\n-----------"); } void change_functor_pending_printer::operator()(const change::pointer &cp) { cstate_ty *cstate_data = cp->cstate_get(); if (cstate_data->uuid) { if (!remote_inventory->query(cstate_data->uuid)) { nstring version = cp->version_get(); nstring uuid(cstate_data->uuid); if (ex_uuid_list->member(uuid)) return; if (ex_version_list->gmatch_candidate(version)) return; if ( !in_uuid_list->empty() && !in_uuid_list->member(uuid) ) return; if ( !in_version_list->empty() && !in_version_list->gmatch_candidate(version) ) return; vers_col->fputs(version); uuid_col->fputs(uuid); desc_col->fputs(nstring(cstate_data->brief_description)); colp->eoln(); ++n; } } } // vim: set ts=8 sw=4 et :