mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Static Protected Attributes | Friends
m::Type Struct Referenceabstract

This class represents types in the SQL type system. More...

#include <Type.hpp>

Inheritance diagram for m::Type:
[legend]
Collaboration diagram for m::Type:
[legend]

Public Types

template<typename T >
using Pooled = m::Pooled< T, Pool< Type > >
 

Public Member Functions

 M_DECLARE_ENUM (category_t)
 a category for whether this type is scalar or vectorial
 
 Type ()=default
 
 Type (const Type &)=delete
 
 Type (Type &&)=default
 
virtual ~Type ()
 
virtual void accept (TypeVisitor &v)=0
 
virtual void accept (ConstTypeVisitor &v) const =0
 
virtual bool operator== (const Type &other) const =0
 
bool operator!= (const Type &other) const
 
bool is_error () const
 
bool is_none () const
 
bool is_primitive () const
 Returns true iff this Type is a PrimitiveType.
 
bool is_boolean () const
 
bool is_bitmap () const
 
bool is_character_sequence () const
 
bool is_date () const
 
bool is_date_time () const
 
bool is_numeric () const
 Returns true iff this Type is a Numeric type.
 
bool is_integral () const
 
bool is_decimal () const
 
bool is_floating_point () const
 Returns true iff this type is a floating-point type, i.e. f32 or f64.
 
bool is_float () const
 Returns true iff this type is a 32 bit floating-point type.
 
bool is_double () const
 Returns true iff this type is a 64 bit floating-point type.
 
virtual uint64_t size () const
 Compute the size in bits of an instance of this type.
 
virtual uint64_t alignment () const
 Compute the alignment requirement in bits of an instance of this type.
 
virtual uint64_t hash () const =0
 Compute the 64 bit hash of this Type.
 
virtual void print (std::ostream &out) const =0
 Print a textual representation of this Type to out.
 
virtual void dump (std::ostream &out) const =0
 
void dump () const
 

Static Public Member Functions

static M_LCOV_EXCL_STOP Pooled< ErrorTypeGet_Error ()
 Returns a ErrorType.
 
static Pooled< NoneTypeGet_None ()
 Returns a NoneType.
 
static Pooled< BooleanGet_Boolean (category_t category)
 Returns a Boolean type of the given category.
 
static Pooled< BitmapGet_Bitmap (category_t category, std::size_t length)
 Returns a Bitmap type of the given category and length.
 
static Pooled< CharacterSequenceGet_Char (category_t category, std::size_t length)
 Returns a CharacterSequence type of the given category and fixed length.
 
static Pooled< CharacterSequenceGet_Varchar (category_t category, std::size_t length)
 Returns a CharacterSequence type of the given category and varying length.
 
static Pooled< DateGet_Date (category_t category)
 Returns a Date type of the given category.
 
static Pooled< DateTimeGet_Datetime (category_t category)
 Returns a DateTime type of the given category.
 
static Pooled< NumericGet_Decimal (category_t category, unsigned digits, unsigned scale)
 Returns a Numeric type for decimals of given category, decimal digits, and scale.
 
static Pooled< NumericGet_Integer (category_t category, unsigned num_bytes)
 Returns a Numeric type for integrals of given category and num_bytes bytes.
 
static Pooled< NumericGet_Float (category_t category)
 Returns a Numeric type of given category for 32 bit floating-points.
 
static Pooled< NumericGet_Double (category_t category)
 Returns a Numeric type of given category for 64 bit floating-points.
 
static Pooled< FnTypeGet_Function (const Type *return_type, std::vector< const Type * > parameter_types)
 Returns a FnType for a function with parameter types parameter_types and return type return_type.
 

Static Protected Attributes

static constexpr const char * CATEGORY_TO_STR_ [] = { M_ENUM_TO_STR(category_t) }
 

‍declaration for constexpr static field, see C++17 inline variables


 
static Pool< Typetypes_
 a pool of internalized, parameterized types
 

Friends

M_LCOV_EXCL_START friend std::ostream & operator<< (std::ostream &out, const Type &t)
 Print a textual representation of Type t to out.
 

Detailed Description

This class represents types in the SQL type system.

Definition at line 45 of file Type.hpp.

Member Typedef Documentation

◆ Pooled

template<typename T >
using m::Type::Pooled = m::Pooled<T, Pool<Type> >

Definition at line 58 of file Type.hpp.

Constructor & Destructor Documentation

◆ Type() [1/3]

