ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
string_handler_utils.h
Go to the documentation of this file.
1#ifndef PYTHON_FRONTEND_STRING_HANDLER_UTILS_H
2#define PYTHON_FRONTEND_STRING_HANDLER_UTILS_H
3
4#include <nlohmann/json.hpp>
5#include <functional>
6#include <initializer_list>
7#include <string>
8#include <unordered_map>
9
11
12namespace string_call_utils
13{
14using keyword_valuest = std::unordered_map<std::string, const nlohmann::json *>;
15
17 const std::string &method_name,
18 const nlohmann::json &keywords,
19 bool reject_kwargs_unpacking = true);
20
21const nlohmann::json *find_keyword_value(
22 const keyword_valuest &keyword_values,
23 const std::string &name);
24
26 const std::string &method_name,
27 const keyword_valuest &keyword_values,
28 std::initializer_list<const char *> allowed);
29
30const nlohmann::json *resolve_positional_or_keyword_arg(
31 const std::string &method_name,
32 const nlohmann::json &args,
33 const keyword_valuest &keyword_values,
34 const std::string &arg_name,
35 std::size_t positional_index,
36 bool required);
37
38const nlohmann::json *required_arg_node_or_throw(
39 const std::string &method_name,
40 const nlohmann::json &args,
41 const keyword_valuest &keyword_values,
42 const std::string &arg_name,
43 std::size_t positional_index,
44 const std::string &error_message);
45
47 const nlohmann::json *arg_node,
48 long long default_value,
49 python_converter &converter);
50
52 const nlohmann::json &arg_node,
53 const std::string &error_message,
54 python_converter &converter);
55
57 const nlohmann::json *arg_node,
58 const std::string &default_value,
59 python_converter &converter,
60 const std::function<bool(const nlohmann::json &, std::string &)>
61 &extract_constant_string_cb,
62 const std::function<bool(const nlohmann::json &)> &is_none_literal);
63} // namespace string_call_utils
64
65#endif
Main converter for transforming Python AST into ESBMC's intermediate representation.
Definition python_converter.h:76
Definition string_handler_utils.cpp:8
const nlohmann::json * resolve_positional_or_keyword_arg(const std::string &method_name, const nlohmann::json &args, const keyword_valuest &keyword_values, const std::string &arg_name, std::size_t positional_index, bool required)
Definition string_handler_utils.cpp:105
void ensure_allowed_keywords(const std::string &method_name, const keyword_valuest &keyword_values, std::initializer_list< const char * > allowed)
Definition string_handler_utils.cpp:79
std::unordered_map< std::string, const nlohmann::json * > keyword_valuest
Definition string_handler_utils.h:14
long long optional_constant_int_arg_or_default(const nlohmann::json *arg_node, long long default_value, python_converter &converter)
Definition string_handler_utils.cpp:146
const nlohmann::json * find_keyword_value(const keyword_valuest &keyword_values, const std::string &name)
Definition string_handler_utils.cpp:71
keyword_valuest collect_keyword_values(const std::string &method_name, const nlohmann::json &keywords, bool reject_kwargs_unpacking)
Definition string_handler_utils.cpp:9
std::string optional_constant_string_arg_or_default(const nlohmann::json *arg_node, const std::string &default_value, python_converter &converter, const std::function< bool(const nlohmann::json &, std::string &)> &extract_constant_string_cb, const std::function< bool(const nlohmann::json &)> &is_none_literal)
const nlohmann::json * required_arg_node_or_throw(const std::string &method_name, const nlohmann::json &args, const keyword_valuest &keyword_values, const std::string &arg_name, std::size_t positional_index, const std::string &error_message)
Definition string_handler_utils.cpp:131
long long required_constant_int_arg(const nlohmann::json &arg_node, const std::string &error_message, python_converter &converter)
Definition string_handler_utils.cpp:166