ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
python_list_internal.h
Go to the documentation of this file.
1#pragma once
2
3// Shared include bundle for the python-list module translation units. This is
4// the exact set of headers the original monolithic python_list.cpp pulled in,
5// so every split unit sees the same declarations it did before the refactor.
10#include <util/lang/c_types.h>
18#include <util/irep/expr.h>
19#include <util/irep/type.h>
20#include <util/symtab/symbol.h>
21#include <util/expr/expr_util.h>
24#include <util/irep/std_code.h>
25#include <util/irep/std_expr.h>
26#include <util/arith/mp_arith.h>
29#include <util/config/config.h>
30#include <irep2/irep2_utils.h>
31#include <util/irep/migrate.h>
33#include <string>
34#include <functional>
35
36#include "list_type_inference.h"
37
38// Row-major element strides of a contiguous array of `shape`.
39inline std::vector<long long>
40contiguous_strides(const std::vector<long long> &shape)
41{
42 std::vector<long long> strides(shape.size(), 1);
43 for (std::size_t axis = shape.size(); axis-- > 1;)
44 strides[axis - 1] = strides[axis] * shape[axis];
45 return strides;
46}
std::vector< long long > contiguous_strides(const std::vector< long long > &shape)
Definition python_list_internal.h:40