summaryrefslogtreecommitdiff
path: root/ACEXML/parser/parser/Entity_Manager.i
diff options
context:
space:
mode:
Diffstat (limited to 'ACEXML/parser/parser/Entity_Manager.i')
-rw-r--r--ACEXML/parser/parser/Entity_Manager.i37
1 files changed, 35 insertions, 2 deletions
diff --git a/ACEXML/parser/parser/Entity_Manager.i b/ACEXML/parser/parser/Entity_Manager.i
index 696b82b64e4..26da9ad15d9 100644
--- a/ACEXML/parser/parser/Entity_Manager.i
+++ b/ACEXML/parser/parser/Entity_Manager.i
@@ -9,13 +9,46 @@ ACEXML_Entity_Manager::add_entity (const ACEXML_Char *ref,
return this->entities_.bind (name, value);
}
-ACEXML_INLINE const ACEXML_String *
+ACEXML_INLINE const ACEXML_Char*
ACEXML_Entity_Manager::resolve_entity (const ACEXML_Char *ref)
{
ACEXML_ENTITY_ENTRY *entry;
if (this->entities_.find (ACEXML_String (ref, 0, 0),
entry) == 0)
- return &entry->int_id_;
+ return entry->int_id_.c_str();
return 0;
}
+
+ACEXML_INLINE int
+ACEXML_Entity_Manager::resolve_entity (const ACEXML_Char* ref,
+ ACEXML_Char*& systemId,
+ ACEXML_Char*& publicId)
+{
+ publicId = systemId = 0;
+ ACEXML_ENTITY_ENTRY_ITERATOR iter (this->entities_, ref);
+ ACEXML_ENTITY_ENTRY_ITERATOR end (this->entities_, ref, 1);
+
+ if (iter != end)
+ {
+ systemId = ACE_const_cast (ACEXML_Char*, (*iter).int_id_.c_str());
+ ++iter;
+ if (iter != end)
+ publicId = ACE_const_cast (ACEXML_Char*, (*iter).int_id_.c_str());
+ return 0;
+ }
+ return -1;
+}
+
+ACEXML_INLINE int
+ACEXML_Entity_Manager::reset (void)
+{
+ return this->entities_.close();
+}
+
+
+ACEXML_INLINE const size_t
+ACEXML_Entity_Manager::size (void) const
+{
+ return this->entities_.current_size();
+}