ACEXML_Debug_Element_Builder Class Reference

#include <parser/debug_validator/Debug_Element_Builder.h>

Inheritance diagram for ACEXML_Debug_Element_Builder:

Inheritance graph
[legend]
Collaboration diagram for ACEXML_Debug_Element_Builder:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 ACEXML_Debug_Element_Builder ()
virtual ~ACEXML_Debug_Element_Builder ()
virtual int setElementName (const ACEXML_Char *namespaceURI, const ACEXML_Char *localName, const ACEXML_Char *qName ACEXML_ENV_ARG_DECL)
virtual int setContentType (CONTENT_TYPE type ACEXML_ENV_ARG_DECL)
virtual int insertMixedElement (const ACEXML_Char *namespaceURI, const ACEXML_Char *localName, const ACEXML_Char *qName ACEXML_ENV_ARG_DECL)
virtual int startChildGroup ()
virtual int endChildGroup (CARDINALITY card ACEXML_ENV_ARG_DECL)
virtual int setChoice ()
virtual int setSequence ()
virtual int insertElement (const ACEXML_Char *namespaceURI, const ACEXML_Char *localName, const ACEXML_Char *qName ACEXML_ENV_ARG_DECL)
virtual void dump (void)

Private Attributes

CONTENT_TYPE type_
ACEXML_String element_
ACEXML_Element_Tree_List_Noderoot_
ACEXML_Element_Tree_List_Stack active_list_

Detailed Description

This class prints out the element definition for debugging purpose.

Todo:
This class is not namespace-aware.

Definition at line 32 of file Debug_Element_Builder.h.


Constructor & Destructor Documentation

ACEXML_Debug_Element_Builder::ACEXML_Debug_Element_Builder  ) 
 

Definition at line 6 of file Debug_Element_Builder.cpp.

00007   : type_ (UNDEFINED),
00008     root_ (0)
00009 {
00010 }

ACEXML_Debug_Element_Builder::~ACEXML_Debug_Element_Builder  )  [virtual]
 

Definition at line 12 of file Debug_Element_Builder.cpp.

00013 {
00014   delete this->root_;
00015 }


Member Function Documentation

void ACEXML_Debug_Element_Builder::dump void   )  [virtual]
 

Dump the content of the attribute definition.

Implements ACEXML_Element_Def_Builder.

Definition at line 120 of file Debug_Element_Builder.cpp.

References element_.

00121 {
00122   cout << "<!ELEMENT " << this->element_;
00123 
00124   // @@ Also dump element contentspec here.
00125   switch (this->type_)
00126     {
00127     case EMPTY:
00128       cout << "EMPTY";
00129       break;
00130     case ANY:
00131       cout << "ANY";
00132       break;
00133     case MIXED:
00134     case CHILDREN:
00135       // @@ Dump the content of this->root_
00136       cout << "*** not implemented ***";
00137       break;
00138     default:
00139       cout << "*** Unidentified element type ***";
00140       break;
00141     }
00142 
00143   cout << ">" << endl;
00144 }

virtual int ACEXML_Debug_Element_Builder::endChildGroup CARDINALITY card  ACEXML_ENV_ARG_DECL  )  [virtual]
 

End a new group of children.

Return values:
0 on success.

Implements ACEXML_Element_Def_Builder.

int ACEXML_Debug_Element_Builder::insertElement const ACEXML_Char namespaceURI,
const ACEXML_Char localName,
const ACEXML_Char *qName  ACEXML_ENV_ARG_DECL
[virtual]
 

Insert an new element into the current child group.

Return values:
0 on success, -1 otherwise.

Implements ACEXML_Element_Def_Builder.

Definition at line 105 of file Debug_Element_Builder.cpp.

References ACE_NEW_RETURN, ACEXML_Char, active_list_, ACEXML_Element_Tree_List_Node::insert(), and ACEXML_Element_Tree_List_Stack::top().

00108 {
00109   ACEXML_Element_Tree_Name_Node *node;
00110 
00111   // @@ We should "throw" an exception here instead of returning -1.
00112   ACE_NEW_RETURN (node,
00113                   ACEXML_Element_Tree_Name_Node (qName),
00114                   -1);
00115 
00116   return this->active_list_.top ()->insert (node);
00117 }

int ACEXML_Debug_Element_Builder::insertMixedElement const ACEXML_Char namespaceURI,
const ACEXML_Char localName,
const ACEXML_Char *qName  ACEXML_ENV_ARG_DECL
[virtual]
 

Insert one more element into Mixed definition.

Implements ACEXML_Element_Def_Builder.

Definition at line 39 of file Debug_Element_Builder.cpp.

References ACE_NEW_RETURN, ACEXML_Char, and ACEXML_Element_Tree_List_Node::insert().

