summaryrefslogtreecommitdiff
path: root/ACE/ACEXML/parser/debug_validator/Element_Tree.h
diff options
context:
space:
mode:
Diffstat (limited to 'ACE/ACEXML/parser/debug_validator/Element_Tree.h')
-rw-r--r--ACE/ACEXML/parser/debug_validator/Element_Tree.h160
1 files changed, 160 insertions, 0 deletions
diff --git a/ACE/ACEXML/parser/debug_validator/Element_Tree.h b/ACE/ACEXML/parser/debug_validator/Element_Tree.h
new file mode 100644
index 00000000000..4738b5de2f4
--- /dev/null
+++ b/ACE/ACEXML/parser/debug_validator/Element_Tree.h
@@ -0,0 +1,160 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Element_Tree.h
+ *
+ * $Id$
+ *
+ * @author Nanbor Wang <nanbor@cs.wustl.edu>
+ */
+//=============================================================================
+#ifndef _ACEXML_ELEMENT_TREE_H_
+#define _ACEXML_ELEMENT_TREE_H_
+
+#include /**/ "ace/pre.h"
+#include "ACEXML/parser/debug_validator/Debug_DTD_Manager_Export.h"
+
+#if !defined (ACE_LACKS_PRAGMA_ONCE)
+#pragma once
+#endif /* ACE_LACKS_PRAGMA_ONCE */
+
+#include "ACEXML/common/XML_Types.h"
+
+/**
+ * @class ACEXML_Element_Tree_Node Element_Tree.h "parser/debug_validator/Element_Tree.h"
+ *
+ * @brief An abstract base class for describing DTD child element definition.
+ *
+ * @sa ACEXML_Element_Tree_Name_Node, ACEXML_Element_Tree_List_Node
+ */
+class ACEXML_DEBUG_DTD_MANAGER_Export ACEXML_Element_Tree_Node
+{
+public:
+
+ /// Default constructor.
+ ACEXML_Element_Tree_Node ();
+
+ /// Destructor
+ virtual ~ACEXML_Element_Tree_Node ();
+
+ /// Accessor for next element in chain
+ ACEXML_Element_Tree_Node *next ();
+ void next (ACEXML_Element_Tree_Node *n);
+
+ /// Displaying the content.
+ virtual void dump () = 0;
+
+ ACE_ALLOC_HOOK_DECLARE;
+
+protected:
+ ACEXML_Element_Tree_Node *next_;
+};
+
+/**
+ * @class ACEXML_Element_Tree_Name_Node Element_Tree.h "parser/debug_validator/Element_Tree.h"
+ *
+ * @brief An abstract base class for describing a name node in a DTD child
+ * element definition.
+ *
+ * @sa ACEXML_Element_Tree_Node, ACEXML_Element_Tree_List_Node
+ */
+class ACEXML_DEBUG_DTD_MANAGER_Export ACEXML_Element_Tree_Name_Node
+ : public ACEXML_Element_Tree_Node
+{
+public:
+ /// Constructor.
+ ACEXML_Element_Tree_Name_Node (const ACEXML_Char *name,
+ int release = 1);
+
+ /// Change the name of this node.
+ void set (const ACEXML_Char *name,
+ int release = 1);
+
+ virtual void dump ();
+
+ ACE_ALLOC_HOOK_DECLARE;
+protected:
+ ACEXML_String name_;
+};
+
+class ACEXML_Element_Tree_List_Stack;
+
+/**
+ * @class ACEXML_Element_Tree_List_Node Element_Tree.h "parser/debug_validator/Element_Tree.h"
+ *
+ * @brief An abstract base class for describing a node list in a DTD child
+ * element definition.
+ *
+ * @sa ACEXML_Element_Tree_Node, ACEXML_Element_Tree_Name_Node
+ */
+class ACEXML_DEBUG_DTD_MANAGER_Export ACEXML_Element_Tree_List_Node
+ : public ACEXML_Element_Tree_Node
+{
+public:
+ friend class ACEXML_Element_Tree_List_Stack;
+
+ typedef enum {
+ SEQUENCE,
+ CHOICE
+ } LIST_TYPE;
+
+ /// Default constructor.
+ ACEXML_Element_Tree_List_Node (void);
+
+ /// Destructor.
+ virtual ~ACEXML_Element_Tree_List_Node (void);
+
+ /// Insert a new ACEXML_Element_Tree_Node into the list.
+ int insert (ACEXML_Element_Tree_Node *node);
+
+ /// Get/set the type of list.
+ LIST_TYPE get (void);
+ int set (LIST_TYPE type);
+
+ virtual void dump ();
+
+ ACE_ALLOC_HOOK_DECLARE;
+protected:
+ LIST_TYPE type_;
+
+ ACEXML_Element_Tree_Node *head_;
+
+ ACEXML_Element_Tree_Node *tail_;
+
+ ACEXML_Element_Tree_List_Node *pop_next_;
+};
+
+/**
+ * @class ACEXML_Element_Tree_List_Stack Element_Tree.h "parser/debug_validator/Element_Tree.h"
+ *
+ * @brief A class for managing a stack of ACEXML_Element_Tree_List_Node's.
+ *
+ * @sa ACEXML_Element_Tree_List_Node
+ */
+class ACEXML_DEBUG_DTD_MANAGER_Export ACEXML_Element_Tree_List_Stack
+{
+public:
+ ACEXML_Element_Tree_List_Stack ();
+
+ void push (ACEXML_Element_Tree_List_Node *n);
+
+ ACEXML_Element_Tree_List_Node *pop (void);
+
+ ACEXML_Element_Tree_List_Node *top (void);
+
+ int empty (void);
+
+ ACE_ALLOC_HOOK_DECLARE;
+
+protected:
+ ACEXML_Element_Tree_List_Node *top_;
+};
+
+#if defined (__ACEXML_INLINE__)
+# include "ACEXML/parser/debug_validator/Element_Tree.inl"
+#endif /* __ACEXML_INLINE__ */
+
+#include /**/ "ace/post.h"
+
+#endif /* _ACEXML_ELEMENT_TREE_H_ */