// // aegis - project change supervisor // Copyright (C) 2005, 2006, 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 // for assert #include #include #include #include #include void change_identifier_subset::get_project_file_names(nstring_list &results) { if (need_historical_perspective()) { project_file_roll_forward *hp = get_historian(); nstring_list file_name_list; hp->keys(file_name_list); for (size_t j = 0; j < file_name_list.size(); ++j) { nstring file_name = file_name_list[j]; assert(file_name.length()); file_event *fep = hp->get_last(file_name); assert(fep); if (!fep) continue; assert(fep->get_src()); switch (fep->get_src()->usage) { case file_usage_build: switch (fep->get_src()->action) { case file_action_modify: continue; case file_action_create: case file_action_remove: case file_action_insulate: case file_action_transparent: break; } // fall through... case file_usage_source: case file_usage_config: case file_usage_test: case file_usage_manual_test: switch (fep->get_src()->action) { case file_action_create: case file_action_modify: case file_action_remove: break; case file_action_insulate: case file_action_transparent: // can't happen assert(0); continue; } break; } results.push_back(nstring(fep->get_src()->file_name)); } } else { for (size_t k = 0;; ++k) { fstate_src_ty *src_data = get_pp()->file_nth(k, view_path_simple); if (!src_data) break; switch (src_data->usage) { case file_usage_build: switch (src_data->action) { case file_action_modify: continue; case file_action_create: case file_action_remove: case file_action_insulate: case file_action_transparent: break; } // fall through... case file_usage_source: case file_usage_config: case file_usage_test: case file_usage_manual_test: switch (src_data->action) { case file_action_create: case file_action_modify: case file_action_remove: break; case file_action_insulate: case file_action_transparent: // can't happen assert(0); continue; } break; } results.push_back(nstring(src_data->file_name)); } } }