#ifndef INPUTXSLT_SRC_SUPPORT_DOM_DOCUMENT_CACHE_H_ #define INPUTXSLT_SRC_SUPPORT_DOM_DOCUMENT_CACHE_H_ #include #include #include #include #include #include "common.h" namespace InputXSLT { class DomDocumentCache { class document_deleter { friend std::unique_ptr; void operator()(xercesc::DOMDocument*); }; public: typedef std::unique_ptr< xercesc::DOMDocument, document_deleter > document_ptr; static document_ptr createDocument(); static document_ptr createDocument(const std::string&); DomDocumentCache(); xalan::XalanDocument* create(document_ptr&&); private: class item; std::mutex write_mutex_; std::stack> cache_; }; } #include "document_cache_item.h" #endif // INPUTXSLT_SRC_SUPPORT_DOM_DOCUMENT_CACHE_H_