diff -r 000000000000 -r 6474c204b198 gfx/skia/trunk/include/utils/SkFrontBufferedStream.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gfx/skia/trunk/include/utils/SkFrontBufferedStream.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,35 @@ +/* + * Copyright 2013 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkTypes.h" + +class SkStream; +class SkStreamRewindable; + +/** + * Specialized stream that buffers the first X bytes of a stream, + * where X is passed in by the user. Note that unlike some buffered + * stream APIs, once more bytes than can fit in the buffer are read, + * no more buffering is done. This stream is designed for a use case + * where the caller knows that rewind will only be called from within + * X bytes (inclusive), and the wrapped stream is not necessarily + * able to rewind at all. + */ +class SkFrontBufferedStream { +public: + /** + * Creates a new stream that wraps and buffers an SkStream. + * @param stream SkStream to buffer. If stream is NULL, NULL is + * returned. When this call succeeds (i.e. returns non NULL), + * SkFrontBufferedStream is expected to be the only owner of + * stream, so it should be unreffed and no longer used directly. + * @param minBufferSize Minimum size of buffer required. + * @return An SkStream that can buffer at least minBufferSize, or + * NULL on failure. + */ + static SkStreamRewindable* Create(SkStream* stream, size_t minBufferSize); +};