📄 element_tree.h
字号:
// -*- C++ -*-
//=============================================================================
/**
* @file Element_Tree.h
*
* Element_Tree.h,v 1.6 2003/07/19 19:04:10 dhinton Exp
*
* @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.i"
#endif /* __ACEXML_INLINE__ */
#include /**/ "ace/post.h"
#endif /* _ACEXML_ELEMENT_TREE_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -