Skip to content

Commit eafea43

Browse files
committed
modules/system: Split helpers header into smaller bits
There is a very good reason for this, I think...
1 parent 9b8033a commit eafea43

File tree

7 files changed

+69
-36
lines changed

7 files changed

+69
-36
lines changed
Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,9 @@
11
#ifndef MOON_MRB_HELPERS
22
#define MOON_MRB_HELPERS
33

4-
#include <mruby.h>
5-
#include <mruby/data.h>
6-
#include <mruby/string.h>
7-
#include <mruby/variable.h>
4+
#include "moon/mrb/helpers/class.hxx"
5+
#include "moon/mrb/helpers/variable.hxx"
6+
#include "moon/mrb/helpers/error.hxx"
7+
#include "moon/mrb/helpers/data.hxx"
88

9-
#define IVget(_name_) mrb_iv_get(mrb, self, mrb_intern_lit(mrb, _name_))
10-
#define IVset(_name_, _value_) mrb_iv_set(mrb, self, mrb_intern_lit(mrb, _name_), _value_)
11-
12-
#define KEY_SHADER "@shader"
13-
#define KEY_VBO "@vbo"
14-
#define KEY_ORIGIN "@origin"
15-
16-
#define MOON_GET_CLASS(__name__) mrb_class_get_under(mrb, mrb_module_get(mrb, "Moon"), __name__)
17-
#define MOON_GET_MODULE(__name__) mrb_module_get_under(mrb, mrb_module_get(mrb, "Moon"), __name__)
18-
;
19-
20-
static inline mrb_value
21-
moon_iv_get(mrb_state *mrb, mrb_value self, const char *name)
22-
{
23-
mrb_value iv_value = mrb_iv_get(mrb, self, mrb_intern_cstr(mrb, name));
24-
if (mrb_nil_p(iv_value)) {
25-
mrb_raisef(mrb, E_ARGUMENT_ERROR, "Cannot use a nil %S", mrb_str_new_cstr(mrb, name));
26-
}
27-
return iv_value;
28-
}
29-
30-
static inline void
31-
moon_data_cleanup(mrb_state *mrb, mrb_value self)
32-
{
33-
void *ptr = DATA_PTR(self);
34-
const struct mrb_data_type* type = DATA_TYPE(self);
35-
if (ptr && type) {
36-
type->dfree(mrb, ptr);
37-
}
38-
DATA_PTR(self) = NULL;
39-
}
409
#endif
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#ifndef MOON_MRB_CLASS_HELPERS
2+
#define MOON_MRB_CLASS_HELPERS
3+
4+
#include <mruby.h>
5+
#include <mruby/class.h>
6+
7+
#define MOON_GET_CLASS(__name__) mrb_class_get_under(mrb, mrb_module_get(mrb, "Moon"), __name__)
8+
#define MOON_GET_MODULE(__name__) mrb_module_get_under(mrb, mrb_module_get(mrb, "Moon"), __name__)
9+
10+
#endif
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#ifndef MOON_MRB_DATA_HELPERS
2+
#define MOON_MRB_DATA_HELPERS
3+
4+
#include <mruby.h>
5+
#include <mruby/data.h>
6+
7+
static inline void
8+
moon_data_cleanup(mrb_state* mrb, mrb_value self)
9+
{
10+
void *ptr = DATA_PTR(self);
11+
const struct mrb_data_type* type = DATA_TYPE(self);
12+
if (ptr && type) {
13+
type->dfree(mrb, ptr);
14+
}
15+
DATA_PTR(self) = NULL;
16+
}
17+
18+
#endif
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#ifndef MOON_MRB_ERROR_HELPERS
2+
#define MOON_MRB_ERROR_HELPERS
3+
4+
#include "moon/mrb/helpers/class.hxx"
5+
6+
#define MOON_E_FILE_NOT_FOUND MOON_GET_CLASS("FileNotFoundError")
7+
8+
#endif
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#ifndef MOON_MRB_VARIABLE_HELPERS
2+
#define MOON_MRB_VARIABLE_HELPERS
3+
4+
#include <mruby.h>
5+
#include <mruby/variable.h>
6+
#include <mruby/string.h>
7+
8+
#define IVget(_name_) mrb_iv_get(mrb, self, mrb_intern_lit(mrb, _name_))
9+
#define IVset(_name_, _value_) mrb_iv_set(mrb, self, mrb_intern_lit(mrb, _name_), _value_)
10+
11+
static inline mrb_value
12+
moon_iv_get(mrb_state* mrb, mrb_value self, const char* name)
13+
{
14+
mrb_value iv_value = mrb_iv_get(mrb, self, mrb_intern_cstr(mrb, name));
15+
if (mrb_nil_p(iv_value)) {
16+
mrb_raisef(mrb, E_ARGUMENT_ERROR, "Cannot use a nil %S", mrb_str_new_cstr(mrb, name));
17+
}
18+
return iv_value;
19+
}
20+
21+
#define KEY_VBO "@vbo"
22+
23+
#endif

modules/system/include/moon/mrb_err.hxx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
#include <mruby/class.h>
77
#include <mruby/value.h>
88

9-
extern bool mmrb_check_class(mrb_state *mrb, mrb_value obj, struct RClass *klass, bool quiet);
9+
extern bool mmrb_check_class(mrb_state *mrb, mrb_value obj, struct RClass* klass, bool quiet);
1010

1111
#endif
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
module Moon
2+
# Error raised when a resource cannot be found on disk
3+
class FileNotFoundError < RuntimeError
4+
end
5+
end

0 commit comments

Comments
 (0)