httpd-apreq-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From j...@apache.org
Subject svn commit: r306819 - in /httpd/apreq/trunk: ./ glue/perl/xsbuilder/APR/Request/ glue/perl/xsbuilder/APR/Request/Cookie/ glue/perl/xsbuilder/APR/Request/Param/ glue/perl/xsbuilder/maps/
Date Thu, 06 Oct 2005 17:51:53 GMT
Author: joes
Date: Thu Oct  6 10:51:44 2005
New Revision: 306819

URL: http://svn.apache.org/viewcvs?rev=306819&view=rev
Log:
  Move APR::Request::Param::Table and APR::Request::Cookie::Table
  packages to APR::Request module.

Modified:
    httpd/apreq/trunk/CHANGES
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/APR__Request.h
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pm
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pod
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.xs
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pm
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pod
    httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.xs
    httpd/apreq/trunk/glue/perl/xsbuilder/maps/apreq_functions.map

Modified: httpd/apreq/trunk/CHANGES
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/CHANGES?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/CHANGES (original)
+++ httpd/apreq/trunk/CHANGES Thu Oct  6 10:51:44 2005
@@ -4,6 +4,11 @@
 
 @section v2_07 Changes with libapreq2-2.07
 
+
+- Perl API [joes]
+  Move APR::Request::Param::Table and APR::Request::Cookie::Table
+  packages to APR::Request module.
+
 - Perl XS [Steve Hay]
   Fix compile problems on Win32 without PERL_IMPLICIT_SYS
   related to link being an unresolved symbol.

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/APR__Request.h
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/APR__Request.h?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/APR__Request.h (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/APR__Request.h Thu Oct  6 10:51:44 2005
@@ -442,3 +442,330 @@
 
     return s;
 }
