Sane C++ Libraries
C++ Platform Abstraction Libraries
SC::Reflection Namespace Reference

Describe C++ types at compile time for serialization (see Reflection). More...

Classes

struct  ArrayWithSize
 A constexpr array. More...
 
struct  ExtendedStructTypeInfo
 Visit all struct members to gather sum of their sizes (helper for IsPacked). More...
 
struct  ExtendedTypeInfo
 Class template used to check if a given type IsPacked property is true at compile time. More...
 
struct  ExtendedTypeInfo< SC::Array< T, N > >
 
struct  ExtendedTypeInfo< SC::Vector< T > >
 
struct  ExtendedTypeInfo< T, typename SC::TypeTraits::EnableIf< IsPrimitive< T >::value >::type >
 
struct  ExtendedTypeInfo< T[N]>
 
struct  FlatSchemaBuilder
 A schema builder that doesn't build any virtual table. More...
 
struct  IsPrimitive
 Checks if a given type is primitive. More...
 
struct  Reflect
 Basic class template that must be partially specialized for each type. More...
 
struct  Reflect< bool >
 
struct  Reflect< char >
 
struct  Reflect< double >
 
struct  Reflect< float >
 
struct  Reflect< int16_t >
 
struct  Reflect< int32_t >
 
struct  Reflect< int64_t >
 
struct  Reflect< int8_t >
 
struct  Reflect< SC::Array< T, N > >
 
struct  Reflect< SC::StringEncoding >
 
struct  Reflect< SC::Vector< T > >
 
struct  Reflect< T[N]>
 
struct  Reflect< uint16_t >
 
struct  Reflect< uint32_t >
 
struct  Reflect< uint64_t >
 
struct  Reflect< uint8_t >
 
struct  Reflect< VectorMap< Key, Value, Container > >
 
struct  ReflectPrimitive
 Base struct for all primitive types. More...
 
struct  ReflectStruct
 
struct  SchemaBuilder
 Common code for derived class to create a SchemaBuilder suitable for SC::Reflection::SchemaCompiler. More...
 
struct  SchemaCompiler
 Creates a schema linking a series of SchemaType. More...
 
struct  SchemaType
 Holds together a TypeInfo, a StringView and a type-erased builder function pointer. More...
 
struct  Sv
 A minimal ASCII StringView with shortened name to be used in TypeToString. More...
 
struct  TypeInfo
 [reflectionSnippet3] More...
 
struct  TypeToString
 Strips down class name produced by ClNm to reduce binary size (from C++17 going forward) More...
 
struct  VectorArrayVTable
 
struct  WritableRange
 A writable span of objects. More...
 

Typedefs

using TypeStringView = Sv
 
using Schema = Reflection::SchemaCompiler< FlatSchemaBuilder >
 Default schema not building any virtual table. More...
 

Enumerations

enum class  TypeCategory : uint8_t {
  TypeCategory::TypeInvalid = 0 ,
  TypeCategory::TypeBOOL = 1 ,
  TypeCategory::TypeUINT8 = 2 ,
  TypeCategory::TypeUINT16 = 3 ,
  TypeCategory::TypeUINT32 = 4 ,
  TypeCategory::TypeUINT64 = 5 ,
  TypeCategory::TypeINT8 = 6 ,
  TypeCategory::TypeINT16 = 7 ,
  TypeCategory::TypeINT32 = 8 ,
  TypeCategory::TypeINT64 = 9 ,
  TypeCategory::TypeFLOAT32 = 10 ,
  TypeCategory::TypeDOUBLE64 = 11 ,
  TypeCategory::TypeStruct = 12 ,
  TypeCategory::TypeArray = 13 ,
  TypeCategory::TypeVector = 14
}
 Enumeration of possible category types recognized by Reflection. More...
 

Detailed Description

Describe C++ types at compile time for serialization (see Reflection).