toxon
/
lita-tox
Archived
1
0
Fork 0

Implement ::Tox

This commit is contained in:
Braiden Vasco 2015-09-11 20:22:28 +00:00
parent 664ad43095
commit a467a681f3
1 changed files with 46 additions and 0 deletions

View File

@ -4,7 +4,14 @@
void Init_tox();
typedef struct cTox_ {
Tox *tox;
} cTox_;
static VALUE cTox;
static VALUE cTox_alloc(VALUE klass);
static void cTox_free(void *ptr);
static VALUE cTox_initialize(VALUE self, VALUE options);
static VALUE cTox_cOptions;
static VALUE cTox_cOptions_alloc(VALUE klass);
@ -14,12 +21,51 @@ static VALUE cTox_cOptions_initialize(VALUE self);
void Init_tox()
{
cTox = rb_define_class("Tox", rb_cObject);
rb_define_alloc_func(cTox, cTox_alloc);
rb_define_method(cTox, "initialize", cTox_initialize, 1);
cTox_cOptions = rb_define_class_under(cTox, "Options", rb_cObject);
rb_define_alloc_func(cTox_cOptions, cTox_cOptions_alloc);
rb_define_method(cTox_cOptions, "initialize", cTox_cOptions_initialize, 0);
}
/******************************************************************************
* Tox
******************************************************************************/
VALUE cTox_alloc(const VALUE klass)
{
cTox_ *tox;
tox = ALLOC(cTox_);
return Data_Wrap_Struct(klass, NULL, cTox_free, tox);
}
void cTox_free(void *const ptr)
{
free(ptr);
}
VALUE cTox_initialize(const VALUE self, const VALUE options)
{
cTox_ *tox;
struct Tox_Options *tox_options;
/* check if `options` is instance of `Tox::Options` */
Data_Get_Struct(self, cTox_, tox);
Data_Get_Struct(options, struct Tox_Options, tox_options);
tox->tox = tox_new(tox_options, NULL);
return self;
}
/******************************************************************************
* Tox::Options
******************************************************************************/
VALUE cTox_cOptions_alloc(const VALUE klass)
{
struct Tox_Options *tox_options;