scoped_ptr definitions for libxml2 objects

Change-Id: Iafbfce42d5cb91b0a5ddbf3149d434e10a4cb8d6
This commit is contained in:
Rintaro Kuroiwa 2013-11-18 10:40:47 -08:00
parent c7fb605114
commit 21aad421ce
1 changed files with 28 additions and 0 deletions

View File

@ -0,0 +1,28 @@
// scoped_ptr alias for libxml2 objects. Deleters for the objects are also
// defined in this file.
#ifndef MPD_BASE_XML_SCOPED_XML_PTR_H_
#define MPD_BASE_XML_SCOPED_XML_PTR_H_
#include "base/memory/scoped_ptr.h"
#include "third_party/libxml/src/include/libxml/tree.h"
namespace dash_packager {
namespace xml {
struct XmlDeleter {
// Called by scoped_ptr. http://goo.gl/YaLbcS
inline void operator()(xmlNodePtr ptr) const { xmlFreeNode(ptr); }
inline void operator()(xmlDocPtr ptr) const { xmlFreeDoc(ptr); }
inline void operator()(xmlChar* ptr) const { xmlFree(ptr); }
};
// C++11 allows template alias but standards before it do not. This struct is
// for aliasing scoped_ptr with libxml2 object deleter.
template <typename XmlType>
struct ScopedXmlPtr {
typedef scoped_ptr<XmlType, XmlDeleter> type;
};
} // namespace xml
} // namespace dash_packager
#endif // MPD_BASE_XML_SCOPED_XML_PTR_H_