diff options
author | Russell Belfer <rb@github.com> | 2012-09-10 09:59:14 -0700 |
---|---|---|
committer | Russell Belfer <rb@github.com> | 2012-09-10 09:59:14 -0700 |
commit | b36effa22e015871948daeea250b4996c663e11a (patch) | |
tree | 17841fe3ca402f27c255a60f6cf2f6698dc96d1c /src/diff_output.c | |
parent | 3a3deea80bb6555706f58006bdee8e878b0fd651 (diff) | |
download | libgit2-b36effa22e015871948daeea250b4996c663e11a.tar.gz |
Replace git_diff_iterator_num_files with progress
The `git_diff_iterator_num_files` API was problematic, since we
don't actually know the exact number of files to be iterated over
until we load those files into memory. This replaces it with a
new `git_diff_iterator_progress` API that goes from 0 to 1, and
moves and renamed the old API for the internal places that can
tolerate a max value instead of an exact value.
Diffstat (limited to 'src/diff_output.c')
-rw-r--r-- | src/diff_output.c | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/src/diff_output.c b/src/diff_output.c index 6ff880e95..f65d0057f 100644 --- a/src/diff_output.c +++ b/src/diff_output.c @@ -1115,7 +1115,6 @@ struct git_diff_iterator { diff_delta_context ctxt; size_t file_index; size_t next_index; - size_t file_count; git_pool hunks; size_t hunk_count; diffiter_hunk *hunk_head; @@ -1239,8 +1238,6 @@ int git_diff_iterator_new( git_diff_iterator **iterator_ptr, git_diff_list *diff) { - size_t i; - git_diff_delta *delta; git_diff_iterator *iter; assert(diff && iterator_ptr); @@ -1261,12 +1258,6 @@ int git_diff_iterator_new( git_pool_init(&iter->lines, sizeof(diffiter_line), 0) < 0) goto fail; - git_vector_foreach(&diff->deltas, i, delta) { - if (diff_delta_should_skip(iter->ctxt.opts, delta)) - continue; - iter->file_count++; - } - *iterator_ptr = iter; return 0; @@ -1284,9 +1275,14 @@ void git_diff_iterator_free(git_diff_iterator *iter) git__free(iter); } -int git_diff_iterator_num_files(git_diff_iterator *iter) +float git_diff_iterator_progress(git_diff_iterator *iter) +{ + return (float)iter->next_index / (float)iter->diff->deltas.length; +} + +int git_diff_iterator__max_files(git_diff_iterator *iter) { - return (int)iter->file_count; + return (int)iter->diff->deltas.length; } int git_diff_iterator_num_hunks_in_file(git_diff_iterator *iter) |