Changeset 2165
- Timestamp:
- 09/20/08 21:44:21 (4 months ago)
- Files:
-
- libswish3/trunk/bindings/perl/XS/Token.xs (modified) (1 diff)
- libswish3/trunk/src/libswish3/libswish3.h (modified) (1 diff)
- libswish3/trunk/src/libswish3/tokenizer.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
libswish3/trunk/bindings/perl/XS/Token.xs
r2164 r2165 6 6 value (self) 7 7 swish_Token * self; 8 9 PREINIT: 10 xmlChar *value; 11 8 12 9 CODE: 13 value = swish_get_token_value(self); 14 RETVAL = newSVpvn( (char*)value, self->len ); 10 RETVAL = newSVpvn( (char*)self->value, self->len ); 15 11 16 12 OUTPUT: libswish3/trunk/src/libswish3/libswish3.h
r2162 r2165 533 533 int swish_set_token_value( 534 534 swish_TokenList *tl, 535 xmlChar *token );536 xmlChar * swish_get_token_value( swish_Token *t);535 xmlChar *token, 536 int len ); 537 537 swish_Token * swish_init_token(); 538 538 void swish_free_token( swish_Token *t ); libswish3/trunk/src/libswish3/tokenizer.c
r2162 r2165 363 363 int num_of_allocs; 364 364 swish_Token *stoken; 365 const xmlChar *buf; 365 366 366 367 if (!token_len || !xmlStrlen(token)) { … … 373 374 stoken = swish_init_token(); 374 375 stoken->start_byte = xmlBufferLength(tl->buf); 375 stoken->len = token_len - 1; /* TODO do we even need NULL? */ 376 377 /* grab the current buffer and point ->value into the buffer */ 378 buf = xmlBufferContent(tl->buf); 379 buf += stoken->start_byte; 380 stoken->value = (xmlChar*)buf; 381 382 stoken->len = token_len - 1; // -1 to exlude the NULL 376 383 stoken->pos = ++tl->pos; 377 384 stoken->meta = meta; … … 379 386 stoken->context = swish_xstrdup(context); 380 387 stoken->ref_cnt++; 381 swish_set_token_value(tl, token );388 swish_set_token_value(tl, token, token_len); 382 389 383 390 num_of_allocs = tl->n / SWISH_TOKEN_LIST_SIZE; … … 406 413 swish_set_token_value( 407 414 swish_TokenList *tl, 408 xmlChar *token 415 xmlChar *token, 416 int len 409 417 ) 410 418 { 411 419 int ret; 412 ret = xmlBuffer Cat(tl->buf, token);420 ret = xmlBufferAdd(tl->buf, token, len); 413 421 if (ret != 0) { 414 422 SWISH_CROAK("error appending token to buffer: %d", ret); 415 423 } 416 424 return ret; 417 }418 419 xmlChar *420 swish_get_token_value(421 swish_Token *t422 )423 {424 /* SWISH_DEBUG_MSG("get token value: '%s' %d, %d", xmlBufferContent(tl->buf), t->start_byte, t->len); */425 return xmlStrsub(xmlBufferContent(t->list->buf), t->start_byte, t->len);426 425 } 427 426 … … 494 493 */ 495 494 while ((t = swish_next_token(it)) != NULL) { 496 t->value = swish_get_token_value(t);497 495 swish_debug_token(t); 498 496 }
