Skip to content
Snippets Groups Projects
Commit 8e6b3756 authored by jacques.grelet_ird.fr's avatar jacques.grelet_ird.fr
Browse files

remove queue class

parent 81833341
No related branches found
No related tags found
No related merge requests found
function display(self)
%DISPLAY Display a queue table object
% display(queue)
% Copyright (c) 2004 Matthew Krauski (mkrauski@uci.edu), CNLM, UC Irvine
%isLoose = strcmp(get(0,'FormatSpacing'),'loose');
isLoose = 0;
if(length(inputname(1)) ~= 0)
if isLoose, disp(' '), end
disp( sprintf('%s =', inputname(1)) );
end
if isLoose, disp(' '), end
disp(struct(self));
function data = get(self)
%GET data from index position in queue, prepared from undo or redo methods
% usage
% data = get(queue)
% $Id$
% return object prepared in data
% ------------------------------
data = self.data;
function bool = isempty(self)
%ISEMPTY Check to see if the queue is empty
% bool = isempty(queue)
%
bool = isempty(self.data);
function self = push(self, object)
%PUSH put new object in queue
% queue = push(queue,object)
%
% $Id$
% if empty object, no action
% --------------------------
if isempty(object)
return
end
% if new entrie is equal to last entry, no action
% use short circuit operator, second expression (isequal) isn't evaluate
% if first expression (isempty) is true
% -----------------------------------------------
if ~self.index || isempty(self.buffer) || ~isequal(object, self.buffer{self.index})
% increment internal index
% ------------------------
self.index = self.index+1;
% store new object at index
% -------------------------
self.buffer{self.index} = object;
% test if index reach end of buffer
% --------------------------------
if self.index <= self.size
% reset all data stored in buffer after index
% -------------------------------------------
self.buffer(self.index+1:end) = [];
% reset size
% ----------
self.size = self.index;
else
% increment size
% --------------
self.size = self.size +1;
end
% if an object was previously prepare in data with undo or redo, reset it
% -----------------------------------------------------------------------
if ~isempty(self.data)
self.data = {};
end
else
return
end
\ No newline at end of file
function queue = queue(varargin)
%QUEUE constructor for queue object
% usage:
% q = queue - Default constructor, empty queue table
% mq = queue(q) - Copy constructor
%
% example:
% q = queue
% q = push(q, [1:2])
% q = push(q, ones(1,5))
% q = undo(q)
% data = get(q)
% q = push(q, zeros(1,3))
% etc ...
%
% $Id$
% todos: define maxSize dimension
% if nargin == 1 && isa(varargin{1},'integer')
% q.maxSize = varargin{1};
% end
% and test maxSize in push
% copy constructor
% ----------------
if nargin == 1 && isa(varargin{1},'queue')
queue = varargin{1};
return;
% default constructor
% -------------------
elseif nargin == 0
% current index inside of queue, change by undo & redo
% ----------------------------------------------------
q.index = 0;
% number of object currently stored
% ---------------------------------
q.size = 0;
% buffer where objects are stored
% -------------------------------
q.buffer = {};
% one object buffer, prepared by undo & redo methods and disposed for get method
% -----------------------------------------------------------------------
q.data = {};
else
error('queue:queue', 'Invalid arguments.');
end
% class constructor
% -----------------
queue = class(q,'queue');
function self = redo(self)
% REDO move up queue index and prepare return value for the next get
% method
% queue = redo(queue)
%
% $Id$
% reach end of queue
% ------------------
if self.index == self.size
self.data = {};
return
end
% move index up
% ---------------
self.index = self.index + 1;
% prepare (copy) data for get method
% ----------------------------------
self.data = self.buffer{self.index};
function self = undo(self)
% UNDO move back queue index and prepare return value for the next get
% method
% queue = undo(queue)
%
% $Id$
% reach empty queue
% -----------------
switch self.index
case 0
return
case 1
% move index back
% ---------------
self.index = self.index - 1;
% reset self.data
% ---------------
self.data = {};
% return, don't make any change
% -----------------------------
return
otherwise
% move index back
% ---------------
self.index = self.index - 1;
% prepare (copy) data for get method
% ----------------------------------
self.data = self.buffer{self.index};
end
function data = view(self)
%VIEW
% $Id$
self.index
self.lifo
self.data
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment