ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
list_access.cpp File Reference
#include "python_list_internal.h"
#include <python-frontend/python-dict/python_dict_handler.h>
#include <algorithm>
#include <optional>
Include dependency graph for list_access.cpp:

Classes

struct  chained_subarray_literal_indices

Functions

static exprt normalize_positive_slice_bound_expr (const exprt &bound, const exprt &logical_len)
static exprt normalize_reverse_slice_bound_expr (const exprt &bound, const exprt &logical_len)
static exprt build_reverse_slice_length (const exprt &start, const exprt &stop, long long abs_step)
static exprt build_nonnegative_slice_span (const exprt &lower, const exprt &upper)
static bool is_numeric_storage (const typet &elem_type)
static bool all_literal_indices (const std::vector< nlohmann::json > &idx_nodes)
static const nlohmann::json * flatten_subscript_chain (const nlohmann::json &element, std::vector< nlohmann::json > &indices)
std::optional< chained_subarray_literal_indices > get_chained_subarray_literal_indices (const nlohmann::json &node)
std::optional< std::pair< long long, long long > > normalize_chained_subarray_indices (const std::vector< std::size_t > &shape, const chained_subarray_literal_indices &indices)
static bool array_size_negative_index_target (const exprt &array, const nlohmann::json &list_node)
static void reject_unresolved_call_elements (const nlohmann::json &list_node, const element_type_registry &recorded, const std::string &list_name)
static bool is_literal_list_backed (const nlohmann::json &list_node)

Function Documentation

◆ all_literal_indices()

bool all_literal_indices ( const std::vector< nlohmann::json > & idx_nodes)
static

◆ array_size_negative_index_target()

bool array_size_negative_index_target ( const exprt & array,
const nlohmann::json & list_node )
static

◆ build_nonnegative_slice_span()

exprt build_nonnegative_slice_span ( const exprt & lower,
const exprt & upper )
static

◆ build_reverse_slice_length()

exprt build_reverse_slice_length ( const exprt & start,
const exprt & stop,
long long abs_step )
static

◆ flatten_subscript_chain()

const nlohmann::json * flatten_subscript_chain ( const nlohmann::json & element,
std::vector< nlohmann::json > & indices )
static

◆ get_chained_subarray_literal_indices()

std::optional< chained_subarray_literal_indices > get_chained_subarray_literal_indices ( const nlohmann::json & node)

◆ is_literal_list_backed()

bool is_literal_list_backed ( const nlohmann::json & list_node)
static

◆ is_numeric_storage()

bool is_numeric_storage ( const typet & elem_type)
static

◆ normalize_chained_subarray_indices()

std::optional< std::pair< long long, long long > > normalize_chained_subarray_indices ( const std::vector< std::size_t > & shape,
const chained_subarray_literal_indices & indices )

◆ normalize_positive_slice_bound_expr()

exprt normalize_positive_slice_bound_expr ( const exprt & bound,
const exprt & logical_len )
static

◆ normalize_reverse_slice_bound_expr()

exprt normalize_reverse_slice_bound_expr ( const exprt & bound,
const exprt & logical_len )
static

◆ reject_unresolved_call_elements()

void reject_unresolved_call_elements ( const nlohmann::json & list_node,
const element_type_registry & recorded,
const std::string & list_name )
static