- improved STO correction

[Buffer]
- renamed readAt to peekAt
- added readAt which consumes


git-svn-id: http://moon:8086/svn/matlab/trunk@86 801c6759-fa7c-4059-a304-17956f83a07c
This commit is contained in:
2015-05-09 15:18:41 +00:00
parent 473374d0c2
commit a7b916431e
2 changed files with 98 additions and 15 deletions
+14 -3
View File
@@ -1,6 +1,6 @@
function [buf] = buffer()
buf = struct('mem', [], 'ri', 0, 'wi', 0, 'obj', @()obj_(), 'len', @()len_(), 'read', @(len)read_(len), 'readAt', @(len, offset)readAt_(len, offset), 'setReadIndex', @(offset)setReadIndex_(offset), 'write', @(x)write_(x));
buf = struct('mem', [], 'ri', 0, 'wi', 0, 'obj', @()obj_(), 'len', @()len_(), 'read', @(len)read_(len), 'readAt', @(len, offset)readAt_(len, offset), 'peekAt', @(len, offset)peekAt_(len, offset), 'setReadIndex', @(offset)setReadIndex_(offset), 'setReadIndexRelative', @(offset)setReadIndexRelative_(offset), 'write', @(x)write_(x));
function b = obj_()
b = buf;
@@ -13,7 +13,7 @@ function [buf] = buffer()
end
end
function [x] = readAt_(len, offset)
function [x] = peekAt_(len, offset)
x = [];
if (buf.ri+offset) >= 0
@@ -23,8 +23,15 @@ function [buf] = buffer()
end
end
function [x] = readAt_(len, offset)
x = peekAt_(len, offset);
if ~isempty(x)
buf.ri = buf.ri + len;
end
end
function [x] = read_(len)
x = readAt_(len, 0);
x = peekAt_(len, 0);
if ~isempty(x)
buf.ri = buf.ri + len;
end
@@ -34,6 +41,10 @@ function [buf] = buffer()
buf.ri = offset;
end
function setReadIndexRelative_(offset)
buf.ri = buf.ri+offset;
end
function write_(x)
len = length(x);
buf.mem(buf.wi+1:buf.wi+len, :) = x;