X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=xmltooling%2Futil%2FParserPool.cpp;h=712b1219c923c6905edad4efe3d1f7ad8efade28;hb=e8728756ec96bdb4446c38d422e54d3f25b0642e;hp=5e44c28fcdf665fdef7c645cc3d032ca2b987a29;hpb=fb0b932235484e41580e8e8ae7b7e36b02168414;p=shibboleth%2Fcpp-xmltooling.git diff --git a/xmltooling/util/ParserPool.cpp b/xmltooling/util/ParserPool.cpp index 5e44c28..712b121 100644 --- a/xmltooling/util/ParserPool.cpp +++ b/xmltooling/util/ParserPool.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -228,7 +229,7 @@ bool ParserPool::loadSchema(const XMLCh* nsURI, const XMLCh* pathname) return false; } - Lock lock(m_lock.get()); + Lock lock(m_lock); m_schemaLocMap[nsURI]=pathname; m_schemaLocations.erase(); for_each(m_schemaLocMap.begin(), m_schemaLocMap.end(), doubleit(m_schemaLocations,chSpace)); @@ -236,6 +237,18 @@ bool ParserPool::loadSchema(const XMLCh* nsURI, const XMLCh* pathname) return true; } +bool ParserPool::loadCatalogs(const char* pathnames) +{ + string temp(pathnames); + boost::tokenizer< char_separator > catpaths(temp, char_separator(PATH_SEPARATOR_STR)); + for_each( + catpaths.begin(), catpaths.end(), + // Call loadCatalog with an inner call to s->c_str() on each entry. + boost::bind(static_cast(&ParserPool::loadCatalog), this, boost::bind(&string::c_str, _1)) + ); + return catpaths.begin() != catpaths.end(); +} + bool ParserPool::loadCatalog(const char* pathname) { auto_ptr_XMLCh temp(pathname); @@ -288,7 +301,7 @@ bool ParserPool::loadCatalog(const XMLCh* pathname) // Fetch all the elements. DOMNodeList* mappings=root->getElementsByTagNameNS(CATALOG_NS,system); - Lock lock(m_lock.get()); + Lock lock(m_lock); for (XMLSize_t i=0; igetLength(); i++) { root=static_cast(mappings->item(i)); const XMLCh* from=root->getAttributeNS(nullptr,systemId); @@ -386,7 +399,7 @@ DOMLSParser* ParserPool::createBuilder() DOMLSParser* ParserPool::checkoutBuilder() { - Lock lock(m_lock.get()); + Lock lock(m_lock); if (m_pool.empty()) { DOMLSParser* builder=createBuilder(); return builder; @@ -401,7 +414,7 @@ DOMLSParser* ParserPool::checkoutBuilder() void ParserPool::checkinBuilder(DOMLSParser* builder) { if (builder) { - Lock lock(m_lock.get()); + Lock lock(m_lock); m_pool.push(builder); } } @@ -433,7 +446,7 @@ DOMBuilder* ParserPool::createBuilder() DOMBuilder* ParserPool::checkoutBuilder() { - Lock lock(m_lock.get()); + Lock lock(m_lock); if (m_pool.empty()) { DOMBuilder* builder=createBuilder(); return builder; @@ -448,7 +461,7 @@ DOMBuilder* ParserPool::checkoutBuilder() void ParserPool::checkinBuilder(DOMBuilder* builder) { if (builder) { - Lock lock(m_lock.get()); + Lock lock(m_lock); m_pool.push(builder); } }