CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::InputStream Class Referencefinal

A stream that provides read-only stream functionality. More...

#include <CeresEngine/Foundation/IO/Stream.hpp>

Inheritance diagram for CeresEngine::InputStream:
CeresEngine::Poly< IInputStream, kStreamPolySize, false, IStream >

Public Types

using Seek = IStream::Seek
 An enumeration that describes how a data stream should be seeked.
 

Public Member Functions

 InputStream (InputStream &&) noexcept=default
 
InputStreamoperator= (InputStream &&) noexcept=default
 
 InputStream (const FilePath &path)
 Creates a new file stream by opening the file at the given path.
 
 InputStream (const ByteMemoryView &buffer, bool freeOnClose=false)
 Wrap an existing memory chunk in a stream.
 
 Poly (const Poly &other)
 Creates a new Poly by copying an existing one.
 
 Poly (Poly &&other) noexcept
 Creates a new Poly by moving an existing one.
 
 Poly (std::nullptr_t) noexcept
 Creates a new empty Poly.
 
template<typename TT = T>
requires (std::is_default_constructible_v<TT>)
 Poly () noexcept
 Creates a new empty Poly.
 
template<typename TT , typename... Args>
requires (std::is_convertible_v<TT*, T*>&& std::is_constructible_v<TT, Args&&...>)
 Poly (std::in_place_type_t< TT >, Args &&... args)
 Creates a new Poly that holds a newly constructed object of type TT.
 
template<typename... Args>
requires (std::is_constructible_v<T, Args...>)
 Poly (Args &&... args)
 Creates a new Poly that holds a newly constructed object of type T.
 
template<typename TT >
requires (std::is_convertible_v<TT*, T*> && Copyable)
 Poly (TT object)
 Creates a new Poly that holds a copy constructed object of type TT.
 
template<typename TT >
requires (std::is_convertible_v<TT*, T*> && !Copyable)
 Poly (TT &&object)
 Creates a new Poly that holds a copy constructed object of type TT.
 
 Poly (T *const instance)
 Creates a new Poly instance by referencing another.
 
template<typename U >
requires (Copyable)
 Poly (const Poly< U, SmallSize, Copyable, BaseType > &other)
 Creates a new Poly instance by referencing another.
 
template<typename U >
 Poly (Poly< U, SmallSize, Copyable, BaseType > &&other)
 Creates a new Poly instance by referencing another.
 
- Public Member Functions inherited from CeresEngine::Poly< IInputStream, kStreamPolySize, false, IStream >
 Poly (const Poly &other)
 Creates a new Poly by copying an existing one.
 
 Poly (Poly &&other) noexcept
 Creates a new Poly by moving an existing one.
 
 Poly (std::nullptr_t) noexcept
 Creates a new empty Poly.
 
 Poly () noexcept
 Creates a new empty Poly.
 
 Poly (std::in_place_type_t< TT >, Args &&... args)
 Creates a new Poly that holds a newly constructed object of type TT.
 
 Poly (Args &&... args)
 Creates a new Poly that holds a newly constructed object of type T.
 
 Poly (TT object)
 Creates a new Poly that holds a copy constructed object of type TT.
 
 Poly (TT &&object)
 Creates a new Poly that holds a copy constructed object of type TT.
 
 Poly (IInputStream *const instance)
 Creates a new Poly instance by referencing another.
 
 Poly (const Poly< U, SmallSize, Copyable, IStream > &other)
 Creates a new Poly instance by referencing another.
 
 Poly (Poly< U, SmallSize, Copyable, IStream > &&other)
 Creates a new Poly instance by referencing another.
 
bool isCopyable () const noexcept
 Checks if the Poly copy constructor can be safely called.
 
Polyoperator= (const Poly &other)
 Assigns a Poly by copying an existing one.
 
Polyoperator= (Poly &&other)
 Assigns a Poly by moving an existing one.
 
Polyoperator= (std::nullptr_t) noexcept
 Assigns the Poly a nullptr value.
 
bool isMovable () const noexcept
 Checks if the Poly move constructor can be safely called.
 
 ~Poly () noexcept
 Destroys the Poly and destroys the object is present.
 
TT & emplace (Args &&... args)
 Emplace a new object of type TT into the Poly.
 
TT & emplace (TT &&instance)
 
bool valid () const
 Checks if the pointer has a valid object stored in it.
 
bool empty () const
 Checks if the pointer has a valid object stored in it.
 
 operator bool () const
 Checks if the pointer has a valid object stored in it.
 
IInputStreamget ()
 
const IInputStreamget () const
 
