souffle  2.0.2-371-g6315b36
Data Structures | Namespaces | Functions
TypeSystem.h File Reference
#include "ast/QualifiedName.h"
#include "ast/Type.h"
#include "souffle/TypeAttribute.h"
#include "souffle/utility/ContainerUtil.h"
#include "souffle/utility/FunctionalUtil.h"
#include "souffle/utility/MiscUtil.h"
#include "souffle/utility/StreamUtil.h"
#include "souffle/utility/tinyformat.h"
#include <algorithm>
#include <iostream>
#include <map>
#include <memory>
#include <optional>
#include <set>
#include <stdexcept>
#include <string>
#include <utility>
#include <vector>
Include dependency graph for TypeSystem.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  souffle::ast::analysis::AlgebraicDataType
 Aggregates types using sums and products. More...
 
struct  souffle::ast::analysis::AlgebraicDataType::Branch
 
class  souffle::ast::analysis::ConstantType
 Representing the type assigned to a constant. More...
 
class  souffle::ast::analysis::PrimitiveType
 PrimitiveType = Number/Unsigned/Float/Symbol The class representing pre-built, concrete types. More...
 
struct  souffle::ast::analysis::RecordType
 A record type combining a list of fields into a new, aggregated type. More...
 
class  souffle::ast::analysis::SubsetType
 A type being a subset of another type. More...
 
class  souffle::ast::analysis::Type
 An abstract base class for types to be covered within a type environment. More...
 
class  souffle::ast::analysis::TypeEnvironment
 A type environment is a set of types. More...
 
struct  souffle::ast::analysis::TypeSet
 A collection to represent sets of types. More...
 
class  souffle::ast::analysis::UnionType
 A union type combining a list of types into a new, aggregated type. More...
 

Namespaces

 souffle
 
 souffle::ast
 
 souffle::ast::analysis
 

Functions

bool souffle::ast::analysis::areEquivalentTypes (const Type &a, const Type &b)
 Determine if two types are equivalent. More...
 
TypeSet souffle::ast::analysis::getGreatestCommonSubtypes (const Type &a, const Type &b)
 Computes the greatest common sub types of the two given types. More...
 
template<typename... Types>
TypeSet souffle::ast::analysis::getGreatestCommonSubtypes (const Types &... types)
 Computes the greatest common sub types of the given types. More...
 
TypeSet souffle::ast::analysis::getGreatestCommonSubtypes (const TypeSet &a, const TypeSet &b)
 The set of pair-wise greatest common sub types of the types in the two given sets. More...
 
TypeSet souffle::ast::analysis::getGreatestCommonSubtypes (const TypeSet &set)
 Computes the greatest common sub types of all the types in the given set. More...
 
TypeAttribute souffle::ast::analysis::getTypeAttribute (const Type &type)
 
std::optional< TypeAttributesouffle::ast::analysis::getTypeAttribute (const TypeSet &type)
 
std::string souffle::ast::analysis::getTypeQualifier (const Type &type)
 Returns full type qualifier for a given type. More...
 
bool souffle::ast::analysis::haveCommonSupertype (const Type &a, const Type &b)
 Determine if there exist a type t such that a <: t and b <: t. More...
 
bool souffle::ast::analysis::isADTEnum (const AlgebraicDataType &type)
 Determine if ADT is enumerations (are all constructors empty) More...
 
bool souffle::ast::analysis::isNumericType (const TypeSet &type)
 
bool souffle::ast::analysis::isOfKind (const Type &type, TypeAttribute kind)
 Check if the type is of a kind corresponding to the TypeAttribute. More...
 
bool souffle::ast::analysis::isOfKind (const TypeSet &typeSet, TypeAttribute kind)
 
bool souffle::ast::analysis::isOrderableType (const TypeSet &type)
 
bool souffle::ast::analysis::isSubtypeOf (const Type &a, const Type &b)
 Determines whether type a is a subtype of type b. More...