CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
Poly.hpp File Reference
#include "CeresEngine/DataTypes.hpp"
#include "CeresEngine/Macros.hpp"
#include <memory>
#include <type_traits>
#include <cstring>

Go to the source code of this file.

Classes

struct  CeresEngine::impl::PolyImplementation< T >
 A struct that contains the implementation for each concrete type get, copy, move and destroy functions. More...
 
class  CeresEngine::Poly< T, SmallSize, Copyable, BaseType >
 A pointer type that has value semantics. More...
 
struct  CeresEngine::Poly< T, SmallSize, Copyable, BaseType >::ConstructTag< TT >
 A tag used for tagged dispatching the object constructing constructor. More...
 

Namespaces

namespace  CeresEngine
 
namespace  CeresEngine::impl
 Helper functions for comparing iterators.
 

Macros

#define CE_POLY_TMPL(T)   typename T, size_t T##SmallSize, bool T##Copyable, typename T##BaseType
 
#define CE_POLY_TYPE(T)   Poly<T, T##SmallSize, T##Copyable, T##BaseType>
 

Functions

template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator== (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if two Poly objects are equal.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator== (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if two Poly objects are equal.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator== (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if two Poly objects are equal.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator!= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if two Poly objects are not equal.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator!= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if two Poly objects are not equal.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator!= (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if two Poly objects are not equal.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator> (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if a Poly object is greater than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator> (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if a Poly object is greater than another.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator> (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if a Poly object is greater than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator>= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if a Poly object is greater or equal than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator>= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if a Poly object is greater or equal than another.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator>= (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if a Poly object is greater or equal than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator< (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if a Poly object is less than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator< (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if a Poly object is less than another.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator< (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if a Poly object is less than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U , size_t USmallSize, bool UCopyable, typename UBaseType >
bool CeresEngine::operator<= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const Poly< U, USmallSize, UCopyable, UBaseType > &rhs) noexcept
 Compares if a Poly object is less or equal than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType , typename U >
bool CeresEngine::operator<= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, const U &rhs) noexcept
 Compares if a Poly object is less or equal than another.
 
template<typename U , typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator<= (const U &lhs, const Poly< T, TSmallSize, TCopyable, TBaseType > &rhs) noexcept
 Compares if a Poly object is less or equal than another.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator== (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, std::nullptr_t) noexcept
 Checks if a Poly is nullptr.
 
template<typename T , size_t TSmallSize, bool TCopyable, typename TBaseType >
bool CeresEngine::operator!= (const Poly< T, TSmallSize, TCopyable, TBaseType > &lhs, std::nullptr_t) noexcept
 Checks if a Poly is not nullptr.
 

Macro Definition Documentation

◆ CE_POLY_TMPL

#define CE_POLY_TMPL (   T)    typename T, size_t T##SmallSize, bool T##Copyable, typename T##BaseType

◆ CE_POLY_TYPE

#define CE_POLY_TYPE (   T)    Poly<T, T##SmallSize, T##Copyable, T##BaseType>