19
19
20
20
extern configt config;
21
21
22
- api_sessiont::api_sessiont ()
23
- : message_handler(
24
- util_make_unique<null_message_handlert>(null_message_handlert{})),
25
- options(util_make_unique<optionst>(optionst{}))
22
+ struct api_session_implementationt
23
+ {
24
+ std::unique_ptr<goto_modelt> model;
25
+ std::unique_ptr<message_handlert> message_handler;
26
+ std::unique_ptr<optionst> options;
27
+ };
28
+
29
+ api_sessiont::api_sessiont () : api_sessiont{api_optionst::create ()}
26
30
{
27
- // Needed to initialise the language options correctly
28
- cmdlinet cmdline;
29
- // config is global in config.cpp
30
- config.set (cmdline);
31
- // Initialise C language mode
32
- register_language (new_ansi_c_language);
33
31
}
34
32
35
33
api_sessiont::api_sessiont (const api_optionst &options)
36
- : message_handler(
37
- util_make_unique<null_message_handlert>(null_message_handlert{})),
38
- options(options.to_engine_options())
34
+ : implementation{util_make_unique<api_session_implementationt>()}
39
35
{
36
+ implementation->message_handler =
37
+ util_make_unique<null_message_handlert>(null_message_handlert{});
38
+ implementation->options = options.to_engine_options ();
40
39
// Needed to initialise the language options correctly
41
40
cmdlinet cmdline;
42
41
// config is global in config.cpp
@@ -49,6 +48,6 @@ api_sessiont::~api_sessiont() = default;
49
48
50
49
void api_sessiont::load_model_from_files (const std::vector<std::string> &files)
51
50
{
52
- model = util_make_unique<goto_modelt>(
53
- initialize_goto_model ( files, *message_handler, *options));
51
+ implementation-> model = util_make_unique<goto_modelt>( initialize_goto_model (
52
+ files, *implementation-> message_handler , *implementation-> options ));
54
53
}
0 commit comments