mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-19 13:29:54 +00:00
59 lines
No EOL
1.8 KiB
C++
59 lines
No EOL
1.8 KiB
C++
#include "etc.h"
|
|
#include "binding-util.h"
|
|
#include "binding-types.h"
|
|
#include "debugwriter.h"
|
|
#include "sharedstate.h"
|
|
|
|
#include "signalconnection-binding.h"
|
|
|
|
void RubyConnection::Disconnect(){
|
|
RubyConnection::connection.Disconnect();
|
|
}
|
|
bool RubyConnection::Connected(){
|
|
return RubyConnection::connection.Connected();
|
|
}
|
|
|
|
VALUE rb_cRubyConnection = Qnil;
|
|
|
|
void rubyConnection_free(void* ptr)
|
|
{
|
|
RubyConnection* conn = static_cast<RubyConnection*>(ptr);
|
|
conn->Disconnect();
|
|
delete conn;
|
|
}
|
|
|
|
void rubyConnection_mark(void *ptr)
|
|
{
|
|
RubyConnection *conn = static_cast<RubyConnection*>(ptr);
|
|
|
|
if (!NIL_P(conn->proc))
|
|
rb_gc_mark(conn->proc);
|
|
}
|
|
|
|
const rb_data_type_t rubyConnection_type = { "RubyConnection", {rubyConnection_mark, rubyConnection_free, 0}, 0, 0, RUBY_TYPED_FREE_IMMEDIATELY };
|
|
|
|
static VALUE rubyConnection_alloc(VALUE klass)
|
|
{
|
|
RubyConnection* ptr = ALLOC(RubyConnection);
|
|
return TypedData_Wrap_Struct(klass, &rubyConnection_type, ptr);
|
|
}
|
|
|
|
static VALUE rubyConnectionDisconnect(VALUE self){
|
|
RubyConnection* conn;
|
|
TypedData_Get_Struct(self, RubyConnection, &rubyConnection_type, conn);
|
|
conn->Disconnect();
|
|
return Qnil;
|
|
}
|
|
|
|
static VALUE rubyConnectionConnected(VALUE self){
|
|
RubyConnection* conn;
|
|
TypedData_Get_Struct(self, RubyConnection, &rubyConnection_type, conn);
|
|
return rb_bool_new(conn->Connected());
|
|
}
|
|
|
|
void SignalConnectionBindingInit(){
|
|
rb_cRubyConnection = rb_define_class("RubyConnection", rb_cObject);
|
|
rb_define_alloc_func(rb_cRubyConnection, rubyConnection_alloc);
|
|
rb_define_method(rb_cRubyConnection, "disconnect", RUBY_METHOD_FUNC(rubyConnectionDisconnect), 0);
|
|
rb_define_method(rb_cRubyConnection, "connected", RUBY_METHOD_FUNC(rubyConnectionConnected), 0);
|
|
} |