GCC Code Coverage Report


./
File: mrubyvm.hpp
Date: 2024-05-21 01:02:25
Lines:
14/14
100.0%
Functions:
3/3
100.0%
Branches:
12/24
50.0%

Line Branch Exec Source
1 #ifndef __MRUBYVM_HPP__
2 #define __MRUBYVM_HPP__
3
4 class VM : public Module
5 {
6 public:
7
3/6
✓ Branch 1 taken 60 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 60 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 60 times.
✗ Branch 8 not taken.
60 VM() : Module(std::shared_ptr<mrb_state>(mrb_open(), mrb_close))
8 {
9 60 }
10
11 VM(mrb_state* mrb) : Module(std::shared_ptr<mrb_state>(mrb, [](mrb_state*) {}))
12 {
13 }
14
15 120 ~VM()
16 120 {
17 120 }
18
19 46 void run(const std::string& code)
20 {
21
1/2
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
46 std::stringstream ss;
22
1/2
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
46 ss << "begin;";
23
2/4
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 46 times.
✗ Branch 5 not taken.
46 ss << code << ";";
24
1/2
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
46 ss << "rescue => e;";
25
1/2
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
46 ss << "p e;";
26
1/2
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
46 ss << "end;";
27
28
2/4
✓ Branch 1 taken 46 times.
✗ Branch 2 not taken.
✓ Branch 6 taken 46 times.
✗ Branch 7 not taken.
46 mrb_load_string(mrb.get(), ss.str().c_str());
29 46 }
30
31 void run_file(const std::string& file)
32 {
33 std::shared_ptr<mrbc_context> cxt(mrbc_context_new(mrb.get()), [=](mrbc_context* p) {mrbc_context_free(mrb.get(), p);});
34 mrbc_filename(mrb.get(), cxt.get(), file.c_str());
35
36 std::ifstream t(file);
37 std::string source((std::istreambuf_iterator<char>(t)),
38 std::istreambuf_iterator<char>());
39
40 mrb_load_nstring_cxt(mrb.get(), source.c_str(), source.length(), cxt.get());
41 }
42 };
43
44 #endif // __MRUBYVM_HPP__
45