+
+
+static int apreq_xs_cookie_table_do_sub(void *data, const char *key,
+                                       const char *val)
+{
+    struct apreq_xs_do_arg *d = data;
+    apreq_cookie_t *c = apreq_value_to_cookie(val);
+    dTHXa(d->perl);
+    dSP;
+    SV *sv = apreq_xs_cookie2sv(aTHX_ c, d->pkg, d->parent);
+    int rv;
+
+    ENTER;
+    SAVETMPS;
+
+    PUSHMARK(SP);
+    EXTEND(SP,2);
+
+    PUSHs(sv_2mortal(newSVpvn(c->v.name, c->v.nlen)));
+    PUSHs(sv_2mortal(sv));
+
+    PUTBACK;
+    rv = call_sv(d->sub, G_SCALAR);
+    SPAGAIN;
+    rv = (1 == rv) ? POPi : 1;
+    PUTBACK;
+    FREETMPS;
+    LEAVE;
+
+    return rv;
+}
+
+MP_STATIC XS(apreq_xs_cookie_table_do)
+{
+    dXSARGS;
+    struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX };
+    const apr_table_t *t;
+    int i, rv = 1;
+    SV *sv, *t_obj;
+    IV iv;
+    MAGIC *mg;
+
+    if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1)))
+        Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)");
+    sv = ST(0);
+
+    t_obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
+    iv = SvIVX(t_obj);
+    t = INT2PTR(const apr_table_t *, iv);
+    mg = mg_find(t_obj, PERL_MAGIC_ext);
+    d.parent = mg->mg_obj;
+    d.pkg = mg->mg_ptr;
+    d.sub = ST(1);
+
+    if (items == 2) {
+        rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, NULL);
+        XSRETURN_IV(rv);
+    }
+
+    for (i = 2; i < items; ++i) {
+        const char *key = SvPV_nolen(ST(i));
+        rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, key, NULL);
+        if (rv == 0)
+            break;
+    }
+    XSRETURN_IV(rv);
+}
+
+MP_STATIC XS(apreq_xs_cookie_table_FETCH)
+{
+    dXSARGS;
+    const apr_table_t *t;
+    const char *cookie_class;
+    SV *sv, *obj, *parent;
+    IV iv;
+    MAGIC *mg;
+
+    if (items != 2 || !SvROK(ST(0))
+        || !sv_derived_from(ST(0), COOKIE_TABLE_CLASS))
+        Perl_croak(aTHX_ "Usage: " COOKIE_TABLE_CLASS "::FETCH($table, $key)");
+
+    sv = ST(0);
+
+    obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
+    iv = SvIVX(obj);
+    t = INT2PTR(const apr_table_t *, iv);
+
+    mg = mg_find(obj, PERL_MAGIC_ext);
+    cookie_class = mg->mg_ptr;
+    parent = mg->mg_obj;
+
+    if (GIMME_V == G_SCALAR) {
+        IV idx;
+        const char *key, *val;
+        const apr_array_header_t *arr;
+        apr_table_entry_t *te;
+        key = SvPV_nolen(ST(1));
+
+        idx = SvCUR(obj);
+        arr = apr_table_elts(t);
+        te  = (apr_table_entry_t *)arr->elts;
+
+        if (idx > 0 && idx <= arr->nelts
+            && !strcasecmp(key, te[idx-1].key))
+            val = te[idx-1].val;
+        else
+            val = apr_table_get(t, key);
+
+        if (val != NULL) {
+            apreq_cookie_t *c = apreq_value_to_cookie(val);
+            ST(0) = apreq_xs_cookie2sv(aTHX_ c, cookie_class, parent);
+            sv_2mortal(ST(0));
+            XSRETURN(1);
+        }
+        else {
+            XSRETURN_UNDEF;
+        }
+    }
+    else if (GIMME_V == G_ARRAY) {
+        struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX};
+        d.pkg = cookie_class;
+        d.parent = parent;
+        XSprePUSH;
+        PUTBACK;
+        apr_table_do(apreq_xs_cookie_table_values, &d, t, SvPV_nolen(ST(1)), NULL);
+    }
+    else
+        XSRETURN(0);
+}
+
+MP_STATIC XS(apreq_xs_cookie_table_NEXTKEY)
+{
+    dXSARGS;
+    SV *sv, *obj;
+    IV iv, idx;
+    const apr_table_t *t;
+    const apr_array_header_t *arr;
+    apr_table_entry_t *te;
+
+    if (!SvROK(ST(0)))
+        Perl_croak(aTHX_ "Usage: $table->NEXTKEY($prev)");
+
+    sv  = ST(0);
+    obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
+
+    iv = SvIVX(obj);
+    t = INT2PTR(const apr_table_t *, iv);
+    arr = apr_table_elts(t);
+    te  = (apr_table_entry_t *)arr->elts;
+
+    if (items == 1)
+        SvCUR(obj) = 0;
+
+    if (SvCUR(obj) >= arr->nelts) {
+        SvCUR(obj) = 0;
+        XSRETURN_UNDEF;
+    }
+    idx = SvCUR(obj)++;
+    sv = newSVpv(te[idx].key, 0);
+    ST(0) = sv_2mortal(sv);
+    XSRETURN(1);
+}
+
+
+static int apreq_xs_param_table_do_sub(void *data, const char *key,
+                                       const char *val)
+{
+    struct apreq_xs_do_arg *d = data;
+    apreq_param_t *p = apreq_value_to_param(val);
+    dTHXa(d->perl);
+    dSP;
+    SV *sv = apreq_xs_param2sv(aTHX_ p, d->pkg, d->parent);
+    int rv;
+
+    ENTER;
+    SAVETMPS;
+
+    PUSHMARK(SP);
+    EXTEND(SP,2);
+
+    PUSHs(sv_2mortal(newSVpvn(p->v.name, p->v.nlen)));
+    PUSHs(sv_2mortal(sv));
+
+    PUTBACK;
+    rv = call_sv(d->sub, G_SCALAR);
+    SPAGAIN;
+    rv = (1 == rv) ? POPi : 1;
+    PUTBACK;
+    FREETMPS;
+    LEAVE;
+
+    return rv;
+}
+
+MP_STATIC XS(apreq_xs_param_table_do)
+{
+    dXSARGS;
+    struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX };
+    const apr_table_t *t;
+    int i, rv = 1;
+    SV *sv, *t_obj;
+    IV iv;
+    MAGIC *mg;
+
+    if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1)))
+        Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)");
+    sv = ST(0);
+
+    t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't');
+    iv = SvIVX(t_obj);
+    t = INT2PTR(const apr_table_t *, iv);
+    mg = mg_find(t_obj, PERL_MAGIC_ext);
+    d.parent = mg->mg_obj;
+    d.pkg = mg->mg_ptr;
+    d.sub = ST(1);
+
+    if (items == 2) {
+        rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, NULL);
+        XSRETURN_IV(rv);
+    }
+
+    for (i = 2; i < items; ++i) {
+        const char *key = SvPV_nolen(ST(i));
+        rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, key, NULL);
+        if (rv == 0)
+            break;
+    }
+    XSRETURN_IV(rv);
+}
+
+MP_STATIC XS(apreq_xs_param_table_FETCH)
+{
+    dXSARGS;
+    const apr_table_t *t;
+    const char *param_class;
+    SV *sv, *t_obj, *parent;
+    IV iv;
+    MAGIC *mg;
+
+    if (items != 2 || !SvROK(ST(0))
+        || !sv_derived_from(ST(0), PARAM_TABLE_CLASS))
+        Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::FETCH($table, $key)");
+
+    sv = ST(0);
+
+    t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't');
+    iv = SvIVX(t_obj);
+    t = INT2PTR(const apr_table_t *, iv);
+
+    mg = mg_find(t_obj, PERL_MAGIC_ext);
+    param_class = mg->mg_ptr;
+    parent = mg->mg_obj;
+
+
+    if (GIMME_V == G_SCALAR) {
+        IV idx;
+        const char *key, *val;
+        const apr_array_header_t *arr;
+        apr_table_entry_t *te;
+        key = SvPV_nolen(ST(1));
+
+        idx = SvCUR(t_obj);
+        arr = apr_table_elts(t);
+        te  = (apr_table_entry_t *)arr->elts;
+
+        if (idx > 0 && idx <= arr->nelts
+            && !strcasecmp(key, te[idx-1].key))
+            val = te[idx-1].val;
+        else
+            val = apr_table_get(t, key);
+
+        if (val != NULL) {
+            apreq_param_t *p = apreq_value_to_param(val);
+            ST(0) = apreq_xs_param2sv(aTHX_ p, param_class, parent);
+            sv_2mortal(ST(0));
+            XSRETURN(1);
+        }
+        else {
+            XSRETURN_UNDEF;
+        }
+    }
+    else if (GIMME_V == G_ARRAY) {
+        struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX};
+        d.pkg = param_class;
+        d.parent = parent;
+        XSprePUSH;
+        PUTBACK;
+        apr_table_do(apreq_xs_param_table_values, &d, t, SvPV_nolen(ST(1)), NULL);
+    }
+    else
+        XSRETURN(0);
+}
+
+MP_STATIC XS(apreq_xs_param_table_NEXTKEY)
+{
+    dXSARGS;
+    SV *sv, *obj;
+    IV iv, idx;
+    const apr_table_t *t;
+    const apr_array_header_t *arr;
+    apr_table_entry_t *te;
+
+    if (!SvROK(ST(0)) || !sv_derived_from(ST(0), PARAM_TABLE_CLASS))
+        Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::NEXTKEY($table, $key)");
+
+    sv  = ST(0);
+    obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS,'t');
+
+    iv = SvIVX(obj);
+    t = INT2PTR(const apr_table_t *, iv);
+    arr = apr_table_elts(t);
+    te  = (apr_table_entry_t *)arr->elts;
+
+    if (items == 1)
+        SvCUR(obj) = 0;
+
+    if (SvCUR(obj) >= arr->nelts) {
+        SvCUR(obj) = 0;
+        XSRETURN_UNDEF;
+    }
+    idx = SvCUR(obj)++;
+    sv = newSVpv(te[idx].key, 0);
+    ST(0) = sv_2mortal(sv);
+    XSRETURN(1);
+}
+
+

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/APR__Request__Cookie.h Thu Oct
 6 10:51:44 2005
