summaryrefslogtreecommitdiff
path: root/ACEXML/common/NamespaceSupport.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ACEXML/common/NamespaceSupport.cpp')
-rw-r--r--ACEXML/common/NamespaceSupport.cpp114
1 files changed, 43 insertions, 71 deletions
diff --git a/ACEXML/common/NamespaceSupport.cpp b/ACEXML/common/NamespaceSupport.cpp
index 2f99ba13495..5f337eca2ba 100644
--- a/ACEXML/common/NamespaceSupport.cpp
+++ b/ACEXML/common/NamespaceSupport.cpp
@@ -15,7 +15,6 @@ static const ACEXML_Char ACEXML_XMLNS_URI_name[] = ACE_TEXT ("http://www.w3.org/
const ACEXML_Char *ACEXML_NamespaceSupport::XMLNS = ACEXML_XMLNS_URI_name;
ACEXML_Namespace_Context_Stack::ACEXML_Namespace_Context_Stack (void)
- : head_ (0)
{
}
@@ -27,31 +26,54 @@ ACEXML_Namespace_Context_Stack::~ACEXML_Namespace_Context_Stack (void)
int
ACEXML_Namespace_Context_Stack::push (ACEXML_NS_CONTEXT *nsc)
{
- struct NS_Node_T *temp = 0;
- ACE_NEW_RETURN (temp, NS_Node_T, -1);
-
- temp->item_ = nsc;
- temp->next_ = this->head_;
-
- this->head_ = temp;
- return 0;
+ return (this->stack_.push (nsc) < 0);
}
ACEXML_NS_CONTEXT *
ACEXML_Namespace_Context_Stack::pop (void)
{
- if (this->head_ != 0)
- {
- struct NS_Node_T *temp = this->head_;
- this->head_ = temp->next_;
+ if (this->stack_.size() <= 0)
+ return 0;
- ACEXML_NS_CONTEXT* retv = temp->item_;
- delete temp;
- return retv;
+ ACEXML_NS_CONTEXT* temp = 0;
+ int retval = this->stack_.pop (temp);
+ if (retval != 0)
+ {
+ ACE_ERROR ((LM_ERROR, "Unable to pop Namespace context from stack\n"));
+ return 0;
}
+ return temp;
+}
+
+int
+ACEXML_NamespaceSupport::popContext (void)
+{
+ delete this->effective_context_;
+
+ if ((this->effective_context_ = this->ns_stack_.pop ()) == 0)
+ return -1;
return 0;
}
+int
+ACEXML_NamespaceSupport::pushContext (void)
+{
+ ACEXML_NS_CONTEXT *temp = this->effective_context_;
+ ACE_NEW_RETURN (this->effective_context_,
+ ACEXML_NS_CONTEXT (),
+ -1);
+
+ // @@ Copy everything from the old context to the new one.
+ ACEXML_NS_CONTEXT_ENTRY *entry = 0;
+
+ for (ACEXML_NS_CONTEXT_ITER iter (*temp);
+ iter.next (entry) != 0;
+ iter.advance ())
+ this->effective_context_->bind (entry->ext_id_,
+ entry->int_id_);
+ this->ns_stack_.push (temp);
+ return 0;
+}
ACEXML_NamespaceSupport::ACEXML_NamespaceSupport (void)
: ns_stack_ (),
@@ -96,7 +118,7 @@ ACEXML_NamespaceSupport::declarePrefix (const ACEXML_Char *prefix,
int
ACEXML_NamespaceSupport::getDeclaredPrefixes (ACEXML_STR_LIST &prefixes) const
{
- ACEXML_NS_CONTEXT_ENTRY *entry;
+ ACEXML_NS_CONTEXT_ENTRY *entry = 0;
// The prefix for default namespace (empty string) is included in
// the return list.
@@ -114,7 +136,7 @@ ACEXML_NamespaceSupport::getPrefix (const ACEXML_Char *uri) const
if (!uri || *uri == 0)
return 0;
- ACEXML_NS_CONTEXT_ENTRY *entry;
+ ACEXML_NS_CONTEXT_ENTRY *entry = 0;
for (ACEXML_NS_CONTEXT_ITER iter (*this->effective_context_);
iter.next (entry) != 0;
@@ -128,7 +150,7 @@ ACEXML_NamespaceSupport::getPrefix (const ACEXML_Char *uri) const
int
ACEXML_NamespaceSupport::getPrefixes (ACEXML_STR_LIST &prefixes) const
{
- ACEXML_NS_CONTEXT_ENTRY *entry;
+ ACEXML_NS_CONTEXT_ENTRY *entry = 0;
// The prefix for default namespace (empty string) is not included
// in the return list.
@@ -146,7 +168,7 @@ ACEXML_NamespaceSupport::getPrefixes (const ACEXML_Char *uri,
if (!uri)
return -1;
- ACEXML_NS_CONTEXT_ENTRY *entry;
+ ACEXML_NS_CONTEXT_ENTRY *entry = 0;
for (ACEXML_NS_CONTEXT_ITER iter (*this->effective_context_);
iter.next (entry) != 0;
@@ -175,37 +197,6 @@ ACEXML_NamespaceSupport::getURI (const ACEXML_Char *prefix) const
}
int
-ACEXML_NamespaceSupport::popContext (void)
-{
- delete this->effective_context_;
-
- if ((this->effective_context_ = this->ns_stack_.pop ()) == 0)
- return -1;
- return 0;
-}
-
-int
-ACEXML_NamespaceSupport::pushContext (void)
-{
- ACEXML_NS_CONTEXT *temp = this->effective_context_;
- ACE_NEW_RETURN (this->effective_context_,
- ACEXML_NS_CONTEXT (),
- -1);
-
- // @@ Copy everything from the old context to the new one.
- ACEXML_NS_CONTEXT_ENTRY *entry;
-
- for (ACEXML_NS_CONTEXT_ITER iter (*temp);
- iter.next (entry) != 0;
- iter.advance ())
- this->effective_context_->bind (entry->ext_id_,
- entry->int_id_);
- this->ns_stack_.push (temp);
- return 0;
-}
-
-
-int
ACEXML_NamespaceSupport::processName (const ACEXML_Char *qName,
const ACEXML_Char *&uri,
const ACEXML_Char *&name,
@@ -220,7 +211,7 @@ ACEXML_NamespaceSupport::processName (const ACEXML_Char *qName,
break;
}
- ACEXML_String prefix;
+ ACEXML_String prefix (ACE_TEXT(""),0,0);
if (len == -1)
name = qName;
else
@@ -254,22 +245,3 @@ ACEXML_NamespaceSupport::reset (void)
return 0;
}
-#if defined (ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION)
-template class ACE_Hash_Map_Entry<ACEXML_String, ACEXML_String>;
-template class ACE_Hash_Map_Manager_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Base_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Iterator_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>;
-template class ACE_Hash_Map_Reverse_Iterator_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>;
-template class ACE_Unbounded_Queue<const ACEXML_Char *>;
-template class ACE_Unbounded_Queue_Iterator<const ACEXML_Char *>;
-template class ACE_Node<const ACEXML_Char *>;
-#elif defined (ACE_HAS_TEMPLATE_INSTANTIATION_PRAGMA)
-#pragma instantiate ACE_Hash_Map_Entry<ACEXML_String, ACEXML_String>
-#pragma instantiate ACE_Hash_Map_Manager_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Base_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Iterator_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>
-#pragma instantiate ACE_Hash_Map_Reverse_Iterator_Ex<ACEXML_String, ACEXML_String, ACE_Hash<ACEXML_String>, ACE_Equal_To<ACEXML_String>, ACE_Null_Mutex>
-#pragma instantiate ACE_Unbounded_Queue<const ACEXML_Char *>
-#pragma instantiate ACE_Unbounded_Queue_Iterator<const ACEXML_Char *>
-#pragma instantiate ACE_Node<const ACEXML_Char *>
-#endif /* ACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION */