1 //
2 // aegis - project change supervisor
3 // Copyright (C) 1995-1999, 2001, 2002, 2004-2009, 2011, 2012 Peter Miller
4 // Copyright (C) 2008 Walter Franzini
5 //
6 // This program is free software; you can redistribute it and/or modify
7 // it under the terms of the GNU General Public License as published by
8 // the Free Software Foundation; either version 3 of the License, or (at
9 // your option) any later version.
10 //
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // General Public License for more details.
15 //
16 // You should have received a copy of the GNU General Public License
17 // along with this program. If not, see <http://www.gnu.org/licenses/>.
18 //
19 
20 #ifndef AEGIS_CHANGE_BRANCH_H
21 #define AEGIS_CHANGE_BRANCH_H
22 
23 #include <libaegis/change.h>
24 
25 struct string_list_ty; // forward
26 struct change_list_ty; // forward
27 
28 void change_branch_new(change::pointer );
29 bool change_history_delta_validate(change::pointer , long);
30 time_t change_history_delta_to_timestamp(struct project *, long);
31 long change_history_timestamp_to_delta(struct project *, time_t);
32 long change_history_delta_latest(change::pointer );
33 long change_history_delta_by_name(change::pointer , string_ty *, int);
34 long change_history_change_by_name(change::pointer , string_ty *, int);
35 long change_history_change_by_delta(change::pointer , long);
36 long change_history_change_by_timestamp(struct project *, time_t);
37 void change_history_delta_name_delete(change::pointer , string_ty *);
38 void change_history_delta_name_add(change::pointer , long, string_ty *);
39 long change_history_last_change_integrated(change::pointer );
40 long change_current_integration_get(change::pointer );
41 void change_current_integration_set(change::pointer , long);
42 long change_branch_next_delta_number(change::pointer );
43 void change_copyright_years_now(change::pointer );
44 void change_copyright_year_append(change::pointer , int);
45 void change_copyright_years_merge(change::pointer , change::pointer );
46 void change_copyright_years_slurp(change::pointer cp, int *ary, int ary_len_max,
47         int *ary_len);
48 void change_copyright_years_get(change::pointer cp, int *ary, int ary_len_max,
49         int *ary_len);
50 void change_branch_history_new(change::pointer cp, long dn, long cn,
51         string_ty *, time_t, bool);
52 int change_branch_history_nth(change::pointer cp, long n, long *cnp, long *dnp,
53         struct string_list_ty *name);
54 
55 bool change_branch_administrator_query(change::pointer , string_ty *);
56 void change_branch_administrator_add(change::pointer , string_ty *);
57 void change_branch_administrator_remove(change::pointer , string_ty *);
58 string_ty *change_branch_administrator_nth(change::pointer , long);
59 bool change_branch_developer_query(change::pointer , string_ty *);
60 void change_branch_developer_add(change::pointer , string_ty *);
61 void change_branch_developer_remove(change::pointer , string_ty *);
62 string_ty *change_branch_developer_nth(change::pointer , long);
63 bool change_branch_reviewer_query(change::pointer , string_ty *);
64 void change_branch_reviewer_add(change::pointer , string_ty *);
65 void change_branch_reviewer_remove(change::pointer , string_ty *);
66 string_ty *change_branch_reviewer_nth(change::pointer , long);
67 bool change_branch_integrator_query(change::pointer , string_ty *);
68 void change_branch_integrator_add(change::pointer , string_ty *);
69 void change_branch_integrator_remove(change::pointer , string_ty *);
70 string_ty *change_branch_integrator_nth(change::pointer , long);
71 
72 void change_branch_change_add(change::pointer , long, int);
73 void change_branch_change_remove(change::pointer , long);
74 void change_branch_sub_branch_list_get(change::pointer , long **, size_t *);
75 int change_branch_change_nth(change::pointer , long, long *);
76 long change_branch_next_change_number(change::pointer cp, int skip);
77 int change_branch_change_number_in_use(change::pointer , long);
78 
79 void change_branch_umask_set(change::pointer , int);
80 int change_branch_umask_get(change::pointer );
81 void change_branch_developer_may_review_set(change::pointer , bool);
82 bool change_branch_developer_may_review_get(change::pointer );
83 void change_branch_developer_may_integrate_set(change::pointer , bool);
84 bool change_branch_developer_may_integrate_get(change::pointer );
85 void change_branch_reviewer_may_integrate_set(change::pointer , bool);
86 bool change_branch_reviewer_may_integrate_get(change::pointer );
87 void change_branch_developers_may_create_changes_set(change::pointer , bool);
88 bool change_branch_developers_may_create_changes_get(change::pointer );
89 void change_branch_forced_develop_begin_notify_command_set(change::pointer ,
90         string_ty *);
91 string_ty *change_branch_forced_develop_begin_notify_command_get
92    (change::pointer );
93 void change_branch_develop_end_notify_command_set(change::pointer cp,
94     string_ty *command);
95 string_ty *change_branch_develop_end_notify_command_get(change::pointer );
96 void change_branch_develop_end_undo_notify_command_set(change::pointer ,
97         string_ty *);
98 string_ty *change_branch_develop_end_undo_notify_command_get(change::pointer );
99 void change_branch_review_begin_notify_command_set(change::pointer ,
100         string_ty *);
101 string_ty *change_branch_review_begin_notify_command_get(change::pointer );
102 void change_branch_review_begin_undo_notify_command_set(change::pointer ,
103         string_ty *);
104 string_ty *change_branch_review_begin_undo_notify_command_get(change::pointer );
105 void change_branch_review_pass_notify_command_set(change::pointer cp,
106     string_ty *command);
107 string_ty *change_branch_review_pass_notify_command_get(change::pointer );
108 void change_branch_review_pass_undo_notify_command_set(change::pointer ,
109         string_ty *);
110 string_ty *change_branch_review_pass_undo_notify_command_get(change::pointer );
111 void change_branch_review_fail_notify_command_set(change::pointer cp,
112     string_ty *command);
113 string_ty *change_branch_review_fail_notify_command_get(change::pointer );
114 void change_branch_integrate_pass_notify_command_set(change::pointer ,
115         string_ty *);
116 string_ty *change_branch_integrate_pass_notify_command_get(change::pointer );
117 void change_branch_integrate_fail_notify_command_set(change::pointer ,
118         string_ty *);
119 string_ty *change_branch_integrate_fail_notify_command_get(change::pointer );
120 void change_branch_default_development_directory_set(change::pointer ,
121         string_ty *);
122 string_ty *change_branch_default_development_directory_get(change::pointer );
123 
124 /**
125   * The change_branch_default_test_exemption_set function is used to set
126   * the default_test_exemption attribute of a branch.
127   *
128   * @param cp
129   *     The branch being modified.
130   * @param yesno
131   *     The state to set the attribute.
132   */
133 void change_branch_default_test_exemption_set(change::pointer cp, bool yesno);
134 
135 /**
136   * The change_branch_default_test_exemption_get function is used to
137   * obtain the current state of a branch's default_test_exemption
138   * attribute.
139   *
140   * @param cp
141   *     The branch being quesried.
142   * @returns
143   *     The state of the attribute.
144   */
145 bool change_branch_default_test_exemption_get(change::pointer cp);
146 
147 /**
148   * The change_branch_default_test_regression_exemption_set function is
149   * used to set the default_test_regression_exemption attribute of a
150   * branch.
151   *
152   * @param cp
153   *     The branch being modified.
154   * @param yesno
155   *     The state to set the attribute.
156   */
157 void change_branch_default_test_regression_exemption_set(change::pointer cp,
158     bool yesno);
159 
160 /**
161   * The change_branch_default_test_regression_exemption_get
162   * function is used to obtain the current state of a branch's
163   * default_test_regression_exemption attribute.
164   *
165   * @param cp
166   *     The branch being quesried.
167   * @returns
168   *     The state of the attribute.
169   */
170 bool change_branch_default_test_regression_exemption_get(change::pointer cp);
171 
172 long change_branch_minimum_change_number_get(change::pointer );
173 void change_branch_minimum_change_number_set(change::pointer , long);
174 bool change_branch_reuse_change_numbers_get(change::pointer );
175 long change_branch_minimum_branch_number_get(change::pointer );
176 void change_branch_minimum_branch_number_set(change::pointer , long);
177 void change_branch_reuse_change_numbers_set(change::pointer , bool);
178 bool change_branch_skip_unlucky_get(change::pointer );
179 void change_branch_skip_unlucky_set(change::pointer , bool);
180 bool change_branch_compress_database_get(change::pointer );
181 void change_branch_compress_database_set(change::pointer , bool);
182 nstring change_version_get(change::pointer cp) DEPRECATED;
183 int change_branch_develop_end_action_get(change::pointer );
184 void change_branch_develop_end_action_set(change::pointer , int);
185 bool change_branch_protect_development_directory_get(change::pointer );
186 void change_branch_protect_development_directory_set(change::pointer , bool);
187 
188 /**
189   * The change_branch_uuid_find function is used to locate a change by
190   * its UUID.  This function will recurse down the branch tree.  It is
191   * possible to give a leading prefix - this is shorter, and easier for
192   * humans to type.  We return all such matches, although usually it's
193   * an error if there is more than one.
194   *
195   * @param pp
196   *     The change or branch to search.
197   * @param uuid
198   *     The change UUID to search for.
199   * @param result
200   *     This is the list of changes which match this (partial) UUID specified.
201   */
202 void change_branch_uuid_find(change::pointer pp, string_ty *uuid,
203     change_list_ty &result);
204 
205 #endif // AEGIS_CHANGE_BRANCH_H
206 // vim: set ts=8 sw=4 et :
207