@@ -1,179 +1,3 @@
-static int apreq_xs_cookie_table_values(void *data, const char *key,
-                                        const char *val)
-{
-    struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data;
-    dTHXa(d->perl);
-    dSP;
-    apreq_cookie_t *c = apreq_value_to_cookie(val);
-    SV *sv = apreq_xs_cookie2sv(aTHX_ c, d->pkg, d->parent);
-
-    XPUSHs(sv_2mortal(sv));
-    PUTBACK;
-    return 1;
-}
-
-static int apreq_xs_cookie_table_do_sub(void *data, const char *key,
-                                       const char *val)
-{
-    struct apreq_xs_do_arg *d = data;
-    apreq_cookie_t *c = apreq_value_to_cookie(val);
-    dTHXa(d->perl);
-    dSP;
-    SV *sv = apreq_xs_cookie2sv(aTHX_ c, d->pkg, d->parent);
-    int rv;
-
-    ENTER;
-    SAVETMPS;
-
-    PUSHMARK(SP);
-    EXTEND(SP,2);
-
-    PUSHs(sv_2mortal(newSVpvn(c->v.name, c->v.nlen)));
-    PUSHs(sv_2mortal(sv));
-
-    PUTBACK;
-    rv = call_sv(d->sub, G_SCALAR);
-    SPAGAIN;
-    rv = (1 == rv) ? POPi : 1;
-    PUTBACK;
-    FREETMPS;
-    LEAVE;
-
-    return rv;
-}
-
-MP_STATIC XS(apreq_xs_cookie_table_do)
-{
-    dXSARGS;
-    struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX };
-    const apr_table_t *t;
-    int i, rv = 1;
-    SV *sv, *t_obj;
-    IV iv;
-    MAGIC *mg;
-
-    if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1)))
-        Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)");
-    sv = ST(0);
-
-    t_obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
-    iv = SvIVX(t_obj);
-    t = INT2PTR(const apr_table_t *, iv);
-    mg = mg_find(t_obj, PERL_MAGIC_ext);
-    d.parent = mg->mg_obj;
-    d.pkg = mg->mg_ptr;
-    d.sub = ST(1);
-
-    if (items == 2) {
-        rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, NULL);
-        XSRETURN_IV(rv);
-    }
-
-    for (i = 2; i < items; ++i) {
-        const char *key = SvPV_nolen(ST(i));
-        rv = apr_table_do(apreq_xs_cookie_table_do_sub, &d, t, key, NULL);
-        if (rv == 0)
-            break;
-    }
-    XSRETURN_IV(rv);
-}
-
-MP_STATIC XS(apreq_xs_cookie_table_FETCH)
-{
-    dXSARGS;
-    const apr_table_t *t;
-    const char *cookie_class;
-    SV *sv, *obj, *parent;
-    IV iv;
-    MAGIC *mg;
-
-    if (items != 2 || !SvROK(ST(0))
-        || !sv_derived_from(ST(0), COOKIE_TABLE_CLASS))
-        Perl_croak(aTHX_ "Usage: " COOKIE_TABLE_CLASS "::FETCH($table, $key)");
-
-    sv = ST(0);
-
-    obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
-    iv = SvIVX(obj);
-    t = INT2PTR(const apr_table_t *, iv);
-
-    mg = mg_find(obj, PERL_MAGIC_ext);
-    cookie_class = mg->mg_ptr;
-    parent = mg->mg_obj;
-
-    if (GIMME_V == G_SCALAR) {
-        IV idx;
-        const char *key, *val;
-        const apr_array_header_t *arr;
-        apr_table_entry_t *te;
-        key = SvPV_nolen(ST(1));
-
-        idx = SvCUR(obj);
-        arr = apr_table_elts(t);
-        te  = (apr_table_entry_t *)arr->elts;
-
-        if (idx > 0 && idx <= arr->nelts
-            && !strcasecmp(key, te[idx-1].key))
-            val = te[idx-1].val;
-        else
-            val = apr_table_get(t, key);
-
-        if (val != NULL) {
-            apreq_cookie_t *c = apreq_value_to_cookie(val);
-            ST(0) = apreq_xs_cookie2sv(aTHX_ c, cookie_class, parent);
-            sv_2mortal(ST(0));
-            XSRETURN(1);
-        }
-        else {
-            XSRETURN_UNDEF;
-        }
-    }
-    else if (GIMME_V == G_ARRAY) {
-        struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX};
-        d.pkg = cookie_class;
-        d.parent = parent;
-        XSprePUSH;
-        PUTBACK;
-        apr_table_do(apreq_xs_cookie_table_values, &d, t, SvPV_nolen(ST(1)), NULL);
-    }
-    else
-        XSRETURN(0);
-}
-
-MP_STATIC XS(apreq_xs_cookie_table_NEXTKEY)
-{
-    dXSARGS;
-    SV *sv, *obj;
-    IV iv, idx;
-    const apr_table_t *t;
-    const apr_array_header_t *arr;
-    apr_table_entry_t *te;
-
-    if (!SvROK(ST(0)))
-        Perl_croak(aTHX_ "Usage: $table->NEXTKEY($prev)");
-
-    sv  = ST(0);
-    obj = apreq_xs_sv2object(aTHX_ sv, COOKIE_TABLE_CLASS, 't');
-
-    iv = SvIVX(obj);
-    t = INT2PTR(const apr_table_t *, iv);
-    arr = apr_table_elts(t);
-    te  = (apr_table_entry_t *)arr->elts;
-
-    if (items == 1)
-        SvCUR(obj) = 0;
-
-    if (SvCUR(obj) >= arr->nelts) {
-        SvCUR(obj) = 0;
-        XSRETURN_UNDEF;
-    }
-    idx = SvCUR(obj)++;
-    sv = newSVpv(te[idx].key, 0);
-    ST(0) = sv_2mortal(sv);
-    XSRETURN(1);
-}
-
-
 MP_STATIC XS(XS_APR__Request__Cookie_nil)
 {
     dXSARGS;

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pm Thu Oct  6 10:51:44
2005
@@ -22,10 +22,3 @@
     my $obj = shift;
     return "$obj";
 }
