diff options
| author | Martin Sustrik <sustrik@250bpm.com> | 2011-06-01 11:54:33 +0200 | 
|---|---|---|
| committer | Martin Sustrik <sustrik@250bpm.com> | 2011-06-01 11:54:33 +0200 | 
| commit | 3935258b826adc31815be4f91b2f6eb02bb3c8ed (patch) | |
| tree | cf583de08928de3c635511e6f3c70646f6948c7a /src | |
| parent | ee7313b4d896e9f7ff6a035395b20f617e4ff796 (diff) | |
Minor code beautification for mtrie_t
Signed-off-by: Martin Sustrik <sustrik@250bpm.com>
Diffstat (limited to 'src')
| -rw-r--r-- | src/mtrie.cpp | 42 | ||||
| -rw-r--r-- | src/mtrie.hpp | 4 | 
2 files changed, 31 insertions, 15 deletions
| diff --git a/src/mtrie.cpp b/src/mtrie.cpp index ac1fc31..91f6852 100644 --- a/src/mtrie.cpp +++ b/src/mtrie.cpp @@ -52,6 +52,12 @@ zmq::mtrie_t::~mtrie_t ()  bool zmq::mtrie_t::add (unsigned char *prefix_, size_t size_, pipe_t *pipe_)  { +    return add_helper (prefix_, size_, pipe_); +} + +bool zmq::mtrie_t::add_helper (unsigned char *prefix_, size_t size_, +    pipe_t *pipe_) +{      //  We are at the node corresponding to the prefix. We are done.      if (!size_) {          bool result = pipes.empty (); @@ -114,14 +120,14 @@ bool zmq::mtrie_t::add (unsigned char *prefix_, size_t size_, pipe_t *pipe_)              next.node = new (std::nothrow) mtrie_t;              zmq_assert (next.node);          } -        return next.node->add (prefix_ + 1, size_ - 1, pipe_); +        return next.node->add_helper (prefix_ + 1, size_ - 1, pipe_);      }      else {          if (!next.table [c - min]) {              next.table [c - min] = new (std::nothrow) mtrie_t;              zmq_assert (next.table [c - min]);          } -        return next.table [c - min]->add (prefix_ + 1, size_ - 1, pipe_); +        return next.table [c - min]->add_helper (prefix_ + 1, size_ - 1, pipe_);      }  } @@ -175,23 +181,29 @@ void zmq::mtrie_t::rm_helper (pipe_t *pipe_, unsigned char **buff_,  bool zmq::mtrie_t::rm (unsigned char *prefix_, size_t size_, pipe_t *pipe_)  { -     if (!size_) { -         pipes_t::size_type erased = pipes.erase (pipe_); -         zmq_assert (erased == 1); -         return pipes.empty (); -     } +    return rm_helper (prefix_, size_, pipe_); +} -     unsigned char c = *prefix_; -     if (!count || c < min || c >= min + count) -         return false; +bool zmq::mtrie_t::rm_helper (unsigned char *prefix_, size_t size_, +    pipe_t *pipe_) +{ +    if (!size_) { +        pipes_t::size_type erased = pipes.erase (pipe_); +        zmq_assert (erased == 1); +        return pipes.empty (); +    } + +    unsigned char c = *prefix_; +    if (!count || c < min || c >= min + count) +        return false; -     mtrie_t *next_node = -         count == 1 ? next.node : next.table [c - min]; +    mtrie_t *next_node = +        count == 1 ? next.node : next.table [c - min]; -     if (!next_node) -         return false; +    if (!next_node) +        return false; -     return next_node->rm (prefix_ + 1, size_ - 1, pipe_); +    return next_node->rm_helper (prefix_ + 1, size_ - 1, pipe_);  }  void zmq::mtrie_t::match (unsigned char *data_, size_t size_, pipes_t &pipes_) diff --git a/src/mtrie.hpp b/src/mtrie.hpp index 99f20e2..cd47029 100644 --- a/src/mtrie.hpp +++ b/src/mtrie.hpp @@ -60,10 +60,14 @@ namespace zmq      private: +        bool add_helper (unsigned char *prefix_, size_t size_, +            class pipe_t *pipe_);          void rm_helper (class pipe_t *pipe_, unsigned char **buff_,              size_t buffsize_, size_t maxbuffsize_,              void (*func_) (unsigned char *data_, size_t size_, void *arg_),              void *arg_); +        bool rm_helper (unsigned char *prefix_, size_t size_, +            class pipe_t *pipe_);          pipes_t pipes;          unsigned char min; | 
