GME  13
Classes | Defines | Typedefs | Functions
svn_sorts.h File Reference

all sorts of sorts. More...

Go to the source code of this file.

Classes

struct  svn_sort__item_t

Defines

#define MAX(a, b)   ((a) < (b) ? (b) : (a))
#define MIN(a, b)   ((a) < (b) ? (a) : (b))

Typedefs

typedef struct svn_sort__item_t svn_sort__item_t

Functions

int svn_sort_compare_items_as_paths (const svn_sort__item_t *a, const svn_sort__item_t *b)
int svn_sort_compare_items_lexically (const svn_sort__item_t *a, const svn_sort__item_t *b)
int svn_sort_compare_revisions (const void *a, const void *b)
int svn_sort_compare_paths (const void *a, const void *b)
int svn_sort_compare_ranges (const void *a, const void *b)
apr_array_header_tsvn_sort__hash (apr_hash_t *ht, int(*comparison_func)(const svn_sort__item_t *, const svn_sort__item_t *), apr_pool_t *pool)
int svn_sort__bsearch_lower_bound (const void *key, const apr_array_header_t *array, int(*compare_func)(const void *, const void *))
void svn_sort__array_insert (const void *new_element, apr_array_header_t *array, int insert_index)
void svn_sort__array_delete (apr_array_header_t *arr, int delete_index, int elements_to_delete)
void svn_sort__array_reverse (apr_array_header_t *array, apr_pool_t *scratch_pool)

Detailed Description

all sorts of sorts.

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ====================================================================

Definition in file svn_sorts.h.


Define Documentation

#define MAX (   a,
  b 
)    ((a) < (b) ? (b) : (a))

Definition at line 38 of file svn_sorts.h.

#define MIN (   a,
  b 
)    ((a) < (b) ? (a) : (b))

Definition at line 43 of file svn_sorts.h.


Typedef Documentation

This structure is used to hold a key/value from a hash table.

Note:
Private. For use by Subversion's own code only. See issue #1644.

Function Documentation

void svn_sort__array_delete ( apr_array_header_t arr,
int  delete_index,
int  elements_to_delete 
)
void svn_sort__array_insert ( const void *  new_element,
apr_array_header_t array,
int  insert_index 
)
void svn_sort__array_reverse ( apr_array_header_t array,
apr_pool_t scratch_pool 
)
int svn_sort__bsearch_lower_bound ( const void *  key,
const apr_array_header_t array,
int(*)(const void *, const void *)  compare_func 
)
apr_array_header_t* svn_sort__hash ( apr_hash_t ht,
int(*)(const svn_sort__item_t *, const svn_sort__item_t *)  comparison_func,
apr_pool_t pool 
)

Sort ht according to its keys, return an apr_array_header_t containing svn_sort__item_t structures holding those keys and values (i.e. for each svn_sort__item_t item in the returned array, item->key and item->size are the hash key, and item->value points to the hash value).

Storage is shared with the original hash, not copied.

comparison_func should take two svn_sort__item_t's and return an integer greater than, equal to, or less than 0, according as the first item is greater than, equal to, or less than the second.

Note:
Private. For use by Subversion's own code only. See issue #1644.
This function and the svn_sort__item_t should go over to APR.

Compare two svn_sort__item_t's, returning an integer greater than, equal to, or less than 0, according to whether the key of a is greater than, equal to, or less than the key of b as determined by comparing them with svn_path_compare_paths().

The key strings must be NULL-terminated, even though klen does not include the terminator.

This is useful for converting a hash into a sorted apr_array_header_t. For example, to convert hash hsh to a sorted array, do this:

This function works like svn_sort_compare_items_lexically() except that it orders children in subdirectories directly after their parents. This allows using the given ordering for a depth first walk, but at a performance penalty. Code that doesn't need this special behavior for children, e.g. when sorting files at a single directory level should use svn_sort_compare_items_lexically() instead.

Compare two svn_sort__item_t's, returning an integer greater than, equal to, or less than 0, according as a is greater than, equal to, or less than b according to a lexical key comparison. The keys are not required to be zero-terminated.

int svn_sort_compare_paths ( const void *  a,
const void *  b 
)

Compare two const char * paths, *a and *b, returning an integer greater than, equal to, or less than 0, using the same comparison rules as are used by svn_path_compare_paths().

This function is compatible for use with qsort().

Since:
New in 1.1.
int svn_sort_compare_ranges ( const void *  a,
const void *  b 
)

Compare two svn_merge_range_t *'s, *a and *b, returning an integer greater than, equal to, or less than 0 if the first range is greater than, equal to, or less than, the second range.

Both svn_merge_range_t *'s must describe forward merge ranges.

If *a and *b intersect then the range with the lower start revision is considered the lesser range. If the ranges' start revisions are equal then the range with the lower end revision is considered the lesser range.

Since:
New in 1.5
int svn_sort_compare_revisions ( const void *  a,
const void *  b 
)

Compare two svn_revnum_t's, returning an integer greater than, equal to, or less than 0, according as b is greater than, equal to, or less than a. Note that this sorts newest revision to oldest (IOW, descending order).

This function is compatible for use with qsort().

This is useful for converting an array of revisions into a sorted apr_array_header_t. You are responsible for detecting, preventing or removing duplicates.