-
-package APR::Request::Cookie::Table;
-
-sub EXISTS {
-    my ($t, $key) = @_;
-    return defined $t->FETCH($key);
-}

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.pod Thu Oct  6 10:51:44
2005
@@ -64,8 +64,7 @@
 a few utility functions and constants.
 
 This manpage documents version 2.07
-of the APR::Request::Cookie and
-APR::Request::Cookie::Table packages.
+of the APR::Request::Cookie package.
 
 
 
@@ -298,116 +297,9 @@
 
 
 
-=head1 METHODS
-
-  APR::Request::Cookie::Table - read-only version of APR::Table.
-
-Tables in this class normally arise from calls to
-C<< APR::Request::jar() >>.
-
-
-
-
-=head2 cookie_class
-
-    $table->cookie_class()
-    $table->cookie_class($set)
-
-Get/set the class each table element is blessed into during a
-L<get> or L<FETCH> call.  If defined, the class must be derived
-from APR::Request::Cookie.  When called with $set, it returns
-the $table.  Otherwise it returns the name of the current class,
-or undef if no cookie class is defined.
-
-
-
-=for example begin
-
-    {
-        package FOO;
-        @ISA= 'APR::Request::Cookie';
-    }
-
-    $jar->cookie_class("FOO");
-    ok $_->isa("FOO") for values %$jar;
-
-=for example end
-
-=for example_testing
-    $jar->do(sub { ok $_[1]->isa("FOO"); });
-
-
-
-
-=head2 get
-
-    $table->get($key)
-
-Same as FETCH.
-
-
-
-=head2 FETCH
-
-    $table->FETCH($key)
-
-In scalar context, this returns the first value matching
-$key (note: see NEXTKEY for additional notes).  The match
-is always case-insensitive.  In list context, this returns
-all matching values.  Note: the type of the return values
-depends on the table's current cookie_class.
-
-
-
-
-=head2 EXISTS
-
-Synonym for C<< defined >>; these tables are not
-allowed to contain undefined values. Since these
-are constant tables, they don't autovivify either.
-
-
-
-
-=head2 FIRSTKEY
-
-    $table->FIRSTKEY()
-
-Returns the first key in the table.
-
-
-
-
-=head2 NEXTKEY
-
-    $table->NEXTKEY()
-
-Returns the next key in the table.  For perl 5.8+,
-if the key is multivalued, a subsequent FETCH on
-this key will return the corresponding value, until
-either NEXTKEY or FIRSTKEY is invoked again.  For
-perl 5.6, FETCH always returns the first value.
-
-
-
-
-=head2 do
-
-    $table->do($callback, @keys)
-
-Same as APR::Table::do; iterates over the table
-calling $callback->($key, $value) for each matching
-@keys.  If @keys is empty, this iterates over the
-entire table.
-
-Note: The type of $value inserted into the callback
-depends on the table's current cookie_class.
-
-
-
 =head1 SEE ALSO
 
-L<< Apache2::Cookie >>, L<< APR::Request >>, L<< APR::Table
>>.
+L<< Apache2::Cookie >>, L<< APR::Request >>.
 
 
 

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Cookie/Cookie.xs Thu Oct  6 10:51:44
2005
@@ -265,44 +265,3 @@
   OUTPUT:
     RETVAL
 
