diff --git a/code/nel/include/nel/misc/xml_auto_ptr.h b/code/nel/include/nel/misc/xml_auto_ptr.h index 8e0c3adb7..83f6b1ad8 100644 --- a/code/nel/include/nel/misc/xml_auto_ptr.h +++ b/code/nel/include/nel/misc/xml_auto_ptr.h @@ -19,6 +19,9 @@ #ifndef XML_AUTO_PTR_H #define XML_AUTO_PTR_H +#include "nel/misc/types_nl.h" +#include "nel/misc/debug.h" + #include /** Simple auto pointer for xml pointers @@ -28,7 +31,7 @@ class CXMLAutoPtr public: CXMLAutoPtr(const char *value = NULL) : _Value(value) {} CXMLAutoPtr(const unsigned char *value) : _Value((const char *) value) {} - ~CXMLAutoPtr() { destroy(); } + ~CXMLAutoPtr(); operator const char *() const { return _Value; } operator bool() const { return _Value != NULL; } inline std::string str() const { return _Value; } @@ -36,13 +39,7 @@ public: operator const unsigned char *() const { return (const unsigned char *) _Value; } char operator * () const { nlassert(_Value); return *_Value; } /// NB : This remove previous owned pointer with xmlFree - CXMLAutoPtr &operator = (const char *other) - { - if (other == _Value) return *this; - destroy(); - _Value = other; - return *this; - } + CXMLAutoPtr &operator = (const char *other); CXMLAutoPtr &operator = (const unsigned char *other) { @@ -54,14 +51,7 @@ public: private: const char *_Value; private: - void destroy() - { - if (_Value) - { - xmlFree(const_cast(_Value)); - _Value = NULL; - } - } + void destroy(); // We'd rather avoid problems CXMLAutoPtr(const CXMLAutoPtr &/* other */) diff --git a/code/nel/src/misc/xml_auto_ptr.cpp b/code/nel/src/misc/xml_auto_ptr.cpp new file mode 100644 index 000000000..fbf681e1c --- /dev/null +++ b/code/nel/src/misc/xml_auto_ptr.cpp @@ -0,0 +1,47 @@ +// Ryzom - MMORPG Framework +// Copyright (C) 2010 Winch Gate Property Limited +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU Affero General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU Affero General Public License for more details. +// +// You should have received a copy of the GNU Affero General Public License +// along with this program. If not, see . + + + +#include "stdmisc.h" +#include "nel/misc/xml_auto_ptr.h" + +#include + +//======================================= +void CXMLAutoPtr::destroy() +{ + if (_Value) + { + xmlFree(const_cast(_Value)); + _Value = NULL; + } +} + +//======================================= +CXMLAutoPtr::~CXMLAutoPtr() +{ + destroy(); +} + +//======================================= +CXMLAutoPtr &CXMLAutoPtr::operator = (const char *other) +{ + if (other == _Value) return *this; + destroy(); + _Value = other; + return *this; +}