// // aegis - project change supervisor // Copyright (C) 2004-2008, 2011-2013 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 #include #include #include #include project_identifier_subset_plain::~project_identifier_subset_plain() { trace(("~project_identifier_subset_plain()\n{\n")); pp = 0; if (project_name) { str_free(project_name); project_name = 0; } trace(("}\n")); } project_identifier_subset_plain::project_identifier_subset_plain() : project_name(0), pp(0) { trace(("project_identifier_subset_plain()\n")); } project * project_identifier_subset_plain::get_pp() { if (!pp) { // // locate project data // assert(!pp); if (!project_name) { nstring n = user_ty::create()->default_project(); project_name = str_copy(n.get_ref()); } pp = project_alloc(project_name); pp->bind_existing(); assert(pp); } return pp; } user_ty::pointer project_identifier_subset_plain::get_up() { if (!up) { up = user_ty::create(); assert(up); } return up; } void project_identifier_subset_plain::set_user_by_name(nstring &login) { // // If the user was already set, it will be silently replaced. // There are no known cases where an error message would be more // appropriate. // up = user_ty::create(login); } void project_identifier_subset_plain::command_line_parse(void (*usage)(void)) { trace(("project_identifier_subset_plain::command_line_parse()\n{\n")); switch (arglex_token) { default: fatal_raw ( "%s: %d: option %s not handled in switch (bug)", __FILE__, __LINE__, arglex_token_name(arglex_token) ); // NOTREACHED case arglex_token_branch: case arglex_token_trunk: case arglex_token_grandparent: bad_argument(usage); // NOTREACHED case arglex_token_project: arglex(); // fall through... case arglex_token_string: arglex_parse_project(&project_name, usage); trace(("}\n")); return; } arglex(); trace(("}\n")); } void project_identifier_subset_plain::command_line_check(void (*)(void)) { } void project_identifier_subset_plain::parse_change_with_branch(long &change_number, usage_t usage) { arglex_parse_change(&project_name, &change_number, usage); } void project_identifier_subset_plain::parse_change_with_branch(long &change_number, const char *&branch, usage_t usage) { arglex_parse_change_with_branch ( &project_name, &change_number, &branch, usage ); } bool project_identifier_subset_plain::is_set(void) const { return !!project_name; } // vim: set ts=8 sw=4 et :