-MODULE = APR::Request::Cookie PACKAGE = APR::Request::Cookie::Table
-
-SV *
-cookie_class(t, subclass=&PL_sv_undef)
-    APR::Request::Cookie::Table t
-    SV *subclass
-
-  PREINIT:
-    SV *obj = apreq_xs_sv2object(aTHX_ ST(0), COOKIE_TABLE_CLASS, 't');
-    MAGIC *mg = mg_find(obj, PERL_MAGIC_ext);
-    char *curclass = mg->mg_ptr;
-
-  CODE:
-
-    if (items == 2) {
-        if (!SvOK(subclass)) {
-            mg->mg_ptr = NULL;
-            mg->mg_len = 0;
-        }
-        else if (!sv_derived_from(subclass, COOKIE_CLASS)) {
-            Perl_croak(aTHX_ "Usage: "
-                             COOKIE_TABLE_CLASS "::cookie_class($table, $class): "
-                             "class %s is not derived from " COOKIE_CLASS,
-                             SvPV_nolen(subclass));
-        }
-        else {
-            STRLEN len;
-            mg->mg_ptr = savepv(SvPV(subclass, len));
-            mg->mg_len = len;
-        }
-        if (curclass != NULL)
-            Safefree(curclass);
-
-        XSRETURN(1);
-    }
-
-    RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0);
-
-  OUTPUT:
-    RETVAL
-

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/APR__Request__Param.h Thu Oct
 6 10:51:44 2005
