#Topic DynamicMemoryWStream
#Alias DynamicMemoryWStream_Reference ##

#Class SkDynamicMemoryWStream

#Code
#Populate
##

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

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

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method ~SkDynamicMemoryWStream() override
#In Constructors
#Line # incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

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

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

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

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method void copyTo(void* dst) const
#In incomplete
#Line # incomplete ##

Copies bytes read to dst.

#Param dst  incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method bool writeToStream(SkWStream* dst) const
#In incomplete
#Line # incomplete ##

#Param dst  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method void copyToAndReset(void* dst)
#In incomplete
#Line # incomplete ##

Copies bytes read to dst, and resets stream to start.
Internally, frees memory as it is copied, reducing total memory
use on large streams.

#Param dst  incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method bool writeToAndReset(SkWStream* dst)
#In incomplete
#Line # incomplete ##

Writes bytes read to dst, and resets stream to start.
Internally, frees memory as it is copied, reducing total memory
use on large streams.

Stream is reset: data memory is released and stream length is set to zero;
regardless of whether the write was successful.

#Param dst  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method sk_sp<SkData> detachAsData()
#In incomplete
#Line # incomplete ##

Return the contents as SkData, and then reset the stream.

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method std::unique_ptr<SkStreamAsset> detachAsStream()
#In incomplete
#Line # incomplete ##

Reset, returning a reader stream with the current content.

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

Reset the stream to its original, empty, state.

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

#Class SkDynamicMemoryWStream ##

#Topic DynamicMemoryWStream ##
