From 95c189f7445e6deca85130b7b8fa25dc76fabe12 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 16 Aug 2021 13:41:20 +0200 Subject: Add indexing and example --- src/XpathTokenizer.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'src/XpathTokenizer.c') diff --git a/src/XpathTokenizer.c b/src/XpathTokenizer.c index ae17939..f81f2d7 100644 --- a/src/XpathTokenizer.c +++ b/src/XpathTokenizer.c @@ -16,6 +16,10 @@ static int is_num(char c) { return c >= '0' && c <= '9'; } +static int c_to_num(char c) { + return c - '0'; +} + static int is_alphanum(char c) { return is_alpha(c) || is_num(c); } @@ -55,6 +59,15 @@ QuickMediaXpathToken quickmedia_xpath_tokenizer_next(QuickMediaXpathTokenizer *s } self->identifier.size = self->code - self->identifier.data; return QUICKMEDIA_XPATH_TOKEN_IDENTIFIER; + } else if(is_num(c)) { + int number = c_to_num(c); + ++self->code; + while(is_num(*self->code)) { + number = number * 10 + c_to_num(*self->code); + ++self->code; + } + self->number = number; + return QUICKMEDIA_XPATH_TOKEN_NUMBER; } else if(c == '[') { ++self->code; return QUICKMEDIA_XPATH_TOKEN_OPEN_BRACKET; -- cgit v1.2.3