Newer
Older

jacques.grelet_ird.fr
committed
function queue = queue(varargin)

jacques.grelet_ird.fr
committed
%QUEUE constructor for queue object
% usage:

jacques.grelet_ird.fr
committed
% q = queue - Default constructor, empty queue table
% mq = queue(q) - Copy constructor

jacques.grelet_ird.fr
committed
%
% 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 ...
%

jacques.grelet_ird.fr
committed
% $Id$

jacques.grelet_ird.fr
committed
% todos: define maxSize dimension
% if nargin == 1 && isa(varargin{1},'integer')
% q.maxSize = varargin{1};
% end
% and test maxSize in push
% copy constructor
% ----------------

jacques.grelet_ird.fr
committed
if nargin == 1 && isa(varargin{1},'queue')

jacques.grelet_ird.fr
committed
queue = varargin{1};
return;
% default constructor
% -------------------

jacques.grelet_ird.fr
committed
elseif nargin == 0

jacques.grelet_ird.fr
committed

jacques.grelet_ird.fr
committed
% current index inside of queue, change by undo & redo
% ----------------------------------------------------

jacques.grelet_ird.fr
committed
q.index = 0;

jacques.grelet_ird.fr
committed
% number of object currently stored
% ---------------------------------
q.size = 0;
% buffer where objects are stored
% -------------------------------
q.buffer = {};

jacques.grelet_ird.fr
committed

jacques.grelet_ird.fr
committed
% one object buffer, prepared by undo & redo methods and disposed for get method
% -----------------------------------------------------------------------
q.data = {};

jacques.grelet_ird.fr
committed

jacques.grelet_ird.fr
committed
else

jacques.grelet_ird.fr
committed
error('queue:queue', 'Invalid arguments.');

jacques.grelet_ird.fr
committed
end

jacques.grelet_ird.fr
committed
% class constructor
% -----------------

jacques.grelet_ird.fr
committed
queue = class(q,'queue');