summaryrefslogtreecommitdiff
path: root/cppe/include/IceE/Buffer.h
diff options
context:
space:
mode:
Diffstat (limited to 'cppe/include/IceE/Buffer.h')
-rw-r--r--cppe/include/IceE/Buffer.h194
1 files changed, 0 insertions, 194 deletions
diff --git a/cppe/include/IceE/Buffer.h b/cppe/include/IceE/Buffer.h
deleted file mode 100644
index adc01563ff2..00000000000
--- a/cppe/include/IceE/Buffer.h
+++ /dev/null
@@ -1,194 +0,0 @@
-// **********************************************************************
-//
-// Copyright (c) 2003-2007 ZeroC, Inc. All rights reserved.
-//
-// This copy of Ice-E is licensed to you under the terms described in the
-// ICEE_LICENSE file included in this distribution.
-//
-// **********************************************************************
-
-#ifndef ICEE_BUFFER_H
-#define ICEE_BUFFER_H
-
-#include <IceE/Config.h>
-#include <cstdlib>
-
-#define ICE_SMALL_MESSAGE_BUFFER_OPTIMIZATION
-#define ICE_BUFFER_FIXED_SIZE 64
-
-namespace IceInternal
-{
-
-class Buffer : private IceUtil::noncopyable
-{
-public:
-
- Buffer(size_t maxCapacity) : b(maxCapacity), i(b.begin()) { }
- virtual ~Buffer() { }
-
- ICE_API void swap(Buffer&);
-
- class Container : private IceUtil::noncopyable
- {
- public:
-
- //
- // Standard vector-like operations.
- //
-
- typedef Ice::Byte value_type;
- typedef Ice::Byte* iterator;
- typedef const Ice::Byte* const_iterator;
- typedef Ice::Byte& reference;
- typedef const Ice::Byte& const_reference;
- typedef Ice::Byte* pointer;
- typedef int difference_type;
- typedef size_t size_type;
-
-#ifdef ICE_SMALL_MESSAGE_BUFFER_OPTIMIZATION
- Container(size_type maxCapacity) :
- _buf(_fixed),
- _size(0),
- _capacity(ICE_BUFFER_FIXED_SIZE),
- _maxCapacity(maxCapacity)
- {
- }
-#else
- Container(size_type maxCapacity) :
- _buf(0),
- _size(0),
- _capacity(0),
- _maxCapacity(maxCapacity)
- {
- }
-#endif
-
- ~Container()
- {
-#ifdef ICE_SMALL_MESSAGE_BUFFER_OPTIMIZATION
- if(_buf != _fixed)
- {
- free(_buf);
- }
-#else
- free(_buf);
-#endif
- }
-
- iterator begin()
- {
- return _buf;
- }
-
- const_iterator begin() const
- {
- return _buf;
- }
-
- iterator end()
- {
- return _buf + _size;
- }
-
- const_iterator end() const
- {
- return _buf + _size;
- }
-
- size_type size() const
- {
- return _size;
- }
-
- bool empty() const
- {
- return !_size;
- }
-
- ICE_API void swap(Container&);
-
- ICE_API void clear();
-
- void resize(size_type n) // Inlined for performance reasons.
- {
- if(n == 0)
- {
- clear();
- }
- else if(n > _capacity)
- {
- reserve(n);
- }
- _size = n;
- }
-
- void reset()
- {
- if(_size > 0 && _size * 2 < _capacity)
- {
- //
- // If the current buffer size is smaller than the
- // buffer capacity, we shrink the buffer memory to the
- // current size. This is to avoid holding on too much
- // memory if it's not needed anymore.
- //
- if(++_shrinkCounter > 2)
- {
- reserve(_size);
- _shrinkCounter = 0;
- }
- }
- else
- {
- _shrinkCounter = 0;
- }
- _size = 0;
- }
-
- void push_back(value_type v)
- {
- resize(_size + 1);
- _buf[_size - 1] = v;
- }
-
- reference operator[](size_type n)
- {
- assert(n < _size);
- return _buf[n];
- }
-
- const_reference operator[](size_type n) const
- {
- assert(n < _size);
- return _buf[n];
- }
-
- private:
-
- ICE_API Container(const Container&);
- ICE_API void operator=(const Container&);
- ICE_API void reserve(size_type);
-
- pointer _buf;
- size_type _size;
- size_type _capacity;
- size_type _maxCapacity;
- int _shrinkCounter;
-
-#ifdef ICE_SMALL_MESSAGE_BUFFER_OPTIMIZATION
- //
- // For small buffers, we stack-allocate the memory. Only when
- // a buffer size larger than _fixedSize is requested, we
- // allocate memory dynamically.
- //
- value_type _fixed[ICE_BUFFER_FIXED_SIZE];
-#endif
- };
-
- Container b;
- Container::iterator i;
-};
-
-}
-
-#endif