Add OhmmsXPathObject constructor that can be used with the current xml node.

It is expensive and don't abuse it.
OhmmsXPathObject det("//determinant",cur);



git-svn-id: https://subversion.assembla.com/svn/qmcdev/trunk@6054 e5b18d87-469d-4833-9cc0-8cdfa06e9491
This commit is contained in:
Jeongnim Kim 2013-11-07 17:27:49 +00:00
parent 709fe7329a
commit c5a6c2f4d2
2 changed files with 22 additions and 1 deletions

View File

@ -20,7 +20,7 @@
#include "Utilities/Timer.h"
#include <fstream>
OhmmsXPathObject::OhmmsXPathObject(): NumObjects(0), result(NULL)
OhmmsXPathObject::OhmmsXPathObject(): NumObjects(0), result(NULL),m_context(NULL)
{
}
@ -30,12 +30,23 @@ OhmmsXPathObject::OhmmsXPathObject(const char* expression,
put(expression, context);
}
OhmmsXPathObject::OhmmsXPathObject(const char* expression, xmlNodePtr cur) :NumObjects(0), result(NULL)
{
m_context= xmlXPathNewContext(cur->doc);
put(expression, m_context);
}
OhmmsXPathObject::~OhmmsXPathObject()
{
if(result != NULL)
{
xmlXPathFreeObject(result);
}
if(m_context != NULL)
{
xmlXPathFreeContext(m_context);
}
}
void OhmmsXPathObject::put(const char* expression, xmlXPathContextPtr context)
@ -54,6 +65,7 @@ void OhmmsXPathObject::put(const char* expression, xmlXPathContextPtr context)
}
}
Libxml2Document::Libxml2Document(): m_doc(NULL), m_root(NULL),
m_context(NULL) { }

View File

@ -32,6 +32,14 @@ struct OhmmsXPathObject
*/
OhmmsXPathObject(const char* expression, xmlXPathContextPtr context);
/** constructor
* @param expression xpath expression
* @param cur xmlNodePtr
*
* Create m_context
*/
OhmmsXPathObject(const char* expression, xmlNodePtr cur);
~OhmmsXPathObject();
/** evaluate the expression and create the object
@ -64,6 +72,7 @@ struct OhmmsXPathObject
int NumObjects;
xmlXPathObjectPtr result;
xmlXPathContextPtr m_context;
};
/** class that handles xmlDoc