IInputStreamoperator-> ()
 
const IInputStreamoperator-> () const
 
const IInputStreamoperator* () const &
 
IInputStreamoperator* () &
 &
 
IInputStream && operator* () &&
 &
 
const std::type_info & getTypeID () const
 
bool is () const
 Checks if the hold object is of type TT.
 
TT * being ()
 Safely casts the hold type to TT.
 
const TT * being () const
 Safely casts the hold type to TT.
 
TT & as () &
 Casts the hold type to TT.
 
TT && as () &&
 Casts the hold type to TT.
 
const TT & as () const &
 Casts the hold type to TT.
 

Additional Inherited Members

- Static Public Attributes inherited from CeresEngine::Poly< IInputStream, kStreamPolySize, false, IStream >
static constexpr bool isSmall
 true if an object of type U will not cause an allocation.
 

Detailed Description

A stream that provides read-only stream functionality.

Member Typedef Documentation

◆ Seek

An enumeration that describes how a data stream should be seeked.

Constructor & Destructor Documentation

◆ InputStream() [1/3]

CeresEngine::InputStream::InputStream ( InputStream &&  )
defaultnoexcept

◆ InputStream() [2/3]

CeresEngine::InputStream::InputStream ( const FilePath path)
explicit

Creates a new file stream by opening the file at the given path.

Parameters
pathThe file path to be open

◆ InputStream() [3/3]

CeresEngine::InputStream::InputStream ( const ByteMemoryView buffer,
bool  freeOnClose = false 
)
explicit

Wrap an existing memory chunk in a stream.

Parameters
bufferMemory to wrap the data stream around.
freeOnCloseShould the memory buffer be freed when the data stream goes out of scope.

Member Function Documentation

◆ operator=()

InputStream & CeresEngine::InputStream::operator= ( InputStream &&  )
defaultnoexcept

◆ Poly() [1/11]

template<typename TT = T>
requires (std::is_default_constructible_v<TT>)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( )
inlinenoexcept

Creates a new empty Poly.

◆ Poly() [2/11]

template<typename... Args>
requires (std::is_constructible_v<T, Args...>)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( Args &&...  args)
inlineexplicit

Creates a new Poly that holds a newly constructed object of type T.

Template Parameters
Argsthe object constructor argument types
Parameters
argsThe object constructor arguments

◆ Poly() [3/11]

CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( const Poly other)
inline

Creates a new Poly by copying an existing one.

Parameters
otherThe instance to copy from

◆ Poly() [4/11]

template<typename U >
requires (Copyable)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( const Poly< U, SmallSize, Copyable, BaseType > &  other)
inline

Creates a new Poly instance by referencing another.

This will not copy the object and will always reference to the original instance.

Parameters
instanceThe instance to create a new Poly reference from.

◆ Poly() [5/11]

CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( Poly &&  other)
inlinenoexcept

Creates a new Poly by moving an existing one.

Parameters
otherThe instance to move from

◆ Poly() [6/11]

template<typename U >
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( Poly< U, SmallSize, Copyable, BaseType > &&  other)
inline

Creates a new Poly instance by referencing another.

This will not copy the object and will always reference to the original instance.

Parameters
instanceThe instance to create a new Poly reference from.

◆ Poly() [7/11]

template<typename TT , typename... Args>
requires (std::is_convertible_v<TT*, T*>&& std::is_constructible_v<TT, Args&&...>)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( std::in_place_type_t< TT ,
Args &&...  args 
)
inlineexplicit

Creates a new Poly that holds a newly constructed object of type TT.

Template Parameters
TTthe object type
Argsthe object constructor argument types
Parameters
argsThe object constructor arguments

◆ Poly() [8/11]

CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( std::nullptr_t  )
inlinenoexcept

Creates a new empty Poly.

◆ Poly() [9/11]

CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( T *const  instance)
inline

Creates a new Poly instance by referencing another.

This will not copy the object and will always reference to the original instance.

Parameters
instanceThe instance to create a new Poly reference from.

◆ Poly() [10/11]

template<typename TT >
requires (std::is_convertible_v<TT*, T*> && !Copyable)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( TT &&  object)
inline

Creates a new Poly that holds a copy constructed object of type TT.

Template Parameters
TTthe object type

◆ Poly() [11/11]

template<typename TT >
requires (std::is_convertible_v<TT*, T*> && Copyable)
CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::Poly ( TT  object)
inline

Creates a new Poly that holds a copy constructed object of type TT.

Template Parameters
TTthe object type

The documentation for this class was generated from the following file: