diff --git a/ext/tox/tox.c b/ext/tox/tox.c index 0f1a031..2b9c6ad 100644 --- a/ext/tox/tox.c +++ b/ext/tox/tox.c @@ -20,6 +20,7 @@ static VALUE cTox_cOptions; static VALUE cTox_cOptions_alloc(VALUE klass); static void cTox_cOptions_free(void *ptr); static VALUE cTox_cOptions_initialize(VALUE self); +static VALUE cTox_cOptions_data_EQUALS(VALUE self, VALUE data); void Init_tox() { @@ -31,6 +32,7 @@ void Init_tox() 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); + rb_define_method(cTox_cOptions, "data=", cTox_cOptions_data_EQUALS, 1); } /****************************************************************************** @@ -117,3 +119,18 @@ VALUE cTox_cOptions_initialize(const VALUE self) return self; } + +VALUE cTox_cOptions_data_EQUALS(VALUE self, VALUE savedata) +{ + cTox_cOptions_ *tox_options; + + Check_Type(savedata, T_STRING); + + Data_Get_Struct(self, cTox_cOptions_, tox_options); + + tox_options->savedata_type = TOX_SAVEDATA_TYPE_TOX_SAVE; + tox_options->savedata_data = (uint8_t*)RSTRING_PTR(savedata); + tox_options->savedata_length = RSTRING_LEN(savedata); + + return savedata; +}