Clingo
Loading...
Searching...
No Matches

Data structures and functions to represent symbols. More...

Classes

class  CppClingo::String
 Reference to a string stored in a symbol store. More...
 
class  CppClingo::SharedString
 Class managing the lifetime of a String. More...
 
class  CppClingo::Symbol
 Variant-like class to store symbols stored in a symbol store. More...
 
class  CppClingo::SharedSymbol
 Class managing the lifetime of a Symbol. More...
 
class  CppClingo::SymbolCollector
 Helper class to mark owned symbols. More...
 
class  CppClingo::SymbolOwner
 Interface for classes owning references to symbols. More...
 
class  CppClingo::SymbolStore
 A store for symbols. More...
 
class  CppClingo::GCLock
 Helper to block garbage collection. More...
 
class  CppClingo::NameGen
 Generator for auxiliary names. More...
 

Typedefs

using CppClingo::StringSet = Util::unordered_set< String >
 A set of strings.
 
using CppClingo::StringVec = std::vector< String >
 A vector of strings.
 
using CppClingo::StringSpan = std::span< String const >
 A span of strings.
 
using CppClingo::SharedStringSet = Util::unordered_set< SharedString >
 A set of strings.
 
using CppClingo::SharedStringVec = std::vector< SharedString >
 A vector of strings.
 
using CppClingo::SharedStringArray = Util::immutable_array< SharedString >
 An array of strings.
 
using CppClingo::SharedStringSpan = std::span< SharedString const >
 A vector of strings.
 
using CppClingo::SymbolSpan = std::span< Symbol const >
 A span of symbols.
 
using CppClingo::SymbolVec = std::vector< Symbol >
 A vector of symbols.
 
using CppClingo::Assignment = std::vector< std::optional< Symbol > >
 Assignment mapping variables to symbols.
 
using CppClingo::SharedSymbolSpan = std::span< SharedSymbol const >
 A span of symbols.
 
using CppClingo::SharedSymbolVec = std::vector< SharedSymbol >
 A vector of symbols.
 
using CppClingo::USymbolStore = std::unique_ptr< SymbolStore >
 A pointer to a symbol store.
 

Enumerations

enum class  CppClingo::SymbolType : uint8_t {
  number , sup , inf , string ,
  tuple , function
}
 Enumeration of available symbols types. More...
 

Functions

auto CppClingo::as_string_ptr (SharedString const *ptr) -> String const *
 Convert a shared string pointer into a string pointer.
 
template<class T >
auto CppClingo::as_string_span (T const &vec) -> StringSpan
 Convert a collection of shared strings into a string span.
 
auto CppClingo::as_shared_string_ptr (String const *ptr) -> SharedString const *
 Convert a string pointer into a shared string pointer.
 
template<class T >
auto CppClingo::as_shared_string_span (T const &vec) -> SharedStringSpan
 Convert a collection of strings into a shared string span.
 
auto CppClingo::as_symbol_ptr (SharedSymbol const *ptr) -> Symbol const *
 Convert a shared symbol pointer into a symbol pointer.
 
template<class T >
auto CppClingo::as_symbol_span (T const &vec) -> SymbolSpan
 Convert a shared symbol collection into a symbol span.
 
auto CppClingo::as_shared_symbol_ptr (Symbol const *ptr) -> SharedSymbol const *
 Convert a symbol pointer into a shared symbol pointer.
 
template<class T >
auto CppClingo::as_shared_symbol_span (T const &vec) -> SharedSymbolSpan
 Convert a symbol collection into a shared symbol span.
 
void CppClingo::init_default_symbol_store (USymbolStore store)
 Initialize the default symbol store.
 
auto CppClingo::default_symbol_store () -> SymbolStore &
 Get the default symbol store.
 
auto CppClingo::make_symbol_store (bool slotted, bool shared) -> USymbolStore
 Construct a new symbol store.
 

Detailed Description

Data structures and functions to represent symbols.

Enumeration Type Documentation

◆ SymbolType

enum class CppClingo::SymbolType : uint8_t
strong

Enumeration of available symbols types.

See the documentation of the corresponding functions in the SymbolStore.

Function Documentation

◆ default_symbol_store()

auto CppClingo::default_symbol_store ( ) -> SymbolStore &

Get the default symbol store.

If no symbol store has been set, a default one that is not thread-safe is set up and returned.

◆ init_default_symbol_store()

void CppClingo::init_default_symbol_store ( USymbolStore  store)

Initialize the default symbol store.

Fails if there is already a default one.

◆ make_symbol_store()

auto CppClingo::make_symbol_store ( bool  slotted,
bool  shared 
) -> USymbolStore

Construct a new symbol store.

Optionally, a slotted allocator can be used to (hopefully) speed up allocation.

Either a default store for single-threaded use or a locked one for multi-threaded use can be created.