ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
type_utils Class Reference

#include <type_utils.h>

Static Public Member Functions

static const irep_idt & argument_identifier (const code_typet::argumentt &argument)
 A parameter's id, preferring #identifier: frontends disagree on which key holds it and only #identifier crosses the IREP2 seam (clang_cpp_convert.cpp:2880 sets the plain key alone).
static bool is_builtin_type (const std::string &name)
static bool is_str_only_method (const std::string &name)
 A method of str that int and float lack: set(dir(str)) - set(dir(int)).
static bool is_consensus_type (const std::string &name)
static bool is_typeddict (const std::string &name)
 Check if a name is TypedDict from typing module.
static bool is_consensus_func (const std::string &name)
static std::string get_type_from_consensus_func (const std::string &name)
static bool is_nondet_collection_builder (const std::string &name)
 True for the monomorphic collection builders in models/nondet.py (_nondet_list_int, _nondet_dict_str_float, ...), which the preprocessor substitutes for nondet_list/nondet_dict.
static bool is_python_model_func (const std::string &name)
static bool is_python_exceptions (const std::string &name)
static bool is_c_model_func (const std::string &func_name)
static bool is_ordered_comparison (const std::string &op)
static bool is_relational_op (const std::string &op)
static void set_cpp_type (typet &t, const irep_idt &value)
static irep_idt get_cpp_type (const typet &t)
static void set_member_name (typet &t, const irep_idt &value)
static void remove_member_name (typet &t)
static bool is_optional_scalar (const typet &t)
static bool is_optional_struct (const typet &t)
static bool is_optional_str_pointer (const typet &t)
static bool is_char_type (const typet &t)
static bool is_bytes_array (const typet &t)
static bool is_float_vs_char (const exprt &a, const exprt &b)
static std::string remove_quotes (const std::string &str)
static typet select_widest_type (const TypeFlags &flags, const typet &default_type)
static TypeFlags extract_union_types (const nlohmann::json &slice)
static TypeFlags extract_binop_union_types (const nlohmann::json &binop_node)
static bool annotation_admits_none (const nlohmann::json &ann)
static bool is_integer_type (const typet &type)
static bool is_numpy_string_array (const typet &type)
 A numpy array of fixed-width strings: arrays of char arrays.
static typet array_scalar_type (const typet &type)
 The scalar type at the leaves of the (possibly nested) array type.
static bool is_numpy_complex_array (const typet &type)
 A numpy array of complex numbers.
static bool is_string_type (const typet &type)
static bool is_dict_subscript (const nlohmann::json &element)
static bool is_type_identifier (const std::string &name)
static bool strip_pep515_underscores (const std::string &s, std::string &out)
 Copies s to out with PEP 515 underscore separators removed.

Member Function Documentation

◆ annotation_admits_none()

bool type_utils::annotation_admits_none ( const nlohmann::json & ann)
inlinestatic

◆ argument_identifier()

const irep_idt & type_utils::argument_identifier ( const code_typet::argumentt & argument)
inlinestatic

A parameter's id, preferring #identifier: frontends disagree on which key holds it and only #identifier crosses the IREP2 seam (clang_cpp_convert.cpp:2880 sets the plain key alone).

◆ array_scalar_type()

typet type_utils::array_scalar_type ( const typet & type)
inlinestatic

The scalar type at the leaves of the (possibly nested) array type.

◆ extract_binop_union_types()

TypeFlags type_utils::extract_binop_union_types ( const nlohmann::json & binop_node)
inlinestatic

◆ extract_union_types()

TypeFlags type_utils::extract_union_types ( const nlohmann::json & slice)
inlinestatic

◆ get_cpp_type()

irep_idt type_utils::get_cpp_type ( const typet & t)
inlinestatic

◆ get_type_from_consensus_func()

std::string type_utils::get_type_from_consensus_func ( const std::string & name)
inlinestatic

◆ is_builtin_type()

bool type_utils::is_builtin_type ( const std::string & name)
inlinestatic

◆ is_bytes_array()

