arabica/XPath/impl/xpath_execution_context.hpp

52 lines
1.6 KiB
C++
Raw Normal View History

2005-08-04 22:42:30 +02:00
#ifndef ARABICA_XPATH_EXECUTION_CONTEXT_HPP
#define ARABICA_XPATH_EXECUTION_CONTEXT_HPP
#include <Utils/StringAdaptor.h>
2005-08-04 22:42:30 +02:00
#include "xpath_variable_resolver.hpp"
#include "xpath_resolver_holder.hpp"
namespace Arabica
{
namespace XPath
{
class ExecutionContext
{
public:
ExecutionContext() :
position_(static_cast<size_t>(-1)),
last_(static_cast<size_t>(-1))
2005-08-04 22:42:30 +02:00
{
} // ExecutionContext
ExecutionContext(size_t last, const ExecutionContext& parent) :
position_(static_cast<size_t>(-1)),
2005-08-04 22:42:30 +02:00
last_(last),
variableResolver_(parent.variableResolver_)
{
} // ExecutionContext
size_t position() const { return position_; }
size_t last() const { return last_; }
void setPosition(unsigned int pos) { position_ = pos; }
const VariableResolver<std::string, Arabica::default_string_adaptor<std::string> >& variableResolver() const { return variableResolver_.get(); }
void setVariableResolver(const VariableResolver<std::string, Arabica::default_string_adaptor<std::string> >& resolver) { variableResolver_.set(resolver); }
void setVariableResolver(VariableResolverPtr<std::string, Arabica::default_string_adaptor<std::string> >& resolver) { variableResolver_.set(resolver); }
2005-08-04 22:42:30 +02:00
private:
size_t position_;
size_t last_;
ResolverHolder<const VariableResolver<std::string, Arabica::default_string_adaptor<std::string> > > variableResolver_;
2005-08-04 22:42:30 +02:00
ExecutionContext(const ExecutionContext&);
ExecutionContext& operator=(const ExecutionContext&);
bool operator==(const ExecutionContext&) const;
}; // class ExecutionContext
} // namespace XPath
} // namespace Arabica
#endif