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)));
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));
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));
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 0.855 second using v1.01-cache-2.11-cpan-71847e10f99 )