samer@36: % cycler - cycles through input sequence repeatedly samer@3: % samer@36: % cycler :: seq(A) -> seq(A). samer@36: classdef cycler < seq samer@3: properties (GetAccess=private, SetAccess=private) samer@3: source samer@3: orig samer@3: end samer@3: methods samer@36: function o=cycler(source) samer@3: o.orig=source; samer@3: o.source=source; samer@3: end samer@3: samer@3: function z=elsize(o), z=elsize(o.source); end samer@3: function s=tostring(o), s=sprintf('cycle(%s)',tostring(o.source)); end samer@3: function x=head(o), x=head(o.source); end samer@3: function o=next(o), samer@3: o.source=next(o.source); samer@3: if isempty(o.source), o.source=o.orig; end samer@3: end samer@3: end samer@3: end