aboutsummaryrefslogtreecommitdiff
path: root/include/quickmedia/XpathTokenizer.h
diff options
context:
space:
mode:
authorAleksi Lindeman <dec05eba@protonmail.com>2019-05-25 02:17:15 +0200
committerAleksi Lindeman <dec05eba@protonmail.com>2019-05-25 02:18:48 +0200
commit36c6ce46a1abdb08eb9193704b9fce6bc7f3646b (patch)
tree58e3152073ac2268267e6a4af7963e6528ae4969 /include/quickmedia/XpathTokenizer.h
Initial commit
Diffstat (limited to 'include/quickmedia/XpathTokenizer.h')
-rw-r--r--include/quickmedia/XpathTokenizer.h32
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