m::Type::Type ( )
default

◆ Type() [2/3]

m::Type::Type ( const Type )
delete

◆ Type() [3/3]

m::Type::Type ( Type &&  )
default

◆ ~Type()

virtual m::Type::~Type ( )
inlinevirtual

Definition at line 63 of file Type.hpp.

Member Function Documentation

◆ accept() [1/2]

virtual void m::Type::accept ( ConstTypeVisitor v) const
pure virtual

◆ accept() [2/2]

virtual void m::Type::accept ( TypeVisitor &  v)
pure virtual

◆ alignment()

virtual uint64_t m::Type::alignment ( ) const
inlinevirtual

Compute the alignment requirement in bits of an instance of this type.

Reimplemented in m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, and m::Numeric.

Definition at line 95 of file Type.hpp.

Referenced by m::PaxStore::compute_block_offsets(), and m::RowStore::compute_offsets().

◆ dump() [1/2]

M_LCOV_EXCL_START void Type::dump ( ) const

Definition at line 21 of file Type.cpp.

References dump().

Referenced by dump().

◆ dump() [2/2]

virtual void m::Type::dump ( std::ostream &  out) const
pure virtual

◆ Get_Bitmap()

Type::Pooled< Bitmap > Type::Get_Bitmap ( category_t  category,
std::size_t  length 
)
static

◆ Get_Boolean()

Type::Pooled< Boolean > Type::Get_Boolean ( category_t  category)
static

Returns a Boolean type of the given category.

Definition at line 68 of file Type.cpp.

References types_.

Referenced by M_LCOV_EXCL_STOP::apply_timestamp_filter(), and m::ast::Parser::parse_data_type().

◆ Get_Char()

Type::Pooled< CharacterSequence > Type::Get_Char ( category_t  category,
std::size_t  length 
)
static

Returns a CharacterSequence type of the given category and fixed length.

Definition at line 75 of file Type.cpp.

References types_.

Referenced by m::ast::Parser::parse_data_type().

◆ Get_Date()

Type::Pooled< Date > Type::Get_Date ( category_t  category)
static

Returns a Date type of the given category.

Definition at line 85 of file Type.cpp.

References types_.

Referenced by m::ast::Parser::parse_data_type().

◆ Get_Datetime()

Type::Pooled< DateTime > Type::Get_Datetime ( category_t  category)
static

Returns a DateTime type of the given category.

Definition at line 87 of file Type.cpp.

References types_.

Referenced by m::ast::Parser::parse_data_type().

◆ Get_Decimal()

Type::Pooled< Numeric > Type::Get_Decimal ( category_t  category,
unsigned  digits,
unsigned  scale 
)
static

Returns a Numeric type for decimals of given category, decimal digits, and scale.

Definition at line 89 of file Type.cpp.

References types_.

Referenced by m::arithmetic_join(), and m::ast::Parser::parse_data_type().

◆ Get_Double()

Type::Pooled< Numeric > Type::Get_Double ( category_t  category)
static

Returns a Numeric type of given category for 64 bit floating-points.

Definition at line 104 of file Type.cpp.

Referenced by m::arithmetic_join(), compute_aggregate_info(), m::get_runtime_type(), and m::ast::Parser::parse_data_type().

◆ Get_Error()

Type::Pooled< ErrorType > Type::Get_Error ( )
static

Returns a ErrorType.

Definition at line 64 of file Type.cpp.

References types_.

Referenced by m::ast::Parser::parse_data_type().

◆ Get_Float()

Type::Pooled< Numeric > Type::Get_Float ( category_t  category)
static

Returns a Numeric type of given category for 32 bit floating-points.

Definition at line 99 of file Type.cpp.

References types_.

Referenced by m::arithmetic_join(), m::get_runtime_type(), and m::ast::Parser::parse_data_type().

◆ Get_Function()

Type::Pooled< FnType > Type::Get_Function ( const Type return_type,
std::vector< const Type * >  parameter_types 
)
static

Returns a FnType for a function with parameter types parameter_types and return type return_type.

Definition at line 109 of file Type.cpp.

References types_.

◆ Get_Integer()

Type::Pooled< Numeric > Type::Get_Integer ( category_t  category,
unsigned  num_bytes 
)
static

◆ Get_None()

Type::Pooled< NoneType > Type::Get_None ( )
static

Returns a NoneType.

Definition at line 66 of file Type.cpp.

References types_.

◆ Get_Varchar()

