You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by yl...@apache.org on 2015/03/13 12:57:26 UTC
svn commit: r1666411 - in /apr/apr/trunk: include/apr_skiplist.h
tables/apr_skiplist.c test/testskiplist.c
Author: ylavic
Date: Fri Mar 13 11:57:26 2015
New Revision: 1666411
URL: http://svn.apache.org/r1666411
Log:
skiplist: restore back add-if-not-exist semantic to apr_skiplist_insert(),
and hence add-next-to-any-existing semantic to apr_skiplist_add(), getting rid
of apr_skiplist_addne().
Modified:
apr/apr/trunk/include/apr_skiplist.h
apr/apr/trunk/tables/apr_skiplist.c
apr/apr/trunk/test/testskiplist.c
Modified: apr/apr/trunk/include/apr_skiplist.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/apr_skiplist.h?rev=1666411&r1=1666410&r2=1666411&view=diff
==============================================================================
--- apr/apr/trunk/include/apr_skiplist.h (original)
+++ apr/apr/trunk/include/apr_skiplist.h Fri Mar 13 11:57:26 2015
@@ -178,7 +178,7 @@ APR_DECLARE(void *) apr_skiplist_element
/**
* Insert an element into the skip list using the specified comparison function
- * allowing for duplicates.
+ * if it does not already exist.
* @param sl The skip list
* @param data The element to insert
* @param comp The comparison function to use for placement into the skip list
@@ -187,34 +187,34 @@ APR_DECLARE(apr_skiplistnode *) apr_skip
void *data, apr_skiplist_compare comp);
/**
- * Add an element into the skip list using the specified comparison function
+ * Insert an element into the skip list using the existing comparison function
* if it does not already exist.
* @param sl The skip list
- * @param data The element to add
- * @param comp The comparison function to use for placement into the skip list
+ * @param data The element to insert
+ * @remark If no comparison function has been set for the skip list, the element
+ * will not be inserted and NULL will be returned.
*/
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_addne_compare(apr_skiplist *sl,
- void *data, apr_skiplist_compare comp);
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist* sl, void *data);
/**
- * Add an element into the skip list using the existing comparison function
- * if it does not already exist.
+ * Add an element into the skip list using the specified comparison function
+ * allowing for duplicates.
* @param sl The skip list
- * @param data The element to insert
- * @remark If no comparison function has been set for the skip list, the element
- * will not be inserted and NULL will be returned.
+ * @param data The element to add
+ * @param comp The comparison function to use for placement into the skip list
*/
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_addne(apr_skiplist* sl, void *data);
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_add_compare(apr_skiplist *sl,
+ void *data, apr_skiplist_compare comp);
/**
- * Insert an element into the skip list using the existing comparison function
+ * Add an element into the skip list using the existing comparison function
* allowing for duplicates.
* @param sl The skip list
* @param data The element to insert
* @remark If no comparison function has been set for the skip list, the element
* will not be inserted and NULL will be returned.
*/
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist* sl, void *data);
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_add(apr_skiplist* sl, void *data);
/**
* Remove an element from the skip list using the specified comparison function for
Modified: apr/apr/trunk/tables/apr_skiplist.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/tables/apr_skiplist.c?rev=1666411&r1=1666410&r2=1666411&view=diff
==============================================================================
--- apr/apr/trunk/tables/apr_skiplist.c (original)
+++ apr/apr/trunk/tables/apr_skiplist.c Fri Mar 13 11:57:26 2015
@@ -517,37 +517,29 @@ static apr_skiplistnode *insert_compare(
APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert_compare(apr_skiplist *sl, void *data,
apr_skiplist_compare comp)
{
- return insert_compare(sl, data, comp, 1);
-}
-
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist *sl, void *data)
-{
- if (!sl->compare) {
+ if (!comp) {
return NULL;
}
- return insert_compare(sl, data, sl->compare, 1);
+ return insert_compare(sl, data, comp, 0);
}
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_addne_compare(apr_skiplist *sl, void *data,
- apr_skiplist_compare comp)
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_insert(apr_skiplist *sl, void *data)
{
- return insert_compare(sl, data, comp, 0);
+ return apr_skiplist_insert_compare(sl, data, sl->compare);
}
-APR_DECLARE(apr_skiplistnode *) apr_skiplist_addne(apr_skiplist *sl, void *data)
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_add_compare(apr_skiplist *sl, void *data,
+ apr_skiplist_compare comp)
{
- if (!sl->compare) {
+ if (!comp) {
return NULL;
}
- return insert_compare(sl, data, sl->compare, 0);
+ return insert_compare(sl, data, comp, 1);
}
-APR_DECLARE(int) apr_skiplist_remove(apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree)
+APR_DECLARE(apr_skiplistnode *) apr_skiplist_add(apr_skiplist *sl, void *data)
{
- if (!sl->compare) {
- return 0;
- }
- return apr_skiplist_remove_compare(sl, data, myfree, sl->comparek);
+ return apr_skiplist_add_compare(sl, data, sl->compare);
}
#if 0
@@ -618,6 +610,9 @@ APR_DECLARE(int) apr_skiplist_remove_com
{
apr_skiplistnode *m;
apr_skiplist *sl;
+ if (!comp) {
+ return 0;
+ }
if (comp == sli->comparek || !sli->index) {
sl = sli;
}
@@ -638,6 +633,11 @@ APR_DECLARE(int) apr_skiplist_remove_com
return skiplisti_remove(sl, m, myfree);
}
+APR_DECLARE(int) apr_skiplist_remove(apr_skiplist *sl, void *data, apr_skiplist_freefunc myfree)
+{
+ return apr_skiplist_remove_compare(sl, data, myfree, sl->comparek);
+}
+
APR_DECLARE(void) apr_skiplist_remove_all(apr_skiplist *sl, apr_skiplist_freefunc myfree)
{
/*
Modified: apr/apr/trunk/test/testskiplist.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/testskiplist.c?rev=1666411&r1=1666410&r2=1666411&view=diff
==============================================================================
--- apr/apr/trunk/test/testskiplist.c (original)
+++ apr/apr/trunk/test/testskiplist.c Fri Mar 13 11:57:26 2015
@@ -58,7 +58,7 @@ static void skiplist_find(abts_case *tc,
{
const char *val;
- apr_skiplist_addne(skiplist, "baton");
+ apr_skiplist_insert(skiplist, "baton");
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "baton", val);
@@ -72,13 +72,13 @@ static void skiplist_dontfind(abts_case
ABTS_PTR_EQUAL(tc, NULL, (void *)val);
}
-static void skiplist_addne(abts_case *tc, void *data)
+static void skiplist_insert(abts_case *tc, void *data)
{
const char *val;
int i, height = 0;
for (i = 0; i < 10; ++i) {
- apr_skiplist_addne(skiplist, "baton");
+ apr_skiplist_insert(skiplist, "baton");
ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
@@ -92,48 +92,48 @@ static void skiplist_addne(abts_case *tc
}
}
- apr_skiplist_addne(skiplist, "foo");
+ apr_skiplist_insert(skiplist, "foo");
ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "foo", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "foo", val);
- apr_skiplist_addne(skiplist, "atfirst");
+ apr_skiplist_insert(skiplist, "atfirst");
ABTS_TRUE(tc, 3 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "atfirst", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "atfirst", val);
}
-static void skiplist_insert(abts_case *tc, void *data)
+static void skiplist_add(abts_case *tc, void *data)
{
const char *val;
size_t i, n = skiplist_get_size(tc, skiplist);
for (i = 0; i < 100; ++i) {
n++;
- apr_skiplist_insert(skiplist, "daton");
+ apr_skiplist_add(skiplist, "daton");
ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "daton", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "daton", val);
n++;
- apr_skiplist_insert(skiplist, "baton");
+ apr_skiplist_add(skiplist, "baton");
ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "baton", val);
n++;
- apr_skiplist_insert(skiplist, "caton");
+ apr_skiplist_add(skiplist, "caton");
ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "caton", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "caton", val);
n++;
- apr_skiplist_insert(skiplist, "aaton");
+ apr_skiplist_add(skiplist, "aaton");
ABTS_TRUE(tc, n == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "aaton", NULL);
ABTS_PTR_NOTNULL(tc, val);
@@ -153,9 +153,9 @@ static void skiplist_size(abts_case *tc,
ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
- apr_skiplist_addne(skiplist, "abc");
- apr_skiplist_addne(skiplist, "ghi");
- apr_skiplist_addne(skiplist, "def");
+ apr_skiplist_insert(skiplist, "abc");
+ apr_skiplist_insert(skiplist, "ghi");
+ apr_skiplist_insert(skiplist, "def");
val = apr_skiplist_find(skiplist, "abc", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "abc", val);
@@ -176,13 +176,13 @@ static void skiplist_remove(abts_case *t
ABTS_TRUE(tc, 0 == skiplist_get_size(tc, skiplist));
- apr_skiplist_insert(skiplist, "baton");
+ apr_skiplist_add(skiplist, "baton");
ABTS_TRUE(tc, 1 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "baton", val);
- apr_skiplist_insert(skiplist, "baton");
+ apr_skiplist_add(skiplist, "baton");
ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
@@ -194,7 +194,7 @@ static void skiplist_remove(abts_case *t
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, "baton", val);
- apr_skiplist_insert(skiplist, "baton");
+ apr_skiplist_add(skiplist, "baton");
ABTS_TRUE(tc, 2 == skiplist_get_size(tc, skiplist));
val = apr_skiplist_find(skiplist, "baton", NULL);
ABTS_PTR_NOTNULL(tc, val);
@@ -231,7 +231,7 @@ static void skiplist_random_loop(abts_ca
else {
batons[i] = apr_pstrdup(ptmp, batons[i % NUM_RAND]);
}
- apr_skiplist_insert(sl, batons[i]);
+ apr_skiplist_add(sl, batons[i]);
val = apr_skiplist_find(sl, batons[i], NULL);
ABTS_PTR_NOTNULL(tc, val);
ABTS_STR_EQUAL(tc, batons[i], val);
@@ -249,13 +249,13 @@ typedef struct elem {
static void add_int_to_skiplist(apr_skiplist *list, int n){
int* a = apr_skiplist_alloc(list, sizeof(int));
*a = n;
- apr_skiplist_insert(list, a);
+ apr_skiplist_add(list, a);
}
static void add_elem_to_skiplist(apr_skiplist *list, elem n){
elem* a = apr_skiplist_alloc(list, sizeof(elem));
*a = n;
- apr_skiplist_insert(list, a);
+ apr_skiplist_add(list, a);
}
static int comp(void *a, void *b){
@@ -325,10 +325,10 @@ static void skiplist_test(abts_case *tc,
val = apr_skiplist_pop(list, NULL);
ABTS_PTR_EQUAL(tc, val, NULL);
- apr_skiplist_insert(list, &first_forty_two);
+ apr_skiplist_add(list, &first_forty_two);
add_int_to_skiplist(list, 1);
add_int_to_skiplist(list, 142);
- apr_skiplist_insert(list, &second_forty_two);
+ apr_skiplist_add(list, &second_forty_two);
val = apr_skiplist_peek(list);
ABTS_INT_EQUAL(tc, *val, 1);
val = apr_skiplist_pop(list, NULL);
@@ -381,8 +381,8 @@ abts_suite *testskiplist(abts_suite *sui
abts_run_test(suite, skiplist_init, NULL);
abts_run_test(suite, skiplist_find, NULL);
abts_run_test(suite, skiplist_dontfind, NULL);
- abts_run_test(suite, skiplist_addne, NULL);
abts_run_test(suite, skiplist_insert, NULL);
+ abts_run_test(suite, skiplist_add, NULL);
abts_run_test(suite, skiplist_destroy, NULL);
abts_run_test(suite, skiplist_size, NULL);
abts_run_test(suite, skiplist_remove, NULL);