Blame lib/marisa/agent.cc

Packit de3218
#include <new>
Packit de3218
Packit de3218
#include "agent.h"
Packit de3218
#include "grimoire/trie.h"
Packit de3218
Packit de3218
namespace marisa {
Packit de3218
Packit de3218
Agent::Agent() : query_(), key_(), state_() {} 
Packit de3218
Packit de3218
Agent::~Agent() {}
Packit de3218
Packit de3218
void Agent::set_query(const char *str) {
Packit de3218
  MARISA_THROW_IF(str == NULL, MARISA_NULL_ERROR);
Packit de3218
  if (state_.get() != NULL) {
Packit de3218
    state_->reset();
Packit de3218
  }
Packit de3218
  query_.set_str(str);
Packit de3218
}
Packit de3218
Packit de3218
void Agent::set_query(const char *ptr, std::size_t length) {
Packit de3218
  MARISA_THROW_IF((ptr == NULL) && (length != 0), MARISA_NULL_ERROR);
Packit de3218
  if (state_.get() != NULL) {
Packit de3218
    state_->reset();
Packit de3218
  }
Packit de3218
  query_.set_str(ptr, length);
Packit de3218
}
Packit de3218
Packit de3218
void Agent::set_query(std::size_t key_id) {
Packit de3218
  if (state_.get() != NULL) {
Packit de3218
    state_->reset();
Packit de3218
  }
Packit de3218
  query_.set_id(key_id);
Packit de3218
}
Packit de3218
Packit de3218
void Agent::init_state() {
Packit de3218
  MARISA_THROW_IF(state_.get() != NULL, MARISA_STATE_ERROR);
Packit de3218
  state_.reset(new (std::nothrow) grimoire::State);
Packit de3218
  MARISA_THROW_IF(state_.get() == NULL, MARISA_MEMORY_ERROR);
Packit de3218
}
Packit de3218
Packit de3218
void Agent::clear() {
Packit de3218
  Agent().swap(*this);
Packit de3218
}
Packit de3218
Packit de3218
void Agent::swap(Agent &rhs) {
Packit de3218
  query_.swap(rhs.query_);
Packit de3218
  key_.swap(rhs.key_);
Packit de3218
  state_.swap(rhs.state_);
Packit de3218
}
Packit de3218
Packit de3218
}  // namespace marisa