summaryrefslogtreecommitdiff
path: root/src/yarray.hpp
diff options
context:
space:
mode:
authorMartin Lucina <martin@lucina.net>2012-01-23 08:53:35 +0100
committerMartin Lucina <martin@lucina.net>2012-01-23 08:53:35 +0100
commite645fc2693acc796304498909786b7b47005b429 (patch)
tree4118cd4c7b9eba3ba1d6892800c79669ea94c4e9 /src/yarray.hpp
parent2c416a793ea781273a5da6742211f5f01af13a2b (diff)
Imported Upstream version 2.1.3upstream/2.1.3
Diffstat (limited to 'src/yarray.hpp')
-rw-r--r--src/yarray.hpp110
1 files changed, 0 insertions, 110 deletions
diff --git a/src/yarray.hpp b/src/yarray.hpp
deleted file mode 100644
index 8c79b99..0000000
--- a/src/yarray.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Copyright (c) 2007-2010 iMatix Corporation
-
- This file is part of 0MQ.
-
- 0MQ is free software; you can redistribute it and/or modify it under
- the terms of the Lesser GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
- 0MQ 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
- Lesser GNU General Public License for more details.
-
- You should have received a copy of the Lesser GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef __ZMQ_YARRAY_INCLUDED__
-#define __ZMQ_YARRAY_INCLUDED__
-
-#include <vector>
-#include <algorithm>
-
-namespace zmq
-{
-
- // Fast array implementation with O(1) access to item, insertion and
- // removal. Yarray stores pointers rather than objects. The objects have
- // to be derived from yarray_item_t class.
-
- template <typename T> class yarray_t
- {
- public:
-
- typedef typename std::vector <T*>::size_type size_type;
-
- inline yarray_t ()
- {
- }
-
- inline ~yarray_t ()
- {
- }
-
- inline size_type size ()
- {
- return items.size ();
- }
-
- inline bool empty ()
- {
- return items.empty ();
- }
-
- inline T *&operator [] (size_type index_)
- {
- return items [index_];
- }
-
- inline void push_back (T *item_)
- {
- if (item_)
- item_->set_yarray_index (items.size ());
- items.push_back (item_);
- }
-
- inline void erase (T *item_) {
- erase (item_->get_yarray_index ());
- }
-
- inline void erase (size_type index_) {
- if (items.back ())
- items.back ()->set_yarray_index (index_);
- items [index_] = items.back ();
- items.pop_back ();
- }
-
- inline void swap (size_type index1_, size_type index2_)
- {
- if (items [index1_])
- items [index1_]->set_yarray_index (index2_);
- if (items [index2_])
- items [index2_]->set_yarray_index (index1_);
- std::swap (items [index1_], items [index2_]);
- }
-
- inline void clear ()
- {
- items.clear ();
- }
-
- inline size_type index (T *item_)
- {
- return (size_type) item_->get_yarray_index ();
- }
-
- private:
-
- typedef std::vector <T*> items_t;
- items_t items;
-
- yarray_t (const yarray_t&);
- void operator = (const yarray_t&);
- };
-
-}
-
-#endif