summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs
diff options
context:
space:
mode:
authorKirill Volinsky <mataes2007@gmail.com>2016-03-11 14:42:30 +0000
committerKirill Volinsky <mataes2007@gmail.com>2016-03-11 14:42:30 +0000
commitee75d9ae4a890d62b009444bed9512b4dab3ee1d (patch)
tree089d790ca21091372539ddd51f3762af232bf82d /protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs
parentbb5bb4407f2578ed8d6dc3b41f6ddb8b798e560c (diff)
old version
git-svn-id: http://svn.miranda-ng.org/main/trunk@16458 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs')
-rw-r--r--protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs83
1 files changed, 0 insertions, 83 deletions
diff --git a/protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs b/protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs
deleted file mode 100644
index c1cab3a02c..0000000000
--- a/protocols/Telegram/tgl/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// © Copyright Henrik Ravn 2004
-//
-// Use, modification and distribution are subject to the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-using System;
-using System.Diagnostics;
-
-namespace DotZLib
-{
-
- /// <summary>
- /// This class implements a circular buffer
- /// </summary>
- internal class CircularBuffer
- {
- #region Private data
- private int _capacity;
- private int _head;
- private int _tail;
- private int _size;
- private byte[] _buffer;
- #endregion
-
- public CircularBuffer(int capacity)
- {
- Debug.Assert( capacity > 0 );
- _buffer = new byte[capacity];
- _capacity = capacity;
- _head = 0;
- _tail = 0;
- _size = 0;
- }
-
- public int Size { get { return _size; } }
-
- public int Put(byte[] source, int offset, int count)
- {
- Debug.Assert( count > 0 );
- int trueCount = Math.Min(count, _capacity - Size);
- for (int i = 0; i < trueCount; ++i)
- _buffer[(_tail+i) % _capacity] = source[offset+i];
- _tail += trueCount;
- _tail %= _capacity;
- _size += trueCount;
- return trueCount;
- }
-
- public bool Put(byte b)
- {
- if (Size == _capacity) // no room
- return false;
- _buffer[_tail++] = b;
- _tail %= _capacity;
- ++_size;
- return true;
- }
-
- public int Get(byte[] destination, int offset, int count)
- {
- int trueCount = Math.Min(count,Size);
- for (int i = 0; i < trueCount; ++i)
- destination[offset + i] = _buffer[(_head+i) % _capacity];
- _head += trueCount;
- _head %= _capacity;
- _size -= trueCount;
- return trueCount;
- }
-
- public int Get()
- {
- if (Size == 0)
- return -1;
-
- int result = (int)_buffer[_head++ % _capacity];
- --_size;
- return result;
- }
-
- }
-}