Wrap / unwrap hbsdctrl_ctx_t

Remove unneccessary abstraction
This commit is contained in:
0x1eef 2024-05-12 19:21:23 -03:00
parent fd7e5e26f4
commit af0c4b776f
3 changed files with 7 additions and 19 deletions

View file

@ -5,32 +5,24 @@
static int FLAGS = HBSDCTRL_FEATURE_STATE_FLAG_NONE; static int FLAGS = HBSDCTRL_FEATURE_STATE_FLAG_NONE;
static const char *NAMESPACE = LIBHBSDCONTROL_DEFAULT_NAMESPACE; static const char *NAMESPACE = LIBHBSDCONTROL_DEFAULT_NAMESPACE;
static void bsdcontrol_context_free(struct bsdcontrol_ctx_t *); static void bsdcontrol_context_free(hbsdctrl_ctx_t *);
VALUE VALUE
bsdcontrol_context_alloc(VALUE klass) bsdcontrol_context_alloc(VALUE klass)
{ {
hbsdctrl_ctx_t *ctx; hbsdctrl_ctx_t *ctx;
struct bsdcontrol_ctx_t *rbctx;
ctx = hbsdctrl_ctx_new(FLAGS, NAMESPACE); ctx = hbsdctrl_ctx_new(FLAGS, NAMESPACE);
rbctx = calloc(1, sizeof(struct bsdcontrol_ctx_t));
if (ctx == NULL) if (ctx == NULL)
{ {
rb_raise(rb_eSystemCallError, "hbsdctrl_ctx_new"); rb_raise(rb_eSystemCallError, "hbsdctrl_ctx_new");
} }
else if (rbctx == NULL) return Data_Wrap_Struct(klass, NULL, bsdcontrol_context_free, ctx);
{
rb_raise(rb_eSystemCallError, "calloc");
}
rbctx->ctx = ctx;
return Data_Wrap_Struct(klass, NULL, bsdcontrol_context_free, rbctx);
} }
static void static void
bsdcontrol_context_free(struct bsdcontrol_ctx_t *rbctx) bsdcontrol_context_free(hbsdctrl_ctx_t *ctx)
{ {
hbsdctrl_ctx_free(&rbctx->ctx); hbsdctrl_ctx_free(&ctx);
free(rbctx);
} }
/* /*

View file

@ -1,10 +1,6 @@
#include <ruby.h> #include <ruby.h>
#include <libhbsdcontrol.h> #include <libhbsdcontrol.h>
struct bsdcontrol_ctx_t {
hbsdctrl_ctx_t *ctx;
};
VALUE bsdcontrol_context_alloc(VALUE); VALUE bsdcontrol_context_alloc(VALUE);
VALUE bsdcontrol_context_library_version(VALUE); VALUE bsdcontrol_context_library_version(VALUE);
VALUE bsdcontrol_context_available_features(VALUE); VALUE bsdcontrol_context_available_features(VALUE);

View file

@ -20,9 +20,9 @@ bsdcontrol_open(VALUE path)
hbsdctrl_ctx_t * hbsdctrl_ctx_t *
bsdcontrol_unwrap(VALUE rbcontext) bsdcontrol_unwrap(VALUE rbcontext)
{ {
struct bsdcontrol_ctx_t *rbctx; hbsdctrl_ctx_t *ctx;
Data_Get_Struct(rbcontext, struct bsdcontrol_ctx_t, rbctx); Data_Get_Struct(rbcontext, hbsdctrl_ctx_t, ctx);
return rbctx->ctx; return ctx;
} }
hbsdctrl_feature_t * hbsdctrl_feature_t *