00042 {
00043   ACEXML_Element_Tree_Name_Node *node;
00044 
00045   // @@ We should "throw" an exception here instead of returning -1.
00046   ACE_NEW_RETURN (node,
00047                   ACEXML_Element_Tree_Name_Node (qName),
00048                   -1);
00049 
00050   if (this->root_ == 0)
00051     // @@ Memory leak if fail?
00052     ACE_NEW_RETURN (this->root_,
00053                     ACEXML_Element_Tree_List_Node (),
00054                     -1);
00055 
00056 
00057   return this->root_->insert (node);
00058 }

int ACEXML_Debug_Element_Builder::setChoice  )  [virtual]
 

Set the type of current child group to Choice.

Return values:
0 on success, -1 if the type of the child group has already been set and this action conflicts with the previous setting.

Implements ACEXML_Element_Def_Builder.

Definition at line 91 of file Debug_Element_Builder.cpp.

References active_list_, ACEXML_Element_Tree_List_Node::set(), and ACEXML_Element_Tree_List_Stack::top().

00092 {
00093   this->active_list_.top ()->set (ACEXML_Element_Tree_List_Node::CHOICE);
00094   return 0;
00095 }

int ACEXML_Debug_Element_Builder::setContentType CONTENT_TYPE type  ACEXML_ENV_ARG_DECL  )  [virtual]
 

Define the content type of the element.

Return values:
0 if valid, -1 otherwise.

Implements ACEXML_Element_Def_Builder.

Definition at line 27 of file Debug_Element_Builder.cpp.

References ACE_TEXT, and ACEXML_THROW_RETURN.

00028 {
00029   if (this->type_ == UNDEFINED)
00030     {
00031       this->type_ = type;
00032       return 0;
00033     }
00034 
00035   ACEXML_THROW_RETURN (ACEXML_SAXParseException (ACE_TEXT("Element type redefinition in Debug_Validator.")), -1);
00036 }

int ACEXML_Debug_Element_Builder::setElementName const ACEXML_Char namespaceURI,
const ACEXML_Char localName,
const ACEXML_Char *qName  ACEXML_ENV_ARG_DECL
[virtual]
 

Define the name of the element.

Return values:
0 if valid, -1 otherwise.

Implements ACEXML_Element_Def_Builder.

Definition at line 18 of file Debug_Element_Builder.cpp.

References ACEXML_Char, and element_.

00021 {
00022   this->element_.set (qName, 0);
00023   return 0;
00024 }

int ACEXML_Debug_Element_Builder::setSequence  )  [virtual]
 

Set the type of current child group to Sequence.

Return values:
0 on success, -1 if the type of the child group has already been set and this action conflicts with the previous setting.

Implements ACEXML_Element_Def_Builder.

Definition at line 98 of file Debug_Element_Builder.cpp.

References active_list_, ACEXML_Element_Tree_List_Node::set(), and ACEXML_Element_Tree_List_Stack::top().

00099 {
00100   this->active_list_.top ()->set (ACEXML_Element_Tree_List_Node::SEQUENCE);
00101   return 0;
00102 }

int ACEXML_Debug_Element_Builder::startChildGroup  )  [virtual]
 

Start a new group of children.

Implements ACEXML_Element_Def_Builder.

Definition at line 61 of file Debug_Element_Builder.cpp.

References ACE_NEW_RETURN, active_list_, ACEXML_Element_Tree_List_Node::insert(), and ACEXML_Element_Tree_List_Stack::push().

00062 {
00063   ACEXML_Element_Tree_List_Node *lnode;
00064 
00065   ACE_NEW_RETURN (lnode,
00066                   ACEXML_Element_Tree_List_Node (),
00067                   -1);
00068 
00069   if (this->root_ == 0)
00070     {
00071       this->root_ = lnode;
00072     }
00073   else
00074     {
00075       // @@ check error?
00076       this->root_->insert (lnode);
00077     }
00078 
00079   this->active_list_.push (lnode);
00080   return 0;
00081 }


Member Data Documentation

ACEXML_Element_Tree_List_Stack ACEXML_Debug_Element_Builder::active_list_ [private]
 

Definition at line 117 of file Debug_Element_Builder.h.

Referenced by insertElement(), setChoice(), setSequence(), and startChildGroup().

ACEXML_String ACEXML_Debug_Element_Builder::element_ [private]
 

Definition at line 113 of file Debug_Element_Builder.h.

Referenced by dump(), and setElementName().

ACEXML_Element_Tree_List_Node* ACEXML_Debug_Element_Builder::root_ [private]
 

Definition at line 115 of file Debug_Element_Builder.h.

CONTENT_TYPE ACEXML_Debug_Element_Builder::type_ [private]
 

Definition at line 111 of file Debug_Element_Builder.h.


The documentation for this class was generated from the following files:
Generated on Sun Jan 27 13:04:59 2008 for ACEXML by doxygen 1.3.6