Jabber-mod_perl

 view release on metacpan or  search on metacpan

patches/NADs.xs  view on Meta::CPAN

SV *
my_nad_add_namespace (sv_n, sv_ns)
	SV *	sv_n
	SV *	sv_ns

SV *
my_nad_find_namespace (sv_n, sv_elem, sv_uri, sv_prefix)
	SV *	sv_n
	SV *	sv_elem
	SV *	sv_uri
	SV *	sv_prefix

SV *
my_nad_find_scoped_namespace (sv_n, sv_uri, sv_prefix)
	SV *	sv_n
	SV *	sv_uri
	SV *	sv_prefix

AV *
my_nad_list_namespaces (sv_n)
	SV *	sv_n

SV *
my_nad_nad_attr_name (sv_n, sv_attr)
	SV *	sv_n
	SV *	sv_attr

SV *
my_nad_nad_attr_val (sv_n, sv_attr)
	SV *	sv_n
	SV *	sv_attr

SV *
my_nad_nad_elem_name (sv_n, sv_elem)
	SV *	sv_n
	SV *	sv_elem

SV *
my_nad_nad_cdata (sv_n, sv_elem)
	SV *	sv_n
	SV *	sv_elem

SV *
my_nad_nad_uri (sv_n, sv_ns)
	SV *	sv_n
	SV *	sv_ns

SV *
my_nad_nad_uri_prefix (sv_n, sv_ns)
	SV *	sv_n
	SV *	sv_ns

void
my_nad_find_children (sv_n, sv_elem)
	SV *	sv_n
	SV *	sv_elem
    INIT:
        int depth, el;
        nad_t nad;

    PPCODE:
        nad = ((nad_t) SvIV(SvRV(sv_n)));
        el = SvIV(sv_elem);
        // find the children of the given node = + 1
        if (el >= 0){
          depth = nad->elems[el].depth + 1;
          for(el = el + 1; el < nad->ecur; el++)
          {
             if (nad->elems[el].depth < depth)
                break;
             if (nad->elems[el].depth == depth){
               XPUSHs(sv_2mortal(newSViv(el)));
             }
          }
        }


void
my_nad_attrs (sv_n, sv_elem)
	SV *	sv_n
	SV *	sv_elem
    INIT:
        int attr, el;
        nad_t nad;

    PPCODE:
        nad = ((nad_t) SvIV(SvRV(sv_n)));
        el = SvIV(sv_elem);
        if (el >= 0 && el < nad->ecur){
          attr = nad->elems[el].attr;
          while (attr >= 0){
            XPUSHs(sv_2mortal(newSViv(attr)));
            attr = nad->attrs[attr].next;
          }
        }



( run in 1.627 second using v1.01-cache-2.11-cpan-5511b514fd6 )