/* Ownership of return value is transferred to calling function. */ char *remaining_text (TokenizerPtr tok) { char *ret; char *ptroffset = (tok->text)+tok->offset; size_t len = strlen (ptroffset)+1; #ifdef HDEBUG ret = h_alloc (len, "ret", "remaining_text", 101); #else ret = g_malloc (len); #endif memcpy (ret, ptroffset, len); /*printf ("remaining_text returning: \"%s\"\n", ret);*/ return ret; }
TokenizerPtr new_tokenizer (char* text, char* delim) { TokenizerPtr tok; #ifdef HDEBUG tok = h_alloc (sizeof (Tokenizer), "tok", "new_tokenizer", 9); #else tok = g_malloc (sizeof (Tokenizer)); #endif /*printf ("new_tokenizer: \"%s\", \"%s\"\n", text, delim);*/ tok->text = text; tok->delim = delim; tok->delim_len = strlen (delim); tok->offset = 0; return tok; }
/* Ownership of return value is transferred to calling function. */ char *next_token (TokenizerPtr tok) { char *ret; char *ptroffset = (tok->text)+tok->offset; size_t len = strcspn (ptroffset, tok->delim); #ifdef HDEBUG ret = h_alloc (len+1, "ret", "next_token", 83); #else ret = g_malloc (len+1); #endif memcpy (ret, ptroffset, len); ret[len] = 0; tok->offset += len; remove_leading_delimiters(tok); /*printf ("next_token returning: \"%s\"\n", ret);*/ return ret; }
static struct h * _pe_comb_new_hist (struct event *e) { struct h *h; struct ec *r; int i; h = h_alloc (e); if(!h)return h;//ALESSANDRO for (r = pe.comb.r; r->h == 0; r = r->r2) { ASSERT (r->r1); ASSERT (EC_ISREAD (r->r1)); ASSERT (r->r1->h); h_add (h, r->r1->h); } h_add (h, r->h); al_add (&h->ecl, pe.comb.r); for (i = 0; i < pe.comb.size; i++) { ASSERT (pe.comb.tab[i].ispre || EC_ISGEN (pe.comb.tab[i].tab[pe.comb.tab[i].i])); for (r = pe.comb.tab[i].tab[pe.comb.tab[i].i]; r->h == 0; r = r->r2) { ASSERT (r->r1); ASSERT (EC_ISREAD (r->r1)); ASSERT (r->r1->h); h_add (h, r->r1->h); } h_add (h, r->h); al_add (&h->ecl, pe.comb.tab[i].tab[pe.comb.tab[i].i]); } /* compute the marking associated to that history, the marking hash, * lists r(h), s(h), the size of the history and return */ h_marking (h); return h; }