From 0be032c6998e712dc2c9f2ed97c3491d89eb05af Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Fri, 31 Jan 2020 17:16:27 +0300 Subject: [xift] Almost done. --- src/tag.hpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 src/tag.hpp (limited to 'src/tag.hpp') 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 -- cgit v1.2.3