Type::Pooled< CharacterSequence > Type::Get_Varchar ( category_t  category,
std::size_t  length 
)
static

Returns a CharacterSequence type of the given category and varying length.

Definition at line 80 of file Type.cpp.

References types_.

Referenced by m::ast::Parser::parse_data_type().

◆ hash()

virtual uint64_t m::Type::hash ( ) const
pure virtual

◆ is_bitmap()

bool m::Type::is_bitmap ( ) const
inline

Definition at line 76 of file Type.hpp.

Referenced by m::storage::DataLayout::INode::add_leaf().

◆ is_boolean()

bool m::Type::is_boolean ( ) const
inline

◆ is_character_sequence()

bool m::Type::is_character_sequence ( ) const
inline

Definition at line 77 of file Type.hpp.

Referenced by m::StackMachine::emit_Cast(), m::is_comparable(), and tystr().

◆ is_date()

bool m::Type::is_date ( ) const
inline

Definition at line 78 of file Type.hpp.

Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().

◆ is_date_time()

bool m::Type::is_date_time ( ) const
inline

Definition at line 79 of file Type.hpp.

Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().

◆ is_decimal()

bool m::Type::is_decimal ( ) const
inline

Definition at line 506 of file Type.hpp.

◆ is_double()

bool m::Type::is_double ( ) const
inline

Returns true iff this type is a 64 bit floating-point type.

Definition at line 524 of file Type.hpp.

References m::and.

◆ is_error()

bool m::Type::is_error ( ) const
inline

Definition at line 71 of file Type.hpp.

◆ is_float()

bool m::Type::is_float ( ) const
inline

Returns true iff this type is a 32 bit floating-point type.

Definition at line 518 of file Type.hpp.

References m::and.

◆ is_floating_point()

bool m::Type::is_floating_point ( ) const
inline

Returns true iff this type is a floating-point type, i.e. f32 or f64.

Definition at line 512 of file Type.hpp.

◆ is_integral()

const M_TYPE_LIST bool m::Type::is_integral ( ) const
inline

Definition at line 500 of file Type.hpp.

Referenced by m::generate_primary_keys().

◆ is_none()

bool m::Type::is_none ( ) const
inline

◆ is_numeric()

bool m::Type::is_numeric ( ) const
inline

Returns true iff this Type is a Numeric type.

Definition at line 81 of file Type.hpp.

Referenced by m::StackMachine::emit_Cast(), and m::is_comparable().

◆ is_primitive()

bool m::Type::is_primitive ( ) const
inline

Returns true iff this Type is a PrimitiveType.

Definition at line 74 of file Type.hpp.

◆ M_DECLARE_ENUM()

m::Type::M_DECLARE_ENUM ( category_t  )

a category for whether this type is scalar or vectorial

◆ operator!=()

bool m::Type::operator!= ( const Type other) const
inline

Definition at line 69 of file Type.hpp.

◆ operator==()

virtual bool m::Type::operator== ( const Type other) const
pure virtual

◆ print()

virtual void m::Type::print ( std::ostream &  out) const
pure virtual

Print a textual representation of this Type to out.

Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.

◆ size()

virtual uint64_t m::Type::size ( ) const
inlinevirtual

Compute the size in bits of an instance of this type.

Reimplemented in m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, and m::Numeric.

Definition at line 92 of file Type.hpp.

Referenced by m::PaxStore::compute_block_offsets(), and m::RowStore::compute_offsets().

Friends And Related Function Documentation

◆ operator<<

M_LCOV_EXCL_START friend std::ostream & operator<< ( std::ostream &  out,
const Type t 
)
friend

Print a textual representation of Type t to out.

Definition at line 108 of file Type.hpp.

Field Documentation

◆ CATEGORY_TO_STR_

constexpr const char * Type::CATEGORY_TO_STR_ = { M_ENUM_TO_STR(category_t) }
staticconstexprprotected

‍declaration for constexpr static field, see C++17 inline variables

Definition at line 50 of file Type.hpp.

◆ types_

Pool< Type > Type::types_
staticprotected

a pool of internalized, parameterized types

Definition at line 54 of file Type.hpp.

Referenced by m::ErrorType::dump(), Get_Bitmap(), Get_Boolean(), Get_Char(), Get_Date(), Get_Datetime(), Get_Decimal(), Get_Error(), Get_Float(), Get_Function(), Get_Integer(), Get_None(), and Get_Varchar().


The documentation for this struct was generated from the following files: