Virtual Testbed
Ship dynamics simulator for extreme conditions
TestbedPipelineInstance.cc
1 #include <vtestbed/gui/TestbedGUI.hh>
2 #include <vtestbed/gui/TestbedPipelineInstance.hh>
3 #include <vtestbed/guile/macros.hh>
4 #include <vtestbed/guile/traits.hh>
5 
6 vtb::gui::vpipeline_type vtb::gui::vpipeline;
7 
8 namespace vtb {
9 
10  namespace guile {
11 
20  SCM get_testbed() {
21  using namespace vtb::gui;
22  if (vpipeline.started()) { throw std::runtime_error("pipeline is running"); }
23  return Traits<std::any>::make(vpipeline.testbed());
24  }
25 
34  SCM set_testbed(SCM other) {
35  using namespace vtb::gui;
36  if (vpipeline.started()) { throw std::runtime_error("pipeline is running"); }
37  vpipeline.testbed(std::move(*get_object<testbed_type>(other)));
38  return SCM_UNSPECIFIED;
39  }
40 
52  using namespace vtb::gui;
53  vpipeline.testbed_gui()->recording(true);
54  return SCM_UNSPECIFIED;
55  }
56 
66  using namespace vtb::gui;
67  vpipeline.testbed_gui()->recording(false);
68  return SCM_UNSPECIFIED;
69  }
70 
78  using namespace vtb::gui;
79  vpipeline.testbed_gui()->start();
80  return SCM_UNSPECIFIED;
81  }
82 
90  using namespace vtb::gui;
91  vpipeline.testbed_gui()->pause();
92  return SCM_UNSPECIFIED;
93  }
94 
102  using namespace vtb::gui;
103  vpipeline.testbed_gui()->stop();
104  return SCM_UNSPECIFIED;
105  }
106 
107  }
108 
109 }
110 
111 void vtb::gui::testbed_pipeline_define() {
112  using namespace vtb::guile;
113  define_procedure("get-testbed", 0, 0, 0, VTB_GUILE_0(get_testbed));
114  define_procedure("set-testbed!", 1, 0, 0, VTB_GUILE_1(set_testbed));
115  define_procedure("testbed-gui-start-recording!", 0, 0, 0,
116  VTB_GUILE_0(testbed_gui_start_recording));
117  define_procedure("testbed-gui-stop-recording!", 0, 0, 0,
118  VTB_GUILE_0(testbed_gui_stop_recording));
119  define_procedure("testbed-gui-start!", 0, 0, 0, VTB_GUILE_0(testbed_gui_start));
120  define_procedure("testbed-gui-pause!", 0, 0, 0, VTB_GUILE_0(testbed_gui_pause));
121  define_procedure("testbed-gui-stop!", 0, 0, 0, VTB_GUILE_0(testbed_gui_stop));
122 }
Guile bindings.
SCM testbed_gui_start()
Start real-time simulation.
SCM testbed_gui_stop()
Stop real-time simulation (and screen recording).
SCM testbed_gui_start_recording()
Start screen recording.
SCM testbed_gui_stop_recording()
Stop screen recording.
SCM get_testbed()
Get the current instance of virtual testbed.
Graphical user interface interactive real-time computation and visualisation.
SCM testbed_gui_pause()
Pause real-time simulation (and screen recording).
Main namespace.
Definition: convert.hh:9
SCM set_testbed(SCM other)
Replace the current instance of virtual testbed with other.