aboutsummaryrefslogtreecommitdiff
path: root/include/quickmedia/XpathTokenizer.h
diff options
context:
space:
mode:
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