@@ -1,181 +1,3 @@
-static int apreq_xs_param_table_values(void *data, const char *key,
-                                       const char *val)
-{
-    struct apreq_xs_do_arg *d = (struct apreq_xs_do_arg *)data;
-    dTHXa(d->perl);
-    dSP;
-    apreq_param_t *p = apreq_value_to_param(val);
-    SV *sv = apreq_xs_param2sv(aTHX_ p, d->pkg, d->parent);
-
-    XPUSHs(sv_2mortal(sv));
-    PUTBACK;
-    return 1;
-}
-
-
-static int apreq_xs_param_table_do_sub(void *data, const char *key,
-                                       const char *val)
-{
-    struct apreq_xs_do_arg *d = data;
-    apreq_param_t *p = apreq_value_to_param(val);
-    dTHXa(d->perl);
-    dSP;
-    SV *sv = apreq_xs_param2sv(aTHX_ p, d->pkg, d->parent);
-    int rv;
-
-    ENTER;
-    SAVETMPS;
-
-    PUSHMARK(SP);
-    EXTEND(SP,2);
-
-    PUSHs(sv_2mortal(newSVpvn(p->v.name, p->v.nlen)));
-    PUSHs(sv_2mortal(sv));
-
-    PUTBACK;
-    rv = call_sv(d->sub, G_SCALAR);
-    SPAGAIN;
-    rv = (1 == rv) ? POPi : 1;
-    PUTBACK;
-    FREETMPS;
-    LEAVE;
-
-    return rv;
-}
-
-MP_STATIC XS(apreq_xs_param_table_do)
-{
-    dXSARGS;
-    struct apreq_xs_do_arg d = { NULL, NULL, NULL, aTHX };
-    const apr_table_t *t;
-    int i, rv = 1;
-    SV *sv, *t_obj;
-    IV iv;
-    MAGIC *mg;
-
-    if (items < 2 || !SvROK(ST(0)) || !SvROK(ST(1)))
-        Perl_croak(aTHX_ "Usage: $object->do(\\&callback, @keys)");
-    sv = ST(0);
-
-    t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't');
-    iv = SvIVX(t_obj);
-    t = INT2PTR(const apr_table_t *, iv);
-    mg = mg_find(t_obj, PERL_MAGIC_ext);
-    d.parent = mg->mg_obj;
-    d.pkg = mg->mg_ptr;
-    d.sub = ST(1);
-
-    if (items == 2) {
-        rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, NULL);
-        XSRETURN_IV(rv);
-    }
-
-    for (i = 2; i < items; ++i) {
-        const char *key = SvPV_nolen(ST(i));
-        rv = apr_table_do(apreq_xs_param_table_do_sub, &d, t, key, NULL);
-        if (rv == 0)
-            break;
-    }
-    XSRETURN_IV(rv);
-}
-
-MP_STATIC XS(apreq_xs_param_table_FETCH)
-{
-    dXSARGS;
-    const apr_table_t *t;
-    const char *param_class;
-    SV *sv, *t_obj, *parent;
-    IV iv;
-    MAGIC *mg;
-
-    if (items != 2 || !SvROK(ST(0))
-        || !sv_derived_from(ST(0), PARAM_TABLE_CLASS))
-        Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::FETCH($table, $key)");
-
-    sv = ST(0);
-
-    t_obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS, 't');
-    iv = SvIVX(t_obj);
-    t = INT2PTR(const apr_table_t *, iv);
-
-    mg = mg_find(t_obj, PERL_MAGIC_ext);
-    param_class = mg->mg_ptr;
-    parent = mg->mg_obj;
-
-
-    if (GIMME_V == G_SCALAR) {
-        IV idx;
-        const char *key, *val;
-        const apr_array_header_t *arr;
-        apr_table_entry_t *te;
-        key = SvPV_nolen(ST(1));
-
-        idx = SvCUR(t_obj);
-        arr = apr_table_elts(t);
-        te  = (apr_table_entry_t *)arr->elts;
-
-        if (idx > 0 && idx <= arr->nelts
-            && !strcasecmp(key, te[idx-1].key))
-            val = te[idx-1].val;
-        else
-            val = apr_table_get(t, key);
-
-        if (val != NULL) {
-            apreq_param_t *p = apreq_value_to_param(val);
-            ST(0) = apreq_xs_param2sv(aTHX_ p, param_class, parent);
-            sv_2mortal(ST(0));
-            XSRETURN(1);
-        }
-        else {
-            XSRETURN_UNDEF;
-        }
-    }
-    else if (GIMME_V == G_ARRAY) {
-        struct apreq_xs_do_arg d = {NULL, NULL, NULL, aTHX};
-        d.pkg = param_class;
-        d.parent = parent;
-        XSprePUSH;
-        PUTBACK;
-        apr_table_do(apreq_xs_param_table_values, &d, t, SvPV_nolen(ST(1)), NULL);
-    }
-    else
-        XSRETURN(0);
-}
-
-MP_STATIC XS(apreq_xs_param_table_NEXTKEY)
-{
-    dXSARGS;
-    SV *sv, *obj;
-    IV iv, idx;
-    const apr_table_t *t;
-    const apr_array_header_t *arr;
-    apr_table_entry_t *te;
-
-    if (!SvROK(ST(0)) || !sv_derived_from(ST(0), PARAM_TABLE_CLASS))
-        Perl_croak(aTHX_ "Usage: " PARAM_TABLE_CLASS "::NEXTKEY($table, $key)");
-
-    sv  = ST(0);
-    obj = apreq_xs_sv2object(aTHX_ sv, PARAM_TABLE_CLASS,'t');
-
-    iv = SvIVX(obj);
-    t = INT2PTR(const apr_table_t *, iv);
-    arr = apr_table_elts(t);
-    te  = (apr_table_entry_t *)arr->elts;
-
-    if (items == 1)
-        SvCUR(obj) = 0;
-
-    if (SvCUR(obj) >= arr->nelts) {
-        SvCUR(obj) = 0;
-        XSRETURN_UNDEF;
-    }
-    idx = SvCUR(obj)++;
-    sv = newSVpv(te[idx].key, 0);
-    ST(0) = sv_2mortal(sv);
-    XSRETURN(1);
-}
-
-
 MP_STATIC XS(XS_APR__Request__Param_nil)
 {
     dXSARGS;

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pm
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pm?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pm (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pm Thu Oct  6 10:51:44 2005
@@ -21,10 +21,3 @@
 
 package APR::Request::Brigade::IO;
 push our(@ISA), ();
-
-package APR::Request::Param::Table;
-
-sub EXISTS {
-    my ($t, $key) = @_;
-    return defined $t->FETCH($key);
-}

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pod
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pod?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pod (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.pod Thu Oct  6 10:51:44
2005
@@ -76,7 +76,7 @@
 
 This manpage documents version 2.07
 of the APR::Request::Param, APR::Request::Brigade,
-and APR::Request::Param::Table packages.
+and APR::Request::Brigade::IO packages.
 
 
 =head1 OVERLOADS
@@ -265,95 +265,6 @@
     $param->upload_fh
 
 Returns a seekable filehandle representing the file-upload content.
-
-
-
-
-=head1 METHODS
-
-APR::Request::Param::Table
-
-
-
-
-=head2 param_class
-
-    $table->param_class()
-    $table->param_class($set)
-
-
-Get/set the class each table element is blessed into during a
-C<get> or C<FETCH> call.  If defined, the class must be derived
-from APR::Request::Param.  When called with $set, it returns
-the $table.  Otherwise it returns the name of the current class,
-or undef if no param class is defined.
-
-
-
-
-=head2 get
-
-    $table->get($key)
-
-Same as FETCH.
-
-
-
-
-=head2 FETCH
-
-    $table->FETCH($key)
-
-In scalar context, this returns the first value matching
-$key (see NEXTKEY for additional notes on this).  The match
-is always case-insensitive.  In list context, this returns
-all matching values.  Note: the type of the return values
-depends on the table's current param_class.
-
-
-
-=head2 EXISTS
-
-Synonym for C<< defined >>; these tables are not
-allowed to contain undefined values. Since these
-are constant tables, they don't autovivify either.
-
-
-
-
-=head2 NEXTKEY
-
-    $table->NEXTKEY()
-
-Returns the next key in the table.  For perl 5.8+,
-if the key is multivalued, a subsequent FETCH on
-this key will return the corresponding value, until
-either NEXTKEY or FIRSTKEY is invoked again.  For
-perl 5.6, FETCH always returns the first value.
-
-
-
-
-=head2 FIRSTKEY
-
-    $table->FIRSTKEY()
-
-Returns the first key in the table.
-
-
-
-
-=head2 do
-
-    $table->do($callback, @keys)
-
-Same as APR::Table::do; iterates over the table
-calling $callback->($key, $value) for each matching
-@keys.  If @keys is empty, this iterates over the
-entire table.
-
-Note: The type of $value inserted into the callback
-depends on the table's current value_class.
 
 
 

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.xs
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.xs?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.xs (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Param/Param.xs Thu Oct  6 10:51:44 2005
@@ -1,7 +1,8 @@
 /* On Win32 without PERL_IMPLICIT_SYS, PerlLIO_link is #defined as
  * link, which in turn is #defined as win32_link, but mp2's 
  * modperl_perl_unembed.h #undefs link, leaving link as an unresolved 
- * symbol when linking Param.dll. */
+ * symbol when linking Param.dll.
+ */
 #ifdef WIN32
 #ifndef PERL_IMPLICIT_SYS
 #undef PerlLIO_link
@@ -133,49 +134,6 @@
     RETVAL = apreq_param_make(pool, n, nlen, v, vlen);
     if (SvTAINTED(name) || SvTAINTED(val))
         apreq_param_tainted_on(RETVAL);
-
-  OUTPUT:
-    RETVAL
-
-
-MODULE = APR::Request::Param PACKAGE = APR::Request::Param::Table
-
-SV *
-param_class(t, subclass=&PL_sv_undef)
-    APR::Request::Param::Table t
-    SV *subclass
-
-  PREINIT:
-    SV *obj = apreq_xs_sv2object(aTHX_ ST(0), PARAM_TABLE_CLASS, 't');
-    MAGIC *mg = mg_find(obj, PERL_MAGIC_ext);
-    char *curclass = mg->mg_ptr;
-
-  CODE:
-
-    if (items == 2) {
-        if (!SvOK(subclass)) {
-            mg->mg_ptr = NULL;
-            mg->mg_len = 0;
-        }
-        else if (!sv_derived_from(subclass, PARAM_CLASS)) {
-            Perl_croak(aTHX_ "Usage: "
-                              PARAM_TABLE_CLASS "::param_class($table, $class): "
-                             "class %s is not derived from " PARAM_CLASS,
-                              SvPV_nolen(subclass));
-        }
-        else {
-            STRLEN len;
-            mg->mg_ptr = savepv(SvPV(subclass, len));
-            mg->mg_len = len;
-
-        }
-        if (curclass != NULL)
-            Safefree(curclass);
-
-        XSRETURN(1);
-    }
-
-    RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0);
 
   OUTPUT:
     RETVAL

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pm
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pm?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pm (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pm Thu Oct  6 10:51:44 2005
@@ -34,3 +34,17 @@
 
 package APR::Request::Custom;
 our @ISA = qw/APR::Request/;
+
+package APR::Request::Cookie::Table;
+
+sub EXISTS {
+    my ($t, $key) = @_;
+    return defined $t->FETCH($key);
+}
+
+package APR::Request::Param::Table;
+
+sub EXISTS {
+    my ($t, $key) = @_;
+    return defined $t->FETCH($key);
+}

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pod
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pod?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pod (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.pod Thu Oct  6 10:51:44 2005
@@ -52,7 +52,9 @@
 a few utility functions and constants.
 
 This manpage documents version 2.07
-of the APR::Request and APR::Request::Custom packages.
+of the APR::Request, APR::Request::Custom,
+APR::Request::Cookie::Table, and
+APR::Request::Param::Table packages.
 
 
 
@@ -321,6 +323,202 @@
 	}
 
 
+
+
+
+=head1 METHODS
+
+  APR::Request::Cookie::Table - read-only version of APR::Table.
+
+Tables in this class normally arise from calls to
+C<< APR::Request::jar() >>.
+
+
+
+
+=head2 cookie_class
+
+    $table->cookie_class()
+    $table->cookie_class($set)
+
+Get/set the class each table element is blessed into during a
+L<get> or L<FETCH> call.  If defined, the class must be derived
+from APR::Request::Cookie.  When called with $set, it returns
+the $table.  Otherwise it returns the name of the current class,
+or undef if no cookie class is defined.
+
+
+
+=for example begin
+
+    {
+        package FOO;
+        @ISA= 'APR::Request::Cookie';
+    }
+
+    $jar->cookie_class("FOO");
+    ok $_->isa("FOO") for values %$jar;
+
+=for example end
+
+=for example_testing
+    $jar->do(sub { ok $_[1]->isa("FOO"); });
+
+
+
+
+=head2 get
+
+    $table->get($key)
+
+Same as FETCH.
+
+
+
+=head2 FETCH
+
+    $table->FETCH($key)
+
+In scalar context, this returns the first value matching
+$key (note: see NEXTKEY for additional notes).  The match
+is always case-insensitive.  In list context, this returns
+all matching values.  Note: the type of the return values
+depends on the table's current cookie_class.
+
+
+
+
+=head2 EXISTS
+
+Synonym for C<< defined >>; these tables are not
+allowed to contain undefined values. Since these
+are constant tables, they don't autovivify either.
+
+
+
+
+=head2 FIRSTKEY
+
+    $table->FIRSTKEY()
+
+Returns the first key in the table.
+
+
+
+
+=head2 NEXTKEY
+
+    $table->NEXTKEY()
+
+Returns the next key in the table.  For perl 5.8+,
+if the key is multivalued, a subsequent FETCH on
+this key will return the corresponding value, until
+either NEXTKEY or FIRSTKEY is invoked again.  For
+perl 5.6, FETCH always returns the first value.
+
+
+
+
+=head2 do
+
+    $table->do($callback, @keys)
+
+Same as APR::Table::do; iterates over the table
+calling $callback->($key, $value) for each matching
+@keys.  If @keys is empty, this iterates over the
+entire table.
+
+Note: The type of $value inserted into the callback
+depends on the table's current cookie_class.
+
+
+
+
+=head1 METHODS
+
+APR::Request::Param::Table
+
+
+
+
+=head2 param_class
+
+    $table->param_class()
+    $table->param_class($set)
+
+
+Get/set the class each table element is blessed into during a
+C<get> or C<FETCH> call.  If defined, the class must be derived
+from APR::Request::Param.  When called with $set, it returns
+the $table.  Otherwise it returns the name of the current class,
+or undef if no param class is defined.
+
+
+
+
+=head2 get
+
+    $table->get($key)
+
+Same as FETCH.
+
+
+
+
+=head2 FETCH
+
+    $table->FETCH($key)
+
+In scalar context, this returns the first value matching
+$key (see NEXTKEY for additional notes on this).  The match
+is always case-insensitive.  In list context, this returns
+all matching values.  Note: the type of the return values
+depends on the table's current param_class.
+
+
+
+=head2 EXISTS
+
+Synonym for C<< defined >>; these tables are not
+allowed to contain undefined values. Since these
+are constant tables, they don't autovivify either.
+
+
+
+
+=head2 NEXTKEY
+
+    $table->NEXTKEY()
+
+Returns the next key in the table.  For perl 5.8+,
+if the key is multivalued, a subsequent FETCH on
+this key will return the corresponding value, until
+either NEXTKEY or FIRSTKEY is invoked again.  For
+perl 5.6, FETCH always returns the first value.
+
+
+
+
+=head2 FIRSTKEY
+
+    $table->FIRSTKEY()
+
+Returns the first key in the table.
+
+
+
+
+=head2 do
+
+    $table->do($callback, @keys)
+
+Same as APR::Table::do; iterates over the table
+calling $callback->($key, $value) for each matching
+@keys.  If @keys is empty, this iterates over the
+entire table.
+
+Note: The type of $value inserted into the callback
+depends on the table's current value_class.
 
 
 

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.xs
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.xs?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.xs (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/APR/Request/Request.xs Thu Oct  6 10:51:44 2005
@@ -270,6 +270,92 @@
   OUTPUT:
     RETVAL
 
+
+MODULE = APR::Request::Param PACKAGE = APR::Request::Param::Table
+
+SV *
+param_class(t, subclass=&PL_sv_undef)
+    APR::Request::Param::Table t
+    SV *subclass
+
+  PREINIT:
+    SV *obj = apreq_xs_sv2object(aTHX_ ST(0), PARAM_TABLE_CLASS, 't');
+    MAGIC *mg = mg_find(obj, PERL_MAGIC_ext);
+    char *curclass = mg->mg_ptr;
+
+  CODE:
+
+    if (items == 2) {
+        if (!SvOK(subclass)) {
+            mg->mg_ptr = NULL;
+            mg->mg_len = 0;
+        }
+        else if (!sv_derived_from(subclass, PARAM_CLASS)) {
+            Perl_croak(aTHX_ "Usage: "
+                              PARAM_TABLE_CLASS "::param_class($table, $class): "
+                             "class %s is not derived from " PARAM_CLASS,
+                              SvPV_nolen(subclass));
+        }
+        else {
+            STRLEN len;
+            mg->mg_ptr = savepv(SvPV(subclass, len));
+            mg->mg_len = len;
+
+        }
+        if (curclass != NULL)
+            Safefree(curclass);
+
+        XSRETURN(1);
+    }
+
+    RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0);
+
+  OUTPUT:
+    RETVAL
+
+
+MODULE = APR::Request::Cookie PACKAGE = APR::Request::Cookie::Table
+
+SV *
+cookie_class(t, subclass=&PL_sv_undef)
+    APR::Request::Cookie::Table t
+    SV *subclass
+
+  PREINIT:
+    SV *obj = apreq_xs_sv2object(aTHX_ ST(0), COOKIE_TABLE_CLASS, 't');
+    MAGIC *mg = mg_find(obj, PERL_MAGIC_ext);
+    char *curclass = mg->mg_ptr;
+
+  CODE:
+
+    if (items == 2) {
+        if (!SvOK(subclass)) {
+            mg->mg_ptr = NULL;
+            mg->mg_len = 0;
+        }
+        else if (!sv_derived_from(subclass, COOKIE_CLASS)) {
+            Perl_croak(aTHX_ "Usage: "
+                             COOKIE_TABLE_CLASS "::cookie_class($table, $class): "
+                             "class %s is not derived from " COOKIE_CLASS,
+                             SvPV_nolen(subclass));
+        }
+        else {
+            STRLEN len;
+            mg->mg_ptr = savepv(SvPV(subclass, len));
+            mg->mg_len = len;
+        }
+        if (curclass != NULL)
+            Safefree(curclass);
+
+        XSRETURN(1);
+    }
+
+    RETVAL = (curclass == NULL) ? &PL_sv_undef : newSVpv(curclass, 0);
+
+  OUTPUT:
+    RETVAL
+
+
 MODULE = APR::Request  PACKAGE = APR::Request::Custom
 
 APR::Request

Modified: httpd/apreq/trunk/glue/perl/xsbuilder/maps/apreq_functions.map
URL: http://svn.apache.org/viewcvs/httpd/apreq/trunk/glue/perl/xsbuilder/maps/apreq_functions.map?rev=306819&r1=306818&r2=306819&view=diff
==============================================================================
--- httpd/apreq/trunk/glue/perl/xsbuilder/maps/apreq_functions.map (original)
+++ httpd/apreq/trunk/glue/perl/xsbuilder/maps/apreq_functions.map Thu Oct  6 10:51:44 2005
@@ -16,7 +16,7 @@
 MODULE=APR::Request::Cookie PACKAGE=APR::Request::Cookie PREFIX=apreq_cookie_
 apreq_cookie_expires
 
-MODULE=APR::Request::Cookie PACKAGE=APR::Request::Cookie::Table PREFIX=APR__Request__Cookie__Table_
+MODULE=APR::Request PACKAGE=APR::Request::Cookie::Table PREFIX=APR__Request__Cookie__Table_
 DEFINE_get      | apreq_xs_cookie_table_FETCH |
 DEFINE_FETCH    | apreq_xs_cookie_table_FETCH |
 DEFINE_NEXTKEY  | apreq_xs_cookie_table_NEXTKEY |
@@ -33,7 +33,7 @@
 DEFINE_body   | apreq_xs_body  |
 DEFINE_param  | apreq_xs_param |
 
-MODULE=APR::Request::Param PACKAGE=APR::Request::Param::Table PREFIX=APR__Request__Param__Table_
+MODULE=APR::Request PACKAGE=APR::Request::Param::Table PREFIX=APR__Request__Param__Table_
 DEFINE_get      | apreq_xs_param_table_FETCH |
 DEFINE_FETCH    | apreq_xs_param_table_FETCH |
 DEFINE_NEXTKEY  | apreq_xs_param_table_NEXTKEY |



Mime
View raw message