samer@0: function o=buffer(source,n,m,varargin) samer@0: % BUFFER - Buffer abstract data object samer@0: % samer@0: % buffer :: (source:data, frame:natural, overlap:natural)->data samer@0: % Works exactly like the usual buffer function but when applied samer@0: % to a data object, returns a fndata object. samer@0: samer@0: args=[{n,m} varargin]; samer@0: o=fndata(@(z)buf(args,z),source,'charfn',@(o)charfn(n,n-m,o)); samer@0: samer@0: function x=buf(args,y) samer@0: x=buffer(y,args{:}); samer@0: samer@0: function s=charfn(n,m,o) samer@0: s=sprintf('%s >> buffer(%d/%d)',tostring(source(o)),n,m);