#Topic MemoryStream
#Alias MemoryStream_Reference ##

#Class SkMemoryStream

#Code
#Populate
##

# ------------------------------------------------------------------------------

#Method SkMemoryStream()
#In Constructors
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method SkMemoryStream(size_t length)
#In Constructors
#Line # incomplete ##

We allocate (and free) the memory. Write to it via getMemoryBase()

#Param length  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method SkMemoryStream(const void* data, size_t length, bool copyData = false)
#In Constructors
#Line # incomplete ##

If copyData is true, the stream makes a private copy of the data.

#Param data  incomplete ##
#Param length  incomplete ##
#Param copyData  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method SkMemoryStream(sk_sp<SkData> data)
#In Constructors
#Line # incomplete ##

Creates the stream to read from the specified data

#Param data  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method static std::unique_ptr<SkMemoryStream> MakeCopy(const void* data, size_t length)
#In incomplete
#Line # incomplete ##

Returns a stream with a copy of the input data.

#Param data  incomplete ##
#Param length  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method static std::unique_ptr<SkMemoryStream> MakeDirect(const void* data, size_t length)
#In incomplete
#Line # incomplete ##

Returns a stream with a bare pointer reference to the input data.

#Param data  incomplete ##
#Param length  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method static std::unique_ptr<SkMemoryStream> Make(sk_sp<SkData> data)
#In incomplete
#Line # incomplete ##

Returns a stream with a shared reference to the input data.

#Param data  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method virtual void setMemory(const void* data, size_t length,
                           bool copyData = false)
#In incomplete
#Line # incomplete ##

Resets the stream to the specified data and length,
just like the constructor.
if copyData is true, the stream makes a private copy of the data

#Param data  incomplete ##
#Param length  incomplete ##
#Param copyData  incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method void setMemoryOwned(const void* data, size_t length)
#In incomplete
#Line # incomplete ##

#Private
Internal use only.
##

#Param data  incomplete ##
#Param length  incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method sk_sp<SkData> asData() const
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method void setData(sk_sp<SkData> data)
#In incomplete
#Line # incomplete ##

#Param data  incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method void skipToAlign4()
#In incomplete
#Line # incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method const void* getAtPos()
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method size_t read(void* buffer, size_t size) override
#In incomplete
#Line # incomplete ##

#Param buffer  incomplete ##
#Param size  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method bool isAtEnd() const override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method size_t peek(void* buffer, size_t size) const override
#In incomplete
#Line # incomplete ##

#Param buffer  incomplete ##
#Param size  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method bool rewind() override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method std::unique_ptr<SkMemoryStream> duplicate() const
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method size_t getPosition() const override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method bool seek(size_t position) override
#In incomplete
#Line # incomplete ##

#Param position  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method bool move(long offset) override
#In incomplete
#Line # incomplete ##

#Param offset  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method std::unique_ptr<SkMemoryStream> fork() const
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method size_t getLength() const override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

# ------------------------------------------------------------------------------

#Method const void* getMemoryBase() override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

#Class SkMemoryStream ##

#Topic MemoryStream ##
