X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fbuffer.h;h=48fd7f099bc859bdf3f8f3d8c1231368276d1b19;hb=90172686b92b53cc5ab1d60c0e6daecb65d17d3d;hp=02d6975fad5f5b54ff470f3fa9744147c339af2d;hpb=70b939da4f9d4097160e32f2373a7a5ff8f4957f;p=ardour.git diff --git a/libs/ardour/ardour/buffer.h b/libs/ardour/ardour/buffer.h index 02d6975fad..48fd7f099b 100644 --- a/libs/ardour/ardour/buffer.h +++ b/libs/ardour/ardour/buffer.h @@ -1,16 +1,16 @@ /* - Copyright (C) 2006 Paul Davis - + Copyright (C) 2006 Paul Davis + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -25,9 +25,9 @@ #include #include -#include -#include -#include +#include "ardour/types.h" +#include "ardour/data_type.h" +#include "ardour/runtime_functions.h" namespace ARDOUR { @@ -38,7 +38,7 @@ namespace ARDOUR { * methods to actually access the data). This provides a way for code that * doesn't care about the data type to still deal with buffers (which is * why the base class can't be a template). - * + * * To actually read/write buffer contents, use the appropriate derived class. */ class Buffer : public boost::noncopyable @@ -61,21 +61,23 @@ public: DataType type() const { return _type; } bool silent() const { return _silent; } - + void is_silent(bool yn) { _silent = yn; } + /** Reallocate the buffer used internally to handle at least @a size_t units of data. * * The buffer is not silent after this operation. the @a capacity argument * passed to the constructor must have been non-zero. */ - virtual void resize(size_t) = 0; - - /** Clear (eg zero, or empty) buffer starting at TIME @a offset */ - virtual void silence(nframes_t len, nframes_t offset=0) = 0; - + virtual void resize (size_t) = 0; + + /** Clear (eg zero, or empty) buffer */ + virtual void silence (nframes_t len, nframes_t offset = 0) = 0; + /** Clear the entire buffer */ virtual void clear() { silence(_capacity, 0); } - - virtual void read_from(const Buffer& src, nframes_t offset, nframes_t len) = 0; + + virtual void read_from (const Buffer& src, nframes_t len, nframes_t dst_offset = 0, nframes_t src_offset = 0) = 0; + virtual void merge_from (const Buffer& src, nframes_t len, nframes_t dst_offset = 0, nframes_t src_offset = 0) = 0; protected: Buffer(DataType type, size_t capacity)