![]() |
mutable
A Database System for Research and Fast Prototyping
|
The numeric type represents integer and floating-point types of different precision and scale. More...
#include <Type.hpp>
Public Types | |
template<typename T > | |
using | Pooled = m::Pooled< T, Pool< Type > > |
Public Member Functions | |
M_DECLARE_ENUM (kind_t) kind | |
the kind of numeric type | |
Numeric (Numeric &&)=default | |
void | accept (TypeVisitor &v) override |
void | accept (ConstTypeVisitor &v) const override |
bool | operator== (const Type &other) const override |
uint64_t | size () const override |
Compute the size in bits of an instance of this type. | |
uint64_t | alignment () const override |
Compute the alignment requirement in bits of an instance of this type. | |
uint64_t | hash () const override |
Compute the 64 bit hash of this Type . | |
void | print (std::ostream &out) const override |
Print a textual representation of this Type to out . | |
void | dump (std::ostream &out) const override |
virtual const PrimitiveType * | as_scalar () const override |
Convert this PrimitiveType to its scalar equivalent. | |
virtual const PrimitiveType * | as_vectorial () const override |
Convert this PrimitiveType to its vectorial equivalent. | |
virtual void | dump (std::ostream &out) const=0 |
void | dump () const |
bool | is_scalar () const |
Returns true iff this PrimitiveType is scalar, i.e. if it is for a single value. | |
bool | is_vectorial () const |
Returns true iff this PrimitiveType is vectorial, i.e. if it is for a sequence of values. | |
M_DECLARE_ENUM (category_t) | |
a category for whether this type is scalar or vectorial | |
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. | |
Static Public Member Functions | |
static M_LCOV_EXCL_STOP Pooled< ErrorType > | Get_Error () |
Returns a ErrorType . | |
static Pooled< NoneType > | Get_None () |
Returns a NoneType . | |
static Pooled< Boolean > | Get_Boolean (category_t category) |
Returns a Boolean type of the given category . | |
static Pooled< Bitmap > | Get_Bitmap (category_t category, std::size_t length) |
Returns a Bitmap type of the given category and length . | |
static Pooled< CharacterSequence > | Get_Char (category_t category, std::size_t length) |
Returns a CharacterSequence type of the given category and fixed length . | |
static Pooled< CharacterSequence > | Get_Varchar (category_t category, std::size_t length) |
Returns a CharacterSequence type of the given category and varying length . | |
static Pooled< Date > | Get_Date (category_t category) |
Returns a Date type of the given category . | |
static Pooled< DateTime > | Get_Datetime (category_t category) |
Returns a DateTime type of the given category . | |
static Pooled< Numeric > | Get_Decimal (category_t category, unsigned digits, unsigned scale) |
Returns a Numeric type for decimals of given category , decimal digits , and scale . | |
static Pooled< Numeric > | Get_Integer (category_t category, unsigned num_bytes) |
Returns a Numeric type for integrals of given category and num_bytes bytes. | |
static Pooled< Numeric > | Get_Float (category_t category) |
Returns a Numeric type of given category for 32 bit floating-points. | |
static Pooled< Numeric > | Get_Double (category_t category) |
Returns a Numeric type of given category for 64 bit floating-points. | |
static Pooled< FnType > | Get_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 . | |
Data Fields | |
unsigned | precision |
The precision gives the maximum number of digits that can be represented by that type. | |
unsigned | scale |
the number of decimal digits right of the decimal point | |
category_t | category |
whether this type is scalar or vector | |
Static Public Attributes | |
static constexpr std::size_t | MAX_DECIMAL_PRECISION = 19 |
The maximal number of decimal digits that can be accurately represented by DECIMAL(p,s). | |
static constexpr float | DECIMAL_TO_BINARY_DIGITS = 3.32192f |
How many binary digits fit into a single decimal digit. | |
Static Protected Attributes | |
static constexpr const char * | CATEGORY_TO_STR_ [] = { M_ENUM_TO_STR(category_t) } |
| |
static Pool< Type > | types_ |
a pool of internalized, parameterized types | |
Private Member Functions | |
Numeric (category_t category, kind_t kind, unsigned precision, unsigned scale) | |
Static Private Attributes | |
static constexpr const char * | KIND_TO_STR_ [] = { M_ENUM_TO_STR(kind_t) } |
Friends | |
struct | Type |
The numeric type represents integer and floating-point types of different precision and scale.
|
inlineprivate |
|
default |
|
overridevirtual |
Implements m::Type.
|
overridevirtual |
Implements m::Type.
|
inlineoverridevirtual |
|
overridevirtual |
Convert this PrimitiveType
to its scalar equivalent.
Implements m::PrimitiveType.
|
overridevirtual |
Convert this PrimitiveType
to its vectorial equivalent.
Implements m::PrimitiveType.
M_LCOV_EXCL_START void Type::dump | ( | ) | const |
|
overridevirtual |
Implements m::Type.
|
virtual |
Implements m::Type.
|
staticinherited |
Returns a Bitmap
type of the given category
and length
.
Definition at line 70 of file Type.cpp.
References m::Type::types_.
Referenced by m::wasm::ChainedHashTable< IsGlobal >::ChainedHashTable(), m::storage::RowLayoutFactory::make(), m::storage::PAXLayoutFactory::make(), and m::wasm::OpenAddressingHashTable< IsGlobal, ValueInPlace >::OpenAddressingHashTable().
|
staticinherited |
Returns a Boolean
type of the given category
.
Definition at line 68 of file Type.cpp.
References m::Type::types_.
Referenced by M_LCOV_EXCL_STOP::apply_timestamp_filter(), and m::ast::Parser::parse_data_type().
|
staticinherited |
Returns a CharacterSequence
type of the given category
and fixed length
.
Definition at line 75 of file Type.cpp.
References m::Type::types_.
Referenced by m::ast::Parser::parse_data_type().
|
staticinherited |
Returns a Date
type of the given category
.
Definition at line 85 of file Type.cpp.
References m::Type::types_.
Referenced by m::ast::Parser::parse_data_type().
|
staticinherited |
Returns a DateTime
type of the given category
.
Definition at line 87 of file Type.cpp.
References m::Type::types_.
Referenced by m::ast::Parser::parse_data_type().
|
staticinherited |
Returns a Numeric
type for decimals of given category
, decimal digits
, and scale
.
Definition at line 89 of file Type.cpp.
References m::Type::types_.
Referenced by m::arithmetic_join(), and m::ast::Parser::parse_data_type().
|
staticinherited |
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().
|
staticinherited |
Returns a ErrorType
.
Definition at line 64 of file Type.cpp.
References m::Type::types_.
Referenced by m::ast::Parser::parse_data_type().
|
staticinherited |
Returns a Numeric
type of given category
for 32 bit floating-points.
Definition at line 99 of file Type.cpp.
References m::Type::types_.
Referenced by m::arithmetic_join(), m::get_runtime_type(), and m::ast::Parser::parse_data_type().
|
staticinherited |
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 m::Type::types_.
|
staticinherited |
Returns a Numeric
type for integrals of given category
and num_bytes
bytes.
Definition at line 94 of file Type.cpp.
References m::Type::types_.
Referenced by M_LCOV_EXCL_STOP::apply_timestamp_filter(), m::arithmetic_join(), m::wasm::ChainedHashTable< IsGlobal >::ChainedHashTable(), compute_aggregate_info(), m::wasm::HashBasedGroupJoin::execute(), generate_training_suite_filter(), generate_training_suite_group_by(), generate_training_suite_join(), m::get_runtime_type(), m::MultiVersioningTable::MultiVersioningTable(), m::wasm::OpenAddressingHashTable< IsGlobal, ValueInPlace >::OpenAddressingHashTable(), and m::ast::Parser::parse_data_type().
|
staticinherited |
|
staticinherited |
Returns a CharacterSequence
type of the given category
and varying length
.
Definition at line 80 of file Type.cpp.
References m::Type::types_.
Referenced by m::ast::Parser::parse_data_type().
|
overridevirtual |
|
inlineinherited |
Definition at line 76 of file Type.hpp.
Referenced by m::storage::DataLayout::INode::add_leaf().
|
inlineinherited |
Definition at line 75 of file Type.hpp.
Referenced by m::storage::DataLayout::INode::add_leaf(), m::StackMachine::emit_Ld(), m::StackMachine::emit_St(), m::is_comparable(), and tystr().
|
inlineinherited |
Definition at line 77 of file Type.hpp.
Referenced by m::StackMachine::emit_Cast(), m::is_comparable(), and tystr().
|
inlineinherited |
Definition at line 78 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().
|
inlineinherited |
Definition at line 79 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
|
inlineinherited |
Definition at line 500 of file Type.hpp.
Referenced by m::generate_primary_keys().
|
inlineinherited |
Definition at line 72 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::StackMachine::emit_St_Tup(), and m::wasm::ExprCompiler::operator()().
|
inlineinherited |
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().
|
inlineinherited |
Returns true
iff this Type
is a PrimitiveType
.
|
inlineinherited |
Returns true
iff this PrimitiveType
is scalar, i.e. if it is for a single value.
|
inlineinherited |
Returns true
iff this PrimitiveType
is vectorial, i.e. if it is for a sequence of values.
Definition at line 170 of file Type.hpp.
Referenced by m::Attribute::Attribute().
|
inherited |
a category for whether this type is scalar or vectorial
m::Numeric::M_DECLARE_ENUM | ( | kind_t | ) |
the kind of numeric type
|
inlineinherited |
|
overridevirtual |
|
inlineoverridevirtual |
Compute the size in bits of an instance of this type.
Reimplemented from m::Type.
Definition at line 433 of file Type.hpp.
References M_unreachable.
Referenced by convert_in_place().
|
inherited |
whether this type is scalar or vector
Definition at line 160 of file Type.hpp.
Referenced by m::arithmetic_join().
|
staticconstexprprotectedinherited |
|
staticconstexpr |
How many binary digits fit into a single decimal digit.
Used to compute precision.
Definition at line 400 of file Type.hpp.
Referenced by m::storage::DataLayout::INode::print().
|
staticconstexprprivate |
|
staticconstexpr |
unsigned m::Numeric::precision |
The precision gives the maximum number of digits that can be represented by that type.
Its interpretation depends on the kind: For INT, precision is the number of bytes. For FLOAT and DOUBLE, precision is the size of the type in bits, i.e. 32 and 64, respectively. For DECIMAL, precision is the number of decimal digits that can be represented. the number of bits used to represent the number
Definition at line 414 of file Type.hpp.
Referenced by m::arithmetic_join().
unsigned m::Numeric::scale |
the number of decimal digits right of the decimal point
Definition at line 415 of file Type.hpp.
Referenced by m::arithmetic_join().
a pool of internalized, parameterized types
Definition at line 54 of file Type.hpp.
Referenced by m::ErrorType::dump(), m::Type::Get_Bitmap(), m::Type::Get_Boolean(), m::Type::Get_Char(), m::Type::Get_Date(), m::Type::Get_Datetime(), m::Type::Get_Decimal(), m::Type::Get_Error(), m::Type::Get_Float(), m::Type::Get_Function(), m::Type::Get_Integer(), m::Type::Get_None(), and m::Type::Get_Varchar().