bool type_utils::is_bytes_array ( const typet & t)
inlinestatic

◆ is_c_model_func()

bool type_utils::is_c_model_func ( const std::string & func_name)
inlinestatic

◆ is_char_type()

bool type_utils::is_char_type ( const typet & t)
inlinestatic

◆ is_consensus_func()

bool type_utils::is_consensus_func ( const std::string & name)
inlinestatic

◆ is_consensus_type()

bool type_utils::is_consensus_type ( const std::string & name)
inlinestatic

◆ is_dict_subscript()

bool type_utils::is_dict_subscript ( const nlohmann::json & element)
inlinestatic

◆ is_float_vs_char()

bool type_utils::is_float_vs_char ( const exprt & a,
const exprt & b )
inlinestatic

◆ is_integer_type()

bool type_utils::is_integer_type ( const typet & type)
inlinestatic

◆ is_nondet_collection_builder()

bool type_utils::is_nondet_collection_builder ( const std::string & name)
inlinestatic

True for the monomorphic collection builders in models/nondet.py (_nondet_list_int, _nondet_dict_str_float, ...), which the preprocessor substitutes for nondet_list/nondet_dict.

◆ is_numpy_complex_array()

bool type_utils::is_numpy_complex_array ( const typet & type)
inlinestatic

A numpy array of complex numbers.

◆ is_numpy_string_array()

bool type_utils::is_numpy_string_array ( const typet & type)
inlinestatic

A numpy array of fixed-width strings: arrays of char arrays.

◆ is_optional_scalar()

bool type_utils::is_optional_scalar ( const typet & t)
inlinestatic

◆ is_optional_str_pointer()

bool type_utils::is_optional_str_pointer ( const typet & t)
inlinestatic

◆ is_optional_struct()

bool type_utils::is_optional_struct ( const typet & t)
inlinestatic

◆ is_ordered_comparison()

bool type_utils::is_ordered_comparison ( const std::string & op)
inlinestatic

◆ is_python_exceptions()

bool type_utils::is_python_exceptions ( const std::string & name)
inlinestatic

◆ is_python_model_func()

bool type_utils::is_python_model_func ( const std::string & name)
inlinestatic

◆ is_relational_op()

bool type_utils::is_relational_op ( const std::string & op)
inlinestatic

◆ is_str_only_method()

bool type_utils::is_str_only_method ( const std::string & name)
inlinestatic

A method of str that int and float lack: set(dir(str)) - set(dir(int)).

  • set(dir(float)), public names only.

◆ is_string_type()

bool type_utils::is_string_type ( const typet & type)
inlinestatic

◆ is_type_identifier()

bool type_utils::is_type_identifier ( const std::string & name)
inlinestatic

◆ is_typeddict()

bool type_utils::is_typeddict ( const std::string & name)
inlinestatic

Check if a name is TypedDict from typing module.

TypedDict is a special construct that should not be treated as a user-defined base class. Classes inheriting from TypedDict are converted to dict type (matching Python's runtime behavior).

Parameters
nameThe base class name to check
Returns
true if it's TypedDict

◆ remove_member_name()

void type_utils::remove_member_name ( typet & t)
inlinestatic

◆ remove_quotes()

std::string type_utils::remove_quotes ( const std::string & str)
inlinestatic

◆ select_widest_type()

typet type_utils::select_widest_type ( const TypeFlags & flags,
const typet & default_type )
inlinestatic

◆ set_cpp_type()

void type_utils::set_cpp_type ( typet & t,
const irep_idt & value )
inlinestatic

◆ set_member_name()

void type_utils::set_member_name ( typet & t,
const irep_idt & value )
inlinestatic

◆ strip_pep515_underscores()

bool type_utils::strip_pep515_underscores ( const std::string & s,
std::string & out )
inlinestatic

Copies s to out with PEP 515 underscore separators removed.

Returns false when one is misplaced: a numeric string may carry a single underscore between two digits, never leading, trailing or doubled.


The documentation for this class was generated from the following file: