diff options
author | Aleksi Lindeman <dec05eba@protonmail.com> | 2019-05-25 02:17:15 +0200 |
---|---|---|
committer | Aleksi Lindeman <dec05eba@protonmail.com> | 2019-05-25 02:18:48 +0200 |
commit | 36c6ce46a1abdb08eb9193704b9fce6bc7f3646b (patch) | |
tree | 58e3152073ac2268267e6a4af7963e6528ae4969 /include/quickmedia/XpathTokenizer.h |
Initial commit
Diffstat (limited to 'include/quickmedia/XpathTokenizer.h')
-rw-r--r-- | include/quickmedia/XpathTokenizer.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/quickmedia/XpathTokenizer.h b/include/quickmedia/XpathTokenizer.h new file mode 100644 index 0000000..8827cff --- /dev/null +++ b/include/quickmedia/XpathTokenizer.h @@ -0,0 +1,32 @@ +#ifndef QUICKMEDIA_XPATH_TOKENIZER_H +#define QUICKMEDIA_XPATH_TOKENIZER_H + +#include "NodeSearch.h" + +typedef struct { + const char *code; + union { + QuickMediaStringView string; + QuickMediaStringView identifier; + }; +} QuickMediaXpathTokenizer; + +typedef enum { + QUICKMEDIA_XPATH_TOKEN_INVALID, + QUICKMEDIA_XPATH_TOKEN_END_OF_FILE, + QUICKMEDIA_XPATH_TOKEN_CHILD, + QUICKMEDIA_XPATH_TOKEN_CHILD_RECURSIVE, + QUICKMEDIA_XPATH_TOKEN_IDENTIFIER, + QUICKMEDIA_XPATH_TOKEN_STRING, + QUICKMEDIA_XPATH_TOKEN_OPEN_BRACKET, + QUICKMEDIA_XPATH_TOKEN_CLOSING_BRACKET, + QUICKMEDIA_XPATH_TOKEN_EQUAL +} QuickMediaXpathToken; + +void quickmedia_xpath_tokenizer_init(QuickMediaXpathTokenizer *self, const char *xpath); +QuickMediaXpathToken quickmedia_xpath_tokenizer_next(QuickMediaXpathTokenizer *self); +int quickmedia_xpath_tokenizer_next_if(QuickMediaXpathTokenizer *self, QuickMediaXpathToken token); +char* quickmedia_xpath_tokenizer_copy_identifier(QuickMediaXpathTokenizer *self); +char* quickmedia_xpath_tokenizer_copy_string(QuickMediaXpathTokenizer *self); + +#endif |