7#define CADABRA_CLI_DEBUG_MARKER
11#include <pybind11/pybind11.h>
12#include <pybind11/embed.h>
13#ifdef CADABRA_CLI_DEBUG_MARKER
15#undef CADABRA_CLI_DEBUG_MARKER
18class Shell :
public pybind11::scoped_interpreter {
20 enum class Flags :
unsigned int {
35 pybind11::object
evaluate(
const std::string& code,
const std::string& filename =
"<stdin>")
const;
36 void execute(
const std::string& code,
const std::string& filename =
"<stdin>");
37 void execute_file(
const std::string& filename,
bool preprocess =
true);
38 void interact_file(
const std::string& filename,
bool preprocess =
true);
41 void write_stdout(
const std::string& text,
const std::string& end =
"\n",
bool flush =
false);
42 void write_stderr(
const std::string& text,
const std::string& end =
"\n",
bool flush =
false);
49 void write(
const std::string& txt);
52 std::string
str()
const;
65 std::string
str(
const pybind11::handle& obj)
const;
66 std::string
repr(
const pybind11::handle& obj);
105 virtual const char*
what()
const noexcept override;
Shell::Flags & operator|=(Shell::Flags &lhs, Shell::Flags rhs)
Definition cadabra2-cli.cc:699
bool operator&(Shell::Flags lhs, Shell::Flags rhs)
Definition cadabra2-cli.cc:712
Shell::Flags operator|(Shell::Flags lhs, Shell::Flags rhs)
Definition cadabra2-cli.cc:707
Definition cadabra2-cli.hh:99
virtual const char * what() const noexcept override
Definition cadabra2-cli.cc:694
ExitRequest()
Definition cadabra2-cli.cc:685
std::string message
Definition cadabra2-cli.hh:108
int code
Definition cadabra2-cli.hh:107
Definition cadabra2-cli.hh:44
void write(const std::string &txt)
Definition cadabra2-cli.cc:57
void clear()
Definition cadabra2-cli.cc:63
CatchOutput()
Definition cadabra2-cli.cc:49
std::string str() const
Definition cadabra2-cli.cc:73
void flush()
Definition cadabra2-cli.cc:69
std::string collect
Definition cadabra2-cli.hh:54
Definition cadabra2-cli.hh:18
CatchOutput catchOut
Definition cadabra2-cli.hh:57
void interact()
Definition cadabra2-cli.cc:229
std::string site_path
Definition cadabra2-cli.hh:62
void process_ps2(const std::string &line)
Definition cadabra2-cli.cc:571
pybind11::module main_module
Definition cadabra2-cli.hh:82
std::string sanitize(std::string s)
Definition cadabra2-cli.cc:509
Flags flags
Definition cadabra2-cli.hh:96
void set_completion_callback(const char *buffer, std::vector< std::string > &completions)
Definition cadabra2-cli.cc:595
pybind11::object py_stderr
Definition cadabra2-cli.hh:87
void show_banner() const
Definition cadabra2-cli.cc:218
const char * colour_bold
Definition cadabra2-cli.hh:95
std::string collect
Definition cadabra2-cli.hh:88
const char * colour_reset
Definition cadabra2-cli.hh:94
const char * colour_info
Definition cadabra2-cli.hh:92
pybind11::object sys
Definition cadabra2-cli.hh:86
void interact_file(const std::string &filename, bool preprocess=true)
Definition cadabra2-cli.cc:370
std::string get_ps2()
Definition cadabra2-cli.cc:627
std::string repr(const pybind11::handle &obj)
Definition cadabra2-cli.cc:499
void set_histfile()
Definition cadabra2-cli.cc:459
~Shell()
Definition cadabra2-cli.cc:112
pybind11::object main_namespace
Definition cadabra2-cli.hh:83
CatchOutput catchErr
Definition cadabra2-cli.hh:57
Flags
Definition cadabra2-cli.hh:20
void interact_texmacs()
Definition cadabra2-cli.cc:141
std::ofstream logf
Definition cadabra2-cli.hh:63
const char * colour_warning
Definition cadabra2-cli.hh:91
void handle_error()
Definition cadabra2-cli.cc:638
std::string str(const pybind11::handle &obj) const
Definition cadabra2-cli.cc:494
void write_stderr(const std::string &text, const std::string &end="\n", bool flush=false)
Definition cadabra2-cli.cc:447
std::string histfile
Definition cadabra2-cli.hh:61
void execute_file(const std::string &filename, bool preprocess=true)
Definition cadabra2-cli.cc:326
const char * colour_success
Definition cadabra2-cli.hh:93
pybind11::object evaluate(const std::string &code, const std::string &filename="<stdin>") const
Definition cadabra2-cli.cc:301
pybind11::object py_stdout
Definition cadabra2-cli.hh:87
void execute(const std::string &code, const std::string &filename="<stdin>")
Definition cadabra2-cli.cc:314
const char * colour_error
Definition cadabra2-cli.hh:90
void write_stdout(const std::string &text, const std::string &end="\n", bool flush=false)
Definition cadabra2-cli.cc:435
void open_texmacs_logfile()
Definition cadabra2-cli.cc:118
pybind11::dict globals
Definition cadabra2-cli.hh:85
std::string get_ps1()
Definition cadabra2-cli.cc:615
void process_ps1(const std::string &line)
Definition cadabra2-cli.cc:515
void handle_error(pybind11::error_already_set &err)