diff options
author | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-01-13 08:04:07 +0000 |
---|---|---|
committer | nanbor <nanbor@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 2002-01-13 08:04:07 +0000 |
commit | 7ce753df89bd8b69cd57c1dd65e524f61fd4b17a (patch) | |
tree | a152dd370db022ffff6e9dbdd126597738855d3d | |
parent | 7fc769477e6f686664c4cd86625938a343989fd3 (diff) | |
download | ATCD-7ce753df89bd8b69cd57c1dd65e524f61fd4b17a.tar.gz |
*** empty log message ***
-rw-r--r-- | ACEXML/common/Attributes_Def_Builder.h | 8 | ||||
-rw-r--r-- | ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp | 53 | ||||
-rw-r--r-- | ACEXML/parser/debug_validator/Debug_Attributes_Builder.h | 53 | ||||
-rw-r--r-- | ACEXML/parser/debug_validator/Element_Tree.i | 10 | ||||
-rw-r--r-- | ACEXML/parser/parser/Entity_Manager.h | 2 |
5 files changed, 111 insertions, 15 deletions
diff --git a/ACEXML/common/Attributes_Def_Builder.h b/ACEXML/common/Attributes_Def_Builder.h index e684a6a1b37..4cd44509b8f 100644 --- a/ACEXML/common/Attributes_Def_Builder.h +++ b/ACEXML/common/Attributes_Def_Builder.h @@ -54,6 +54,12 @@ public: virtual ~ACEXML_Attribute_Def_Builder () = 0; /** + * Specify the name of the attribute. + */ + virtual int setName (const ACEXML_Char *n) = 0; + virtual const ACEXML_Char *getName (void) = 0; + + /** * Set the attribute type. */ virtual int setAttType (const ATT_TYPE type, @@ -64,7 +70,7 @@ public: /** * Insert an element for NOTATION or ENUMERATION type attribute. */ - virtual int insertList (const ACEXML_Char Name, + virtual int insertList (const ACEXML_Char *Name, ACEXML_Env &xmlenv) // ACE_THORW_SPEC ((ACEXML_SAXException)) = 0; diff --git a/ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp b/ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp index 78ef1d18086..6236b29187c 100644 --- a/ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp +++ b/ACEXML/parser/debug_validator/Debug_Attributes_Builder.cpp @@ -9,11 +9,33 @@ ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder () { } +ACEXML_Debug_Attribute_Builder::ACEXML_Debug_Attribute_Builder (const ACEXML_Debug_Attribute_Builder &rhs) + : name_ (rhs.name_), + type_ (rhs.type_), + default_decl_ (rhs.default_decl_), + default_value_ (rhs.default_value_), + att_value_queue_ (rhs.att_value_queue_) +{ +} + ACEXML_Debug_Attribute_Builder::~ACEXML_Debug_Attribute_Builder () { } int +ACEXML_Debug_Attribute_Builder::setName (const ACEXML_Char *n) +{ + this->name_.set (n, 0); + return 0; +} + +const ACEXML_Char * +ACEXML_Debug_Attribute_Builder::getName (void) +{ + return this->name_.fast_rep (); +} + +int ACEXML_Debug_Attribute_Builder::setAttType (const ATT_TYPE type, ACEXML_Env &xmlenv) // ACE_THORW_SPEC ((ACEXML_SAXException)) @@ -28,25 +50,32 @@ ACEXML_Debug_Attribute_Builder::setAttType (const ATT_TYPE type, } int -ACEXML_Debug_Attribute_Builder::insertList (const ACEXML_Char Name, - ACEXML_Env &xmlenv) +ACEXML_Debug_Attribute_Builder::insertList (const ACEXML_Char *n, + ACEXML_Env &) // ACE_THORW_SPEC ((ACEXML_SAXException)) { + ACEXML_String str (n, 0, 0); + this->att_value_queue_.enqueue_tail (str); + return 0; } int ACEXML_Debug_Attribute_Builder::setDefault (const DEFAULT_DECL def, const ACEXML_Char *value, - ACEXML_Env &xmlenv) + ACEXML_Env &) // ACE_THORW_SPEC ((ACEXML_SAXException)) { - + this->default_decl_ = def; + this->default_value_.set (value, 0); + return 0; } int ACEXML_Debug_Attribute_Builder::validAttr (void) { + // @@ Not implemented. Always return 1 (true) for now. + return 1; } // ======================================== @@ -66,6 +95,8 @@ ACEXML_Debug_Attributes_Builder::setElement (const ACEXML_Char *namespaceURI, ACEXML_Env &xmlenv) // ACE_THROW_SPEC ((ACEXML_SAXException)) { + this->element_name_.set (qName, 0); + return 0; } ACEXML_Attribute_Def_Builder * @@ -81,9 +112,19 @@ ACEXML_Debug_Attributes_Builder::getAttribute_Def_Builder () int ACEXML_Debug_Attributes_Builder::insertAttribute (ACEXML_Attribute_Def_Builder *def, - ACEXML_Env &) + ACEXML_Env &xmlenv) { ACEXML_Attribute_Def_Builder::VAR ptr (def); - return 0; + if (def != 0) + { + ACEXML_String attname (def->getName (), 0, 0); + ACEXML_Debug_Attribute_Builder *ptr = + ACE_dynamic_cast (ACEXML_Debug_Attribute_Builder *, def); + this->attributes_.bind (attname, *ptr); + return 0; + } + xmlenv.exception (new ACEXML_SAXParseException ("ACEXML_Debug_Attributes_Builder internal error")); + return -1; + } diff --git a/ACEXML/parser/debug_validator/Debug_Attributes_Builder.h b/ACEXML/parser/debug_validator/Debug_Attributes_Builder.h index 906e2c3ec93..7737964927d 100644 --- a/ACEXML/parser/debug_validator/Debug_Attributes_Builder.h +++ b/ACEXML/parser/debug_validator/Debug_Attributes_Builder.h @@ -14,6 +14,11 @@ #include "common/Attributes_Def_Builder.h" #include "parser/debug_validator/Debug_DTD_Manager_Export.h" +#include "ace/Hash_Map_Manager.h" +#include "ace/Unbounded_Queue.h" + +typedef ACE_Unbounded_Queue<ACEXML_String> ACEXML_STRING_QUEUE; +typedef ACE_Unbounded_Queue_Iterator<ACEXML_String> ACEXML_STRING_QUEUE_ITERATOR; /** * @ class ACEXML_Debug_Attribute_Builder Debug_Attributes_Builder.h "parser/debug_validator/Debug_Attributes_Builder.h" @@ -26,9 +31,17 @@ class ACEXML_DEBUG_DTD_MANAGER_Export ACEXML_Debug_Attribute_Builder public: ACEXML_Debug_Attribute_Builder (); + ACEXML_Debug_Attribute_Builder (const ACEXML_Debug_Attribute_Builder &rhs); + virtual ~ACEXML_Debug_Attribute_Builder (); /** + * Specify the name of the attribute. + */ + virtual int setName (const ACEXML_Char *n); + virtual const ACEXML_Char *getName (void); + + /** * Set the attribute type. */ virtual int setAttType (const ATT_TYPE type, @@ -39,7 +52,7 @@ public: /** * Insert an element for NOTATION or ENUMERATION type attribute. */ - virtual int insertList (const ACEXML_Char Name, + virtual int insertList (const ACEXML_Char *Name, ACEXML_Env &xmlenv) // ACE_THORW_SPEC ((ACEXML_SAXException)) ; @@ -61,13 +74,43 @@ public: virtual int validAttr (void); private: + /// Attribute name. + ACEXML_String name_; + /// Type of attribute. ATT_TYPE type_; /// Default value type. DEFAULT_DECL default_decl_; + + /// Default attribute value. + ACEXML_String default_value_; + + /// Holds a queue of enumerated attribute values. + ACEXML_STRING_QUEUE att_value_queue_; }; +typedef ACE_Hash_Map_Entry<ACEXML_String, + ACEXML_Debug_Attribute_Builder> ACEXML_ATT_MAP_ENTRY; + +typedef ACE_Hash_Map_Manager_Ex <ACEXML_String, + ACEXML_Debug_Attribute_Builder, + ACE_Hash<ACEXML_String>, + ACE_Equal_To<ACEXML_String>, + ACE_Null_Mutex> ACEXML_ATT_MAP; + +typedef ACE_Hash_Map_Iterator_Ex<ACEXML_String, + ACEXML_Debug_Attribute_Builder, + ACE_Hash<ACEXML_String>, + ACE_Equal_To<ACEXML_String>, + ACE_Null_Mutex> ACEXML_ATT_MAP_ITER; + +typedef ACE_Hash_Map_Reverse_Iterator_Ex<ACEXML_String, + ACEXML_Debug_Attribute_Builder, + ACE_Hash<ACEXML_String>, + ACE_Equal_To<ACEXML_String>, + ACE_Null_Mutex> ACEXML_ATT_MAP_REVERSE_ITER; + /** * @ class ACEXML_Debug_Attributes_Builder Debug_Attributes_Builder.h "parser/debug_validator/Debug_Attributes_Builder.h" * @@ -104,6 +147,14 @@ public: virtual int insertAttribute (ACEXML_Attribute_Def_Builder *def, ACEXML_Env &xmlenv); +protected: + /// The name of the element type these attributes applied. + ACEXML_String element_name_; + + /// Collection of attributes. + ACEXML_ATT_MAP attributes_; }; + + #endif /* _ACEXML_DEBUG_ATTRIBUTES_BUILDER_H_ */ diff --git a/ACEXML/parser/debug_validator/Element_Tree.i b/ACEXML/parser/debug_validator/Element_Tree.i index 9d0d3cab8cf..4b408835403 100644 --- a/ACEXML/parser/debug_validator/Element_Tree.i +++ b/ACEXML/parser/debug_validator/Element_Tree.i @@ -61,20 +61,20 @@ ACEXML_Element_Tree_List_Stack::ACEXML_Element_Tree_List_Stack (void) } ACEXML_INLINE ACEXML_Element_Tree_List_Node * -ACEXML_Element_Tree_list_Stack::top () +ACEXML_Element_Tree_List_Stack::top () { return this->top_; } ACEXML_INLINE void -ACEXML_Element_Tree_list_Stack::push (ACEXML_Element_Tree_List_Node *n) +ACEXML_Element_Tree_List_Stack::push (ACEXML_Element_Tree_List_Node *n) { n->pop_next_ = this->top_; this->top_ = n; } ACEXML_INLINE ACEXML_Element_Tree_List_Node * -ACEXML_Element_Tree_list_Stack::pop () +ACEXML_Element_Tree_List_Stack::pop () { if (this->top_ != 0) { @@ -85,8 +85,8 @@ ACEXML_Element_Tree_list_Stack::pop () return 0; } -ACEXML_INLINE ACEXML_Element_Tree_List_Node * -ACEXML_Element_Tree_list_Stack::empty () +ACEXML_INLINE int +ACEXML_Element_Tree_List_Stack::empty () { return this->top_ == 0; } diff --git a/ACEXML/parser/parser/Entity_Manager.h b/ACEXML/parser/parser/Entity_Manager.h index cd168af29b3..205715e7a4e 100644 --- a/ACEXML/parser/parser/Entity_Manager.h +++ b/ACEXML/parser/parser/Entity_Manager.h @@ -15,9 +15,7 @@ #include "common/XML_Types.h" #include "parser/parser/Parser_export.h" -#include "ace/Functor.h" #include "ace/Hash_Map_Manager.h" -#include "ace/Containers_T.h" typedef ACE_Hash_Map_Entry<ACEXML_String, ACEXML_String> ACEXML_ENTITY_ENTRY; |