1919
2020extern configt config;
2121
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 ()}
2630{
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);
3331}
3432
3533api_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>()}
3935{
36+ implementation->message_handler =
37+ util_make_unique<null_message_handlert>(null_message_handlert{});
38+ implementation->options = options.to_engine_options ();
4039 // Needed to initialise the language options correctly
4140 cmdlinet cmdline;
4241 // config is global in config.cpp
@@ -49,6 +48,6 @@ api_sessiont::~api_sessiont() = default;
4948
5049void api_sessiont::load_model_from_files (const std::vector<std::string> &files)
5150{
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 ));
5453}
0 commit comments