//
// aegis - project change supervisor
// Copyright (C) 1995-2014 Peter Miller
// Copyright (C) 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 .
//
#ifndef AEGIS_PROJECT_HISTORY_H
#define AEGIS_PROJECT_HISTORY_H
#include
struct string_list_ty; // existence
bool project_history_delta_validate(project *, long);
time_t project_history_delta_to_timestamp(project *, long);
long project_history_timestamp_to_delta(project *, time_t);
long project_history_delta_latest(project *);
long project_history_delta_by_name(project *, string_ty *, int);
long project_history_change_by_name(project *, string_ty *, int);
long project_history_change_by_timestamp(project *, time_t);
long project_history_change_by_delta(project *, long);
void project_history_delta_name_delete(project *, string_ty *);
void project_history_delta_name_add(project *, long, string_ty *);
long project_current_integration_get(project *);
void project_current_integration_set(project *, long);
long project_next_delta_number(project *);
long project_change_number_to_delta_number(project *, long);
long project_delta_number_to_change_number(project *, long);
void project_copyright_years_merge(project *, change::pointer );
void project_copyright_years_get(project *pp, int *ary, int ary_len_max,
int *ary_len);
void project_copyright_year_append(project *, int);
void project_history_new(project *pp, long dn, long cn, string_ty *, time_t,
bool);
int project_history_nth(project *pp, long n, long *cn, long *dn,
struct string_list_ty *name);
long project_last_change_integrated(project *);
bool project_administrator_query(project *pp, string_ty *name) DEPRECATED;
bool project_administrator_query(project *pp, const nstring &name);
void project_administrator_add(project *pp, string_ty *name) DEPRECATED;
void project_administrator_add(project *pp, const nstring &name);
void project_administrator_remove(project *pp, string_ty *name) DEPRECATED;
void project_administrator_remove(project *pp, const nstring &name);
string_ty *project_administrator_nth(project *, long);
bool project_developer_query(project *pp, string_ty *name) DEPRECATED;
bool project_developer_query(project *pp, const nstring &name);
void project_developer_add(project *pp, string_ty *name) DEPRECATED;
void project_developer_add(project *pp, const nstring &name);
void project_developer_remove(project *pp, string_ty *name) DEPRECATED;
void project_developer_remove(project *pp, const nstring &name);
string_ty *project_developer_nth(project *, long);
bool project_reviewer_query(project *pp, string_ty *name) DEPRECATED;
bool project_reviewer_query(project *pp, const nstring &name);
void project_reviewer_add(project *pp, string_ty *name) DEPRECATED;
void project_reviewer_add(project *pp, const nstring &name);
void project_reviewer_remove(project *pp, string_ty *name) DEPRECATED;
void project_reviewer_remove(project *pp, const nstring &name);
string_ty *project_reviewer_nth(project *, long);
bool project_integrator_query(project *, string_ty *) DEPRECATED;
bool project_integrator_query(project *pp, const nstring &name);
void project_integrator_add(project *pp, string_ty *name) DEPRECATED;
void project_integrator_add(project *pp, const nstring &name);
void project_integrator_remove(project *pp, string_ty *name) DEPRECATED;
void project_integrator_remove(project *pp, const nstring &name);
string_ty *project_integrator_nth(project *, long);
void project_change_add(project *, long, int);
void project_change_remove(project *, long);
int project_change_nth(project *, long, long *);
long project_next_change_number(project *pp, bool is_a_change);
void project_description_set(project *, string_ty *);
nstring project_description_get(project *);
void project_version_previous_set(project *, string_ty *);
string_ty *project_version_previous_get(project *);
void project_umask_set(project *, int);
int project_umask_get(project *);
void project_developer_may_review_set(project *, bool);
bool project_developer_may_review_get(project *);
void project_developer_may_integrate_set(project *, bool);
bool project_developer_may_integrate_get(project *);
void project_reviewer_may_integrate_set(project *, bool);
bool project_reviewer_may_integrate_get(project *);
void project_developers_may_create_changes_set(project *, bool);
bool project_developers_may_create_changes_get(project *);
void project_forced_develop_begin_notify_command_set(project *,
string_ty *);
string_ty *project_forced_develop_begin_notify_command_get(project *);
void project_develop_end_notify_command_set(project *, string_ty *);
string_ty *project_develop_end_notify_command_get(project *);
void project_develop_end_undo_notify_command_set(project *, string_ty *);
string_ty *project_develop_end_undo_notify_command_get(project *);
void project_review_begin_notify_command_set(project *, string_ty *);
string_ty *project_review_begin_notify_command_get(project *);
void project_review_begin_undo_notify_command_set(project *,
string_ty *);
string_ty *project_review_begin_undo_notify_command_get(project *);
void project_review_pass_notify_command_set(project *, string_ty *);
string_ty *project_review_pass_notify_command_get(project *);
void project_review_pass_undo_notify_command_set(project *, string_ty *);
string_ty *project_review_pass_undo_notify_command_get(project *);
void project_review_fail_notify_command_set(project *, string_ty *);
string_ty *project_review_fail_notify_command_get(project *);
void project_integrate_pass_notify_command_set(project *, string_ty *);
string_ty *project_integrate_pass_notify_command_get(project *);
void project_integrate_fail_notify_command_set(project *, string_ty *);
string_ty *project_integrate_fail_notify_command_get(project *);
void project_default_development_directory_set(project *, string_ty *);
string_ty *project_default_development_directory_get(project *);
/**
* The project_default_test_exemption_set function is used to set the
* test exemption attribute of a project.
*
* @param pp
* The project being operated on
* @param yesno
* The state to set the attribute
*/
void project_default_test_exemption_set(project *pp, bool yesno);
/**
* The project_default_test_exemption_get function is used to obtain
* the current setting of the test exemption attribute of a project.
*
* @param pp
* The project being queried
* @returns
* The current state of the attribute
*/
bool project_default_test_exemption_get(project *pp);
/**
* The project_default_test_regression_exemption_set function is used
* to set the regression test exemption attribute of a project.
*
* @param pp
* The project being operated on
* @param yesno
* The state to set the attribute
*/
void project_default_test_regression_exemption_set(project *pp, bool yesno);
/**
* The project_default_test_regression_exemption_get function is used
* to obtain the current setting of the regression test exemption
* attribute of a project.
*
* @param pp
* The project being queried
* @returns
* The current state of the attribute
*/
bool project_default_test_regression_exemption_get(project *pp);
#endif // AEGIS_PROJECT_HISTORY_H
// vim: set ts=8 sw=4 et :