|  | #Topic Stream | 
|  | #Alias Stream_Reference ## | 
|  |  | 
|  | #Class SkStream | 
|  |  | 
|  | #Code | 
|  | #Populate | 
|  | ## | 
|  |  | 
|  | SkStream describes an abstract class that provides readable serial access to | 
|  | data. Subclass SkFILEStream stores readable data in a file. Subclass | 
|  | SkMemoryStream stores readable data in memory. | 
|  |  | 
|  | SkStream data is immutable; data access is synchronous. Reading Stream data | 
|  | returns only as many bytes as were available when Stream was created. Unlike | 
|  | traditional streams, additional data will not become available at a later time | 
|  | or on a subsequent read request. | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual ~SkStream() | 
|  | #In Constructors | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method SkStream() | 
|  | #In Constructors | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method static std::unique_ptr<SkStreamAsset> MakeFromFile(const char path[]) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Attempts to open the specified file as a stream, returns nullptr on failure. | 
|  |  | 
|  | #Param path  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual size_t read(void* buffer, size_t size) = 0 | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Reads or skips size number of bytes. | 
|  | If buffer is nullptr, skip size bytes, return how many were skipped. | 
|  | If buffer is not nullptr, copy size bytes into buffer, return how many were copied. | 
|  |  | 
|  | #Param buffer  when nullptr skip size bytes, otherwise copy size bytes into buffer | 
|  | ## | 
|  | #Param size  the number of bytes to skip or copy | 
|  | ## | 
|  |  | 
|  | #Return  the number of bytes actually read. | 
|  | ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method size_t skip(size_t size) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Skip size number of bytes. #Param size  incomplete ## | 
|  |  | 
|  | #Return  the actual number bytes that could be skipped | 
|  | ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual size_t peek(void* buffer, size_t size) const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Attempt to peek at size bytes. | 
|  | If this stream supports peeking, copy min(size, peekable bytes) into | 
|  | buffer, and return the number of bytes copied. | 
|  | If the stream does not support peeking, or cannot peek any bytes, | 
|  | return 0 and leave buffer unchanged. | 
|  | The stream is guaranteed to be in the same visible state after this | 
|  | call, regardless of success or failure. | 
|  |  | 
|  | #Param buffer  must not be nullptr, and must be at least size bytes. Destination | 
|  | to copy bytes | 
|  | ## | 
|  | #Param size  number of bytes to copy | 
|  | ## | 
|  |  | 
|  | #Return  number of bytes peeked/copied. | 
|  | ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool isAtEnd() const = 0 | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns true when all the bytes in the stream have been read. | 
|  | This may return true early (when there are no more bytes to be read) | 
|  | or late (after the first unsuccessful read). | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readS8(int8_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readS16(int16_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readS32(int32_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readU8(uint8_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readU16(uint16_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readU32(uint32_t* i) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param i  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readBool(bool* b) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param b  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readScalar(SkScalar* s) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param s  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method bool readPackedUInt(size_t* u) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param u  incomplete ## | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool rewind() | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Rewinds to the beginning of the stream. Returns true if the stream is known | 
|  | to be at the beginning after this call returns. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method std::unique_ptr<SkStream> duplicate() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Duplicates this stream. If this cannot be done, returns nullptr. | 
|  | The returned stream will be positioned at the beginning of its data. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method std::unique_ptr<SkStream> fork() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Duplicates this stream. If this cannot be done, returns nullptr. | 
|  | The returned stream will be positioned the same as this stream. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool hasPosition() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns true if this stream can report its current position. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual size_t getPosition() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns the current position in the stream. If this cannot be done, returns 0. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool seek(size_t position) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param position incomplete ## | 
|  |  | 
|  | Seeks to an absolute position in the stream. If this cannot be done, returns false. | 
|  | If an attempt is made to seek past the end of the stream, the position will be set | 
|  | to the end of the stream. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool move(long offset) | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | #Param offset incomplete ## | 
|  |  | 
|  | Seeks to an relative offset in the stream. If this cannot be done, returns false. | 
|  | If an attempt is made to move to a position outside the stream, the position will be set | 
|  | to the closest point within the stream (beginning or end). | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual bool hasLength() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns true if this stream can report its total length. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual size_t getLength() const | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns the total length of the stream. If this cannot be done, returns 0. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | # ------------------------------------------------------------------------------ | 
|  |  | 
|  | #Method virtual const void* getMemoryBase() | 
|  | #In incomplete | 
|  | #Line # incomplete ## | 
|  |  | 
|  | Returns the starting address for the data. If this cannot be done, returns nullptr. | 
|  |  | 
|  | #Return incomplete ## | 
|  |  | 
|  | #Example | 
|  | // incomplete | 
|  | ## | 
|  |  | 
|  | #SeeAlso incomplete | 
|  |  | 
|  | #Method ## | 
|  |  | 
|  | #Class SkStream ## | 
|  |  | 
|  | #Topic Stream ## |