#Topic FILEStream
#Alias FILEStream_Reference ##

#Class SkFILEStream

A stream that wraps a C FILE* file stream. */

#Code
#Populate
##

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

#Method explicit SkFILEStream(const char path[] = nullptr)
#In Constructors
#Line # incomplete ##

Initializes Stream by reading data contained by path.
File descriptor is opened here and is closed when SkFILEStream
destructor is invoked.

#Param path  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method explicit SkFILEStream(FILE* file)
#In Constructors
#Line # incomplete ##

Initialize the stream with an existing C_FILE stream.
The current position of the C_FILE stream will be considered the
beginning of the SkFILEStream.
The C_FILE stream is closed when SkFILEStream destructor is invoked.

#Param file  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method static std::unique_ptr<SkFILEStream> Make(const char path[])
#In incomplete
#Line # incomplete ##

#Param path  incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method bool isValid() const
#In incomplete
#Line # incomplete ##

Returns true if the current path could be opened.

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

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

Close this SkFILEStream.

#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 bool rewind() override
#In incomplete
#Line # incomplete ##

#Return incomplete ##

#Example
// incomplete
##

#SeeAlso incomplete

#Method ##

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

#Method std::unique_ptr<SkStreamAsset> 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<SkStreamAsset> 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 ##

#Class SkFILEStream ##

#Topic FILEStream ##
