Commit bae957b9 by Russell Belfer

Add const to all shared pointers in diff API

There are a lot of places where the diff API gives the user access
to internal data structures and many of these were being exposed
through non-const pointers.  This replaces them all with const
pointers for any object that the user can access but is still
owned internally to the git_diff_list or git_diff_patch objects.

This will probably break some bindings...  Sorry!
parent 64286308
...@@ -122,7 +122,7 @@ typedef enum { ...@@ -122,7 +122,7 @@ typedef enum {
*/ */
typedef struct { typedef struct {
git_oid oid; git_oid oid;
char *path; const char *path;
git_off_t size; git_off_t size;
unsigned int flags; unsigned int flags;
uint16_t mode; uint16_t mode;
...@@ -154,7 +154,7 @@ typedef struct { ...@@ -154,7 +154,7 @@ typedef struct {
*/ */
typedef int (*git_diff_file_fn)( typedef int (*git_diff_file_fn)(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
float progress); float progress);
/** /**
...@@ -172,8 +172,8 @@ typedef struct { ...@@ -172,8 +172,8 @@ typedef struct {
*/ */
typedef int (*git_diff_hunk_fn)( typedef int (*git_diff_hunk_fn)(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
const char *header, const char *header,
size_t header_len); size_t header_len);
...@@ -213,8 +213,8 @@ enum { ...@@ -213,8 +213,8 @@ enum {
*/ */
typedef int (*git_diff_data_fn)( typedef int (*git_diff_data_fn)(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, /**< GIT_DIFF_LINE_... value from above */ char line_origin, /**< GIT_DIFF_LINE_... value from above */
const char *content, const char *content,
size_t content_len); size_t content_len);
...@@ -486,7 +486,7 @@ GIT_EXTERN(size_t) git_diff_num_deltas_of_type( ...@@ -486,7 +486,7 @@ GIT_EXTERN(size_t) git_diff_num_deltas_of_type(
*/ */
GIT_EXTERN(int) git_diff_get_patch( GIT_EXTERN(int) git_diff_get_patch(
git_diff_patch **patch, git_diff_patch **patch,
git_diff_delta **delta, const git_diff_delta **delta,
git_diff_list *diff, git_diff_list *diff,
size_t idx); size_t idx);
...@@ -525,7 +525,7 @@ GIT_EXTERN(size_t) git_diff_patch_num_hunks( ...@@ -525,7 +525,7 @@ GIT_EXTERN(size_t) git_diff_patch_num_hunks(
* @return 0 on success, GIT_ENOTFOUND if hunk_idx out of range, <0 on error * @return 0 on success, GIT_ENOTFOUND if hunk_idx out of range, <0 on error
*/ */
GIT_EXTERN(int) git_diff_patch_get_hunk( GIT_EXTERN(int) git_diff_patch_get_hunk(
git_diff_range **range, const git_diff_range **range,
const char **header, const char **header,
size_t *header_len, size_t *header_len,
size_t *lines_in_hunk, size_t *lines_in_hunk,
...@@ -595,7 +595,7 @@ GIT_EXTERN(int) git_diff_patch_get_line_in_hunk( ...@@ -595,7 +595,7 @@ GIT_EXTERN(int) git_diff_patch_get_line_in_hunk(
GIT_EXTERN(int) git_diff_blobs( GIT_EXTERN(int) git_diff_blobs(
git_blob *old_blob, git_blob *old_blob,
git_blob *new_blob, git_blob *new_blob,
git_diff_options *options, const git_diff_options *options,
void *cb_data, void *cb_data,
git_diff_file_fn file_cb, git_diff_file_fn file_cb,
git_diff_hunk_fn hunk_cb, git_diff_hunk_fn hunk_cb,
......
...@@ -126,7 +126,7 @@ static int blob_content_to_link(git_blob *blob, const char *path, bool can_symli ...@@ -126,7 +126,7 @@ static int blob_content_to_link(git_blob *blob, const char *path, bool can_symli
static int checkout_blob( static int checkout_blob(
git_repository *repo, git_repository *repo,
git_oid *blob_oid, const git_oid *blob_oid,
const char *path, const char *path,
mode_t filemode, mode_t filemode,
bool can_symlink, bool can_symlink,
...@@ -150,7 +150,7 @@ static int checkout_blob( ...@@ -150,7 +150,7 @@ static int checkout_blob(
static int checkout_diff_fn( static int checkout_diff_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
float progress) float progress)
{ {
struct checkout_diff_data *data; struct checkout_diff_data *data;
......
...@@ -809,7 +809,7 @@ on_error: ...@@ -809,7 +809,7 @@ on_error:
bool git_diff_delta__should_skip( bool git_diff_delta__should_skip(
git_diff_options *opts, git_diff_delta *delta) const git_diff_options *opts, const git_diff_delta *delta)
{ {
uint32_t flags = opts ? opts->flags : 0; uint32_t flags = opts ? opts->flags : 0;
......
...@@ -51,7 +51,7 @@ extern void git_diff__cleanup_modes( ...@@ -51,7 +51,7 @@ extern void git_diff__cleanup_modes(
extern void git_diff_list_addref(git_diff_list *diff); extern void git_diff_list_addref(git_diff_list *diff);
extern bool git_diff_delta__should_skip( extern bool git_diff_delta__should_skip(
git_diff_options *opts, git_diff_delta *delta); const git_diff_options *opts, const git_diff_delta *delta);
#endif #endif
...@@ -177,7 +177,7 @@ static int diff_delta_is_binary_by_size( ...@@ -177,7 +177,7 @@ static int diff_delta_is_binary_by_size(
} }
static void setup_xdiff_options( static void setup_xdiff_options(
git_diff_options *opts, xdemitconf_t *cfg, xpparam_t *param) const git_diff_options *opts, xdemitconf_t *cfg, xpparam_t *param)
{ {
memset(cfg, 0, sizeof(xdemitconf_t)); memset(cfg, 0, sizeof(xdemitconf_t));
memset(param, 0, sizeof(xpparam_t)); memset(param, 0, sizeof(xpparam_t));
...@@ -371,7 +371,7 @@ static void diff_context_init( ...@@ -371,7 +371,7 @@ static void diff_context_init(
diff_context *ctxt, diff_context *ctxt,
git_diff_list *diff, git_diff_list *diff,
git_repository *repo, git_repository *repo,
git_diff_options *opts, const git_diff_options *opts,
void *data, void *data,
git_diff_file_fn file_cb, git_diff_file_fn file_cb,
git_diff_hunk_fn hunk_cb, git_diff_hunk_fn hunk_cb,
...@@ -696,8 +696,8 @@ static void diff_patch_free(git_diff_patch *patch) ...@@ -696,8 +696,8 @@ static void diff_patch_free(git_diff_patch *patch)
static int diff_patch_hunk_cb( static int diff_patch_hunk_cb(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
const char *header, const char *header,
size_t header_len) size_t header_len)
{ {
...@@ -743,8 +743,8 @@ static int diff_patch_hunk_cb( ...@@ -743,8 +743,8 @@ static int diff_patch_hunk_cb(
static int diff_patch_line_cb( static int diff_patch_line_cb(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, char line_origin,
const char *content, const char *content,
size_t content_len) size_t content_len)
...@@ -905,7 +905,8 @@ char git_diff_status_char(git_delta_t status) ...@@ -905,7 +905,8 @@ char git_diff_status_char(git_delta_t status)
return code; return code;
} }
static int print_compact(void *data, git_diff_delta *delta, float progress) static int print_compact(
void *data, const git_diff_delta *delta, float progress)
{ {
diff_print_info *pi = data; diff_print_info *pi = data;
char old_suffix, new_suffix, code = git_diff_status_char(delta->status); char old_suffix, new_suffix, code = git_diff_status_char(delta->status);
...@@ -967,7 +968,7 @@ int git_diff_print_compact( ...@@ -967,7 +968,7 @@ int git_diff_print_compact(
return error; return error;
} }
static int print_oid_range(diff_print_info *pi, git_diff_delta *delta) static int print_oid_range(diff_print_info *pi, const git_diff_delta *delta)
{ {
char start_oid[8], end_oid[8]; char start_oid[8], end_oid[8];
...@@ -997,7 +998,8 @@ static int print_oid_range(diff_print_info *pi, git_diff_delta *delta) ...@@ -997,7 +998,8 @@ static int print_oid_range(diff_print_info *pi, git_diff_delta *delta)
return 0; return 0;
} }
static int print_patch_file(void *data, git_diff_delta *delta, float progress) static int print_patch_file(
void *data, const git_diff_delta *delta, float progress)
{ {
diff_print_info *pi = data; diff_print_info *pi = data;
const char *oldpfx = pi->diff->opts.old_prefix; const char *oldpfx = pi->diff->opts.old_prefix;
...@@ -1064,8 +1066,8 @@ static int print_patch_file(void *data, git_diff_delta *delta, float progress) ...@@ -1064,8 +1066,8 @@ static int print_patch_file(void *data, git_diff_delta *delta, float progress)
static int print_patch_hunk( static int print_patch_hunk(
void *data, void *data,
git_diff_delta *d, const git_diff_delta *d,
git_diff_range *r, const git_diff_range *r,
const char *header, const char *header,
size_t header_len) size_t header_len)
{ {
...@@ -1087,8 +1089,8 @@ static int print_patch_hunk( ...@@ -1087,8 +1089,8 @@ static int print_patch_hunk(
static int print_patch_line( static int print_patch_line(
void *data, void *data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, /* GIT_DIFF_LINE value from above */ char line_origin, /* GIT_DIFF_LINE value from above */
const char *content, const char *content,
size_t content_len) size_t content_len)
...@@ -1158,7 +1160,7 @@ static void set_data_from_blob( ...@@ -1158,7 +1160,7 @@ static void set_data_from_blob(
int git_diff_blobs( int git_diff_blobs(
git_blob *old_blob, git_blob *old_blob,
git_blob *new_blob, git_blob *new_blob,
git_diff_options *options, const git_diff_options *options,
void *cb_data, void *cb_data,
git_diff_file_fn file_cb, git_diff_file_fn file_cb,
git_diff_hunk_fn hunk_cb, git_diff_hunk_fn hunk_cb,
...@@ -1253,7 +1255,7 @@ size_t git_diff_num_deltas_of_type(git_diff_list *diff, git_delta_t type) ...@@ -1253,7 +1255,7 @@ size_t git_diff_num_deltas_of_type(git_diff_list *diff, git_delta_t type)
int git_diff_get_patch( int git_diff_get_patch(
git_diff_patch **patch_ptr, git_diff_patch **patch_ptr,
git_diff_delta **delta_ptr, const git_diff_delta **delta_ptr,
git_diff_list *diff, git_diff_list *diff,
size_t idx) size_t idx)
{ {
...@@ -1326,7 +1328,7 @@ size_t git_diff_patch_num_hunks(git_diff_patch *patch) ...@@ -1326,7 +1328,7 @@ size_t git_diff_patch_num_hunks(git_diff_patch *patch)
} }
int git_diff_patch_get_hunk( int git_diff_patch_get_hunk(
git_diff_range **range, const git_diff_range **range,
const char **header, const char **header,
size_t *header_len, size_t *header_len,
size_t *lines_in_hunk, size_t *lines_in_hunk,
......
...@@ -26,7 +26,7 @@ enum { ...@@ -26,7 +26,7 @@ enum {
typedef struct { typedef struct {
git_repository *repo; git_repository *repo;
git_diff_list *diff; git_diff_list *diff;
git_diff_options *opts; const git_diff_options *opts;
git_diff_file_fn file_cb; git_diff_file_fn file_cb;
git_diff_hunk_fn hunk_cb; git_diff_hunk_fn hunk_cb;
git_diff_data_fn data_cb; git_diff_data_fn data_cb;
......
...@@ -23,7 +23,7 @@ git_tree *resolve_commit_oid_to_tree( ...@@ -23,7 +23,7 @@ git_tree *resolve_commit_oid_to_tree(
int diff_file_fn( int diff_file_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
float progress) float progress)
{ {
diff_expects *e = cb_data; diff_expects *e = cb_data;
...@@ -48,8 +48,8 @@ int diff_file_fn( ...@@ -48,8 +48,8 @@ int diff_file_fn(
int diff_hunk_fn( int diff_hunk_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
const char *header, const char *header,
size_t header_len) size_t header_len)
{ {
...@@ -67,8 +67,8 @@ int diff_hunk_fn( ...@@ -67,8 +67,8 @@ int diff_hunk_fn(
int diff_line_fn( int diff_line_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, char line_origin,
const char *content, const char *content,
size_t content_len) size_t content_len)
...@@ -116,7 +116,7 @@ int diff_foreach_via_iterator( ...@@ -116,7 +116,7 @@ int diff_foreach_via_iterator(
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_patch *patch; git_diff_patch *patch;
git_diff_delta *delta; const git_diff_delta *delta;
size_t h, num_h; size_t h, num_h;
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d)); cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
...@@ -142,7 +142,7 @@ int diff_foreach_via_iterator( ...@@ -142,7 +142,7 @@ int diff_foreach_via_iterator(
num_h = git_diff_patch_num_hunks(patch); num_h = git_diff_patch_num_hunks(patch);
for (h = 0; h < num_h; h++) { for (h = 0; h < num_h; h++) {
git_diff_range *range; const git_diff_range *range;
const char *hdr; const char *hdr;
size_t hdr_len, l, num_l; size_t hdr_len, l, num_l;
......
...@@ -27,20 +27,20 @@ typedef struct { ...@@ -27,20 +27,20 @@ typedef struct {
extern int diff_file_fn( extern int diff_file_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
float progress); float progress);
extern int diff_hunk_fn( extern int diff_hunk_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
const char *header, const char *header,
size_t header_len); size_t header_len);
extern int diff_line_fn( extern int diff_line_fn(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, char line_origin,
const char *content, const char *content,
size_t content_len); size_t content_len);
......
...@@ -20,7 +20,7 @@ void test_diff_diffiter__create(void) ...@@ -20,7 +20,7 @@ void test_diff_diffiter__create(void)
num_d = git_diff_num_deltas(diff); num_d = git_diff_num_deltas(diff);
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_delta *delta; const git_diff_delta *delta;
cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d)); cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d));
} }
...@@ -40,7 +40,7 @@ void test_diff_diffiter__iterate_files(void) ...@@ -40,7 +40,7 @@ void test_diff_diffiter__iterate_files(void)
cl_assert_equal_i(6, num_d); cl_assert_equal_i(6, num_d);
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_delta *delta; const git_diff_delta *delta;
cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d)); cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d));
cl_assert(delta != NULL); cl_assert(delta != NULL);
count++; count++;
...@@ -63,7 +63,7 @@ void test_diff_diffiter__iterate_files_2(void) ...@@ -63,7 +63,7 @@ void test_diff_diffiter__iterate_files_2(void)
cl_assert_equal_i(8, num_d); cl_assert_equal_i(8, num_d);
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_delta *delta; const git_diff_delta *delta;
cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d)); cl_git_pass(git_diff_get_patch(NULL, &delta, diff, d));
cl_assert(delta != NULL); cl_assert(delta != NULL);
count++; count++;
...@@ -91,7 +91,7 @@ void test_diff_diffiter__iterate_files_and_hunks(void) ...@@ -91,7 +91,7 @@ void test_diff_diffiter__iterate_files_and_hunks(void)
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_patch *patch; git_diff_patch *patch;
git_diff_delta *delta; const git_diff_delta *delta;
size_t h, num_h; size_t h, num_h;
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d)); cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
...@@ -104,7 +104,7 @@ void test_diff_diffiter__iterate_files_and_hunks(void) ...@@ -104,7 +104,7 @@ void test_diff_diffiter__iterate_files_and_hunks(void)
num_h = git_diff_patch_num_hunks(patch); num_h = git_diff_patch_num_hunks(patch);
for (h = 0; h < num_h; h++) { for (h = 0; h < num_h; h++) {
git_diff_range *range; const git_diff_range *range;
const char *header; const char *header;
size_t header_len, num_l; size_t header_len, num_l;
...@@ -143,7 +143,7 @@ void test_diff_diffiter__max_size_threshold(void) ...@@ -143,7 +143,7 @@ void test_diff_diffiter__max_size_threshold(void)
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_patch *patch; git_diff_patch *patch;
git_diff_delta *delta; const git_diff_delta *delta;
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d)); cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
cl_assert(delta); cl_assert(delta);
...@@ -178,7 +178,7 @@ void test_diff_diffiter__max_size_threshold(void) ...@@ -178,7 +178,7 @@ void test_diff_diffiter__max_size_threshold(void)
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_patch *patch; git_diff_patch *patch;
git_diff_delta *delta; const git_diff_delta *delta;
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d)); cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
...@@ -221,7 +221,7 @@ void test_diff_diffiter__iterate_all(void) ...@@ -221,7 +221,7 @@ void test_diff_diffiter__iterate_all(void)
num_d = git_diff_num_deltas(diff); num_d = git_diff_num_deltas(diff);
for (d = 0; d < num_d; ++d) { for (d = 0; d < num_d; ++d) {
git_diff_patch *patch; git_diff_patch *patch;
git_diff_delta *delta; const git_diff_delta *delta;
size_t h, num_h; size_t h, num_h;
cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d)); cl_git_pass(git_diff_get_patch(&patch, &delta, diff, d));
...@@ -230,7 +230,7 @@ void test_diff_diffiter__iterate_all(void) ...@@ -230,7 +230,7 @@ void test_diff_diffiter__iterate_all(void)
num_h = git_diff_patch_num_hunks(patch); num_h = git_diff_patch_num_hunks(patch);
for (h = 0; h < num_h; h++) { for (h = 0; h < num_h; h++) {
git_diff_range *range; const git_diff_range *range;
const char *header; const char *header;
size_t header_len, l, num_l; size_t header_len, l, num_l;
......
...@@ -93,7 +93,7 @@ void test_diff_index__0(void) ...@@ -93,7 +93,7 @@ void test_diff_index__0(void)
static int diff_stop_after_2_files( static int diff_stop_after_2_files(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
float progress) float progress)
{ {
diff_expects *e = cb_data; diff_expects *e = cb_data;
......
...@@ -23,8 +23,8 @@ void test_diff_patch__cleanup(void) ...@@ -23,8 +23,8 @@ void test_diff_patch__cleanup(void)
static int check_removal_cb( static int check_removal_cb(
void *cb_data, void *cb_data,
git_diff_delta *delta, const git_diff_delta *delta,
git_diff_range *range, const git_diff_range *range,
char line_origin, char line_origin,
const char *formatted_output, const char *formatted_output,
size_t output_len) size_t output_len)
......
...@@ -265,9 +265,9 @@ void test_diff_tree__larger_hunks(void) ...@@ -265,9 +265,9 @@ void test_diff_tree__larger_hunks(void)
git_diff_options opts = {0}; git_diff_options opts = {0};
git_diff_list *diff = NULL; git_diff_list *diff = NULL;
size_t d, num_d, h, num_h, l, num_l, header_len, line_len; size_t d, num_d, h, num_h, l, num_l, header_len, line_len;
git_diff_delta *delta; const git_diff_delta *delta;
git_diff_patch *patch; git_diff_patch *patch;
git_diff_range *range; const git_diff_range *range;
const char *header, *line; const char *header, *line;
char origin; char origin;
......
...@@ -691,7 +691,7 @@ void test_diff_workdir__larger_hunks(void) ...@@ -691,7 +691,7 @@ void test_diff_workdir__larger_hunks(void)
for (i = 0; i <= 2; ++i) { for (i = 0; i <= 2; ++i) {
git_diff_list *diff = NULL; git_diff_list *diff = NULL;
git_diff_patch *patch; git_diff_patch *patch;
git_diff_range *range; const git_diff_range *range;
const char *header, *line; const char *header, *line;
char origin; char origin;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment