C-sparse

 view release on metacpan or  search on metacpan

scripts/sparse.pl  view on Meta::CPAN

my $g = "
MODULE = C::sparse   PACKAGE = ${id}
PROTOTYPES: ENABLE

void
${name}(p,...)
        $typ p
    PREINIT:
        void *ptr; int i = 0;
        ${t}_t l; SPARSE_CTX_GEN(0);
    PPCODE:
        /*printf(\"e:%p x:%p %p\\n\",p->m, p->m->$n, p->m->$n->next);*/
        $ni; l = (${t}_t)(p->m->$n);
 	if (GIMME_V == G_ARRAY) {
	    while(l && !$nt(l)) {
	        EXTEND(SP, 1);
	        PUSHs(bless_${t}((${t}_t)l));
                l = l->$nn;
            }
        } else {
            EXTEND(SP, 1);

scripts/sparse.pl  view on Meta::CPAN


my $g = "
MODULE = C::sparse   PACKAGE = ${id}
PROTOTYPES: ENABLE

void
${name}(p,...)
        $typ p
    PREINIT:
        struct ptr_list *l; void *ptr; int i = 0;
    PPCODE:
        l = (struct ptr_list *)(p->m->$n);
 	if (GIMME_V == G_ARRAY) {
	    FOR_EACH_PTR(l, ptr) {
	        EXTEND(SP, 1);
	        PUSHs(bless_${t}((${t}_t)ptr));
            } END_FOR_EACH_PTR(ptr);
        } else {
            EXTEND(SP, 1);
	    FOR_EACH_PTR(l, ptr) { i++; } END_FOR_EACH_PTR(ptr);
            PUSHs(sv_2mortal(newSViv(i)));

sparse.xs  view on Meta::CPAN

        TRACE_ACTIVE ();

MODULE = C::sparse   PACKAGE = C::sparse
PROTOTYPES: ENABLE

void
streams(p,...)
	sparsectx p
    PREINIT:
    struct token *t; int cnt = 0; SPARSE_CTX_GEN(0); int id = 0; struct stream *s;
    PPCODE:
        SPARSE_CTX_SET((struct sparse_ctx *)p->m);
	while(s = stream_get(sctx_ id)) { 
	    if (GIMME_V == G_ARRAY) {
	        EXTEND(SP, 1);
		PUSHs(bless_stream (s));
            }
            id++; cnt++;
	}
 	if (GIMME_V == G_SCALAR) {
 	    EXTEND(SP, 1);
            PUSHs(sv_2mortal(newSViv(cnt)));
	}

void
symbols(p,...)
	sparsectx p
    PREINIT:
    struct token *t; int i, ns, cnt = 0; SPARSE_CTX_GEN(0); int id = 0; struct ptr_list *ptrlist; void *ptr; struct symbol *sym; struct ident *ident;
    PPCODE:
        SPARSE_CTX_SET((struct sparse_ctx *)p->m);
        if( items > 1 ) {
            ns = SvIV(ST(1));
	    for (i = 0; i < IDENT_HASH_SIZE; i++) {
            	ident = _sctx->hash_table[i];
 		while (ident) {
	            for (sym = ident->symbols; sym; sym = sym->next_id) {
		        if (sym->namespace & ns) {
	                    EXTEND(SP, 1);
		            PUSHs(bless_sym (sym));

sparse.xs  view on Meta::CPAN



MODULE = C::sparse   PACKAGE = C::sparse::tok
PROTOTYPES: ENABLE

void
list(p,...)
	sparsetok p
    PREINIT:
    struct token *t, *e = 0; int cnt = 0; SPARSE_CTX_GEN(0); sparsetok _e;
    PPCODE:
	t = p->m;
        SPARSE_CTX_SET(t->ctx);
	if (items >= 2 && sv_derived_from (ST(1), sparsetok_class)) {
	        _e = SvSPARSE_TOK(ST(1)); e = _e->m;
	}
        while(t != e && !eof_token(t)) {
	        cnt++;
 	    	if (GIMME_V == G_ARRAY) {
		   EXTEND(SP, 1);
		   PUSHs(bless_tok (t));

sparse.xs  view on Meta::CPAN

 	if (GIMME_V == G_SCALAR) {
 	    EXTEND(SP, 1);
            PUSHs(sv_2mortal(newSViv(cnt)));
	}

void
fold(p,...)
	sparsetok p
    PREINIT:
    struct token *t, *e = 0; int cnt = 0; SPARSE_CTX_GEN(0); sparsetok _e;
    PPCODE:
	t = p->m;
        SPARSE_CTX_SET(t->ctx);
	if (items >= 2 && sv_derived_from (ST(1), sparsetok_class)) {
	        _e = SvSPARSE_TOK(ST(1)); e = _e->m;
	}
        while(t != e && !eof_token(t)) {
	        cnt++;
 		t = t->next;
	}

void
tok2str(p,...)
	sparsetok p
    PREINIT:
        struct token *t; int cnt = 0; SPARSE_CTX_GEN(0); 
        int prec = 1; char *separator = ""; char *pre = "", *v;
        const char *n; SV *r;
    PPCODE:
        t = p->m;
        SPARSE_CTX_SET(t->ctx);
	EXTEND(SP, 1);
        n = show_token(sctx_ t);
/*if (t->space && t->space->data) { pre = (char *)t->space->data;}*/
        v = malloc(strlen(n) + strlen(pre) + 1);
        v[0] = 0; strcat(v, pre); strcat(v, n);
        PUSHs(sv_2mortal(newSVpv(v, strlen(v))));
        free(v);

src/sparse-0.4.4/perl/scripts/sparse.pl  view on Meta::CPAN

my $g = "
MODULE = C::sparse   PACKAGE = ${id}
PROTOTYPES: ENABLE

void
${name}(p,...)
        $typ p
    PREINIT:
        void *ptr; int i = 0;
        ${t}_t l; SPARSE_CTX_GEN(0);
    PPCODE:
        /*printf(\"e:%p x:%p %p\\n\",p->m, p->m->$n, p->m->$n->next);*/
        $ni; l = (${t}_t)(p->m->$n);
 	if (GIMME_V == G_ARRAY) {
	    while(l && !$nt(l)) {
	        EXTEND(SP, 1);
	        PUSHs(bless_${t}((${t}_t)l));
                l = l->$nn;
            }
        } else {
            EXTEND(SP, 1);

src/sparse-0.4.4/perl/scripts/sparse.pl  view on Meta::CPAN


my $g = "
MODULE = C::sparse   PACKAGE = ${id}
PROTOTYPES: ENABLE

void
${name}(p,...)
        $typ p
    PREINIT:
        struct ptr_list *l; void *ptr; int i = 0;
    PPCODE:
        l = (struct ptr_list *)(p->m->$n);
 	if (GIMME_V == G_ARRAY) {
	    FOR_EACH_PTR(l, ptr) {
	        EXTEND(SP, 1);
	        PUSHs(bless_${t}((${t}_t)ptr));
            } END_FOR_EACH_PTR(ptr);
        } else {
            EXTEND(SP, 1);
	    FOR_EACH_PTR(l, ptr) { i++; } END_FOR_EACH_PTR(ptr);
            PUSHs(sv_2mortal(newSViv(i)));

src/sparse-0.4.4/perl/sparse.xs  view on Meta::CPAN

        TRACE_ACTIVE ();

MODULE = C::sparse   PACKAGE = C::sparse
PROTOTYPES: ENABLE

void
streams(p,...)
	sparsectx p
    PREINIT:
    struct token *t; int cnt = 0; SPARSE_CTX_GEN(0); int id = 0; struct stream *s;
    PPCODE:
        SPARSE_CTX_SET((struct sparse_ctx *)p->m);
	while(s = stream_get(sctx_ id)) { 
	    if (GIMME_V == G_ARRAY) {
	        EXTEND(SP, 1);
		PUSHs(bless_stream (s));
            }
            id++; cnt++;
	}
 	if (GIMME_V == G_SCALAR) {
 	    EXTEND(SP, 1);
            PUSHs(sv_2mortal(newSViv(cnt)));
	}

void
symbols(p,...)
	sparsectx p
    PREINIT:
    struct token *t; int i, ns, cnt = 0; SPARSE_CTX_GEN(0); int id = 0; struct ptr_list *ptrlist; void *ptr; struct symbol *sym; struct ident *ident;
    PPCODE:
        SPARSE_CTX_SET((struct sparse_ctx *)p->m);
        if( items > 1 ) {
            ns = SvIV(ST(1));
	    for (i = 0; i < IDENT_HASH_SIZE; i++) {
            	ident = _sctx->hash_table[i];
 		while (ident) {
	            for (sym = ident->symbols; sym; sym = sym->next_id) {
		        if (sym->namespace & ns) {
	                    EXTEND(SP, 1);
		            PUSHs(bless_sym (sym));

src/sparse-0.4.4/perl/sparse.xs  view on Meta::CPAN



MODULE = C::sparse   PACKAGE = C::sparse::tok
PROTOTYPES: ENABLE

void
list(p,...)
	sparsetok p
    PREINIT:
    struct token *t, *e = 0; int cnt = 0; SPARSE_CTX_GEN(0); sparsetok _e;
    PPCODE:
	t = p->m;
        SPARSE_CTX_SET(t->ctx);
	if (items >= 2 && sv_derived_from (ST(1), sparsetok_class)) {
	        _e = SvSPARSE_TOK(ST(1)); e = _e->m;
	}
        while(t != e && !eof_token(t)) {
	        cnt++;
 	    	if (GIMME_V == G_ARRAY) {
		   EXTEND(SP, 1);
		   PUSHs(bless_tok (t));

src/sparse-0.4.4/perl/sparse.xs  view on Meta::CPAN

 	if (GIMME_V == G_SCALAR) {
 	    EXTEND(SP, 1);
            PUSHs(sv_2mortal(newSViv(cnt)));
	}

void
fold(p,...)
	sparsetok p
    PREINIT:
    struct token *t, *e = 0; int cnt = 0; SPARSE_CTX_GEN(0); sparsetok _e;
    PPCODE:
	t = p->m;
        SPARSE_CTX_SET(t->ctx);
	if (items >= 2 && sv_derived_from (ST(1), sparsetok_class)) {
	        _e = SvSPARSE_TOK(ST(1)); e = _e->m;
	}
        while(t != e && !eof_token(t)) {
	        cnt++;
 		t = t->next;
	}

void
tok2str(p,...)
	sparsetok p
    PREINIT:
        struct token *t; int cnt = 0; SPARSE_CTX_GEN(0); 
        int prec = 1; char *separator = ""; char *pre = "", *v;
        const char *n; SV *r;
    PPCODE:
        t = p->m;
        SPARSE_CTX_SET(t->ctx);
	EXTEND(SP, 1);
        n = show_token(sctx_ t);
/*if (t->space && t->space->data) { pre = (char *)t->space->data;}*/
        v = malloc(strlen(n) + strlen(pre) + 1);
        v[0] = 0; strcat(v, pre); strcat(v, n);
        PUSHs(sv_2mortal(newSVpv(v, strlen(v))));
        free(v);



( run in 1.085 second using v1.01-cache-2.11-cpan-71847e10f99 )