aboutsummaryrefslogtreecommitdiffstats
path: root/parsetagx.h
diff options
context:
space:
mode:
Diffstat (limited to 'parsetagx.h')
-rw-r--r--parsetagx.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/parsetagx.h b/parsetagx.h
new file mode 100644
index 0000000..6014784
--- /dev/null
+++ b/parsetagx.h
@@ -0,0 +1,28 @@
+#ifndef PARSETAGX_H
+#define PARSETAGX_H
+
+#include "html.h"
+#include "Str.h"
+
+/* Parsed Tag structure */
+
+struct parsed_tag {
+ unsigned char tagid;
+ char *tagname;
+ unsigned char *attrid;
+ char **value;
+ unsigned char *map;
+ char need_reconstruct;
+};
+
+#define parsedtag_accepts(tag, id) ((tag)->map&&(tag)->map[id]!=MAX_TAGATTR)
+#define parsedtag_exists(tag, id) (parsedtag_accepts(tag,id)&&((tag)->attrid[(tag)->map[id]]!=ATTR_UNKNOWN))
+#define parsedtag_delete(tag, id) (parsedtag_accepts(tag,id)&&((tag)->attrid[(tag)->map[id]]=ATTR_UNKNOWN))
+#define parsedtag_need_reconstruct(tag) ((tag)->need_reconstruct)
+#define parsedtag_attname(tag, i) (AttrMAP[(tag)->attrid[i]].name)
+
+extern struct parsed_tag *parse_tag(char **s, int internal);
+extern int parsedtag_get_value(struct parsed_tag *tag, int id, void *value);
+extern int parsedtag_set_value(struct parsed_tag *tag, int id, char *value);
+extern Str parsedtag2str(struct parsed_tag *tag);
+#endif