use namespace & not fix return

This commit is contained in:
2025-10-22 22:42:30 +08:00
parent 2e5df6f1d6
commit 75caef3bd2
7 changed files with 123 additions and 138 deletions

29
arena_guard.h Normal file
View File

@@ -0,0 +1,29 @@
//
// Created by ZekeXiao on 2025/10/17.
//
#ifndef MRUBYPP_MRUBYPP_UTILS_H
#define MRUBYPP_MRUBYPP_UTILS_H
#include <mruby.h>
namespace mrubypp {
// gc arena
class arena_guard {
public:
explicit arena_guard(mrb_state *mrb) : mrb(mrb) {
ai = mrb_gc_arena_save(mrb);
}
arena_guard(arena_guard &&other) = delete;
arena_guard(const arena_guard &other) = delete;
~arena_guard() { mrb_gc_arena_restore(mrb, ai); }
// arena_idx
[[nodiscard]] int get_ai() const { return ai; }
private:
mrb_state *mrb;
int ai;
};
} // namespace mrubypp
#endif // MRUBYPP_MRUBYPP_UTILS_H