summaryrefslogtreecommitdiff
path: root/src/tag.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tag.hpp')
-rw-r--r--src/tag.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/tag.hpp b/src/tag.hpp
new file mode 100644
index 0000000..469c4fd
--- /dev/null
+++ b/src/tag.hpp
@@ -0,0 +1,44 @@
+#ifndef XIFT_INCLUDED_TAG
+#define XIFT_INCLUDED_TAG
+
+#include "attribute.hpp"
+
+
+class XiftTags {
+public:
+ class Item: public XiftAttributes {
+ friend class XiftTags;
+
+ Item();
+ ~Item();
+
+ bool MatchesForm(const Item & form) const;
+
+ char *name;
+ int len;
+ int size;
+ };
+
+ XiftTags();
+ ~XiftTags();
+
+ Item &Tag(const char *name);
+ void Remove(const char *name);
+
+protected:
+ Item *Top();
+ void Pop();
+ Item *PopToBeDeleted();
+ Item &New();
+
+ bool ContainsMatchedForm(const Item &tag) const;
+
+private:
+ struct Stack {
+ Stack *next;
+ Item *item;
+ } *stack;
+};
+
+
+#endif