You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by pq...@apache.org on 2007/05/16 02:17:04 UTC

svn commit: r538391 - in /apr/apr/trunk: include/apr_tables.h tables/apr_tables.c test/testtable.c

Author: pquerna
Date: Tue May 15 17:17:03 2007
New Revision: 538391

URL: http://svn.apache.org/viewvc?view=rev&rev=538391
Log:
Add apr_array_clear() API.

* include/apr_tables.h
* tables/apr_tables.c
  (apr_array_clear): Declare and define new API.

* test/testtable.c
  (a1): Static variable for use across array tests.
  (array_clear): New test for apr_array_clear().
  (testtable): Add array_clear() to the test suite.

Submitted By: Daniel Rall <dlr apache.org>

Modified:
    apr/apr/trunk/include/apr_tables.h
    apr/apr/trunk/tables/apr_tables.c
    apr/apr/trunk/test/testtable.c

Modified: apr/apr/trunk/include/apr_tables.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/include/apr_tables.h?view=diff&rev=538391&r1=538390&r2=538391
==============================================================================
--- apr/apr/trunk/include/apr_tables.h (original)
+++ apr/apr/trunk/include/apr_tables.h Tue May 15 17:17:03 2007
@@ -148,6 +148,14 @@
 APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr);
 
 /**
+ * Remove all elements from an array.
+ * @param arr The array to remove all elements from.
+ * @remark As the underlying storage is allocated from a pool, no
+ * memory is freed by this operation, but is available for reuse.
+ */
+APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr);
+
+/**
  * Concatenate two arrays together
  * @param dst The destination array, and the one to go first in the combined 
  *            array

Modified: apr/apr/trunk/tables/apr_tables.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/tables/apr_tables.c?view=diff&rev=538391&r1=538390&r2=538391
==============================================================================
--- apr/apr/trunk/tables/apr_tables.c (original)
+++ apr/apr/trunk/tables/apr_tables.c Tue May 15 17:17:03 2007
@@ -90,6 +90,11 @@
     return res;
 }
 
+APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr)
+{
+    arr->nelts = 0;
+}
+
 APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr)
 {
     if (apr_is_empty_array(arr)) {

Modified: apr/apr/trunk/test/testtable.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/testtable.c?view=diff&rev=538391&r1=538390&r2=538391
==============================================================================
--- apr/apr/trunk/test/testtable.c (original)
+++ apr/apr/trunk/test/testtable.c Tue May 15 17:17:03 2007
@@ -30,8 +30,18 @@
 #include <string.h>
 #endif
 
+static apr_array_header_t *a1 = NULL;
 static apr_table_t *t1 = NULL;
 
+static void array_clear(abts_case *tc, void *data)
+{
+    a1 = apr_array_make(p, 2, sizeof(const char *));
+    APR_ARRAY_PUSH(a1, const char *) = "foo";
+    APR_ARRAY_PUSH(a1, const char *) = "bar";
+    apr_array_clear(a1);
+    ABTS_INT_EQUAL(tc, 0, a1->nelts);
+}
+
 static void table_make(abts_case *tc, void *data)
 {
     t1 = apr_table_make(p, 5);
@@ -174,6 +184,7 @@
 {
     suite = ADD_SUITE(suite)
 
+    abts_run_test(suite, array_clear, NULL);
     abts_run_test(suite, table_make, NULL);
     abts_run_test(suite, table_get, NULL);
     abts_run_test(suite, table_set, NULL);