Sha256: 00d387f612503705710d71dd49e1b9a47b5d69fd7a4166d660e992e026569d98
Contents?: true
Size: 1.97 KB
Versions: 3
Compression:
Stored size: 1.97 KB
Contents
#include "reflex/ruby/key.h" #include <rucy.h> #include "defs.h" using namespace Rucy; static Class cKey; namespace Reflex { Class key_class () { return cKey; } }// Reflex namespace Rucy { Value value (const Reflex::Key& key) { return new_type(cKey, new Reflex::Key(key)); } }// Rucy #define THIS to<Reflex::Key*>(self) #define CHECK RUCY_CHECK_OBJ(self, Reflex::Key, cKey) static VALUE alloc(VALUE klass) { return new_type<Reflex::Key>(klass); } static VALUE initialize(VALUE self) { RUCY_CHECK_OBJ(self, Reflex::Key, cKey); if (argc < 0 || 4 < argc) argument_error("Key#initialize", argc, 0, 1, 2); THIS->chars = (argc >= 1) ? argv[0].c_str() : NULL; THIS->code = (argc >= 2) ? to<int>(argv[1]) : Reflex::KEY_NONE; THIS->repeat = (argc >= 3) ? to<int>(argv[2]) : 1; THIS->modifiers = (argc >= 4) ? to<uint>(argv[3]) : (uint) Reflex::MOD_NONE; return self; } static VALUE initialize_copy(VALUE self, VALUE obj) { RUCY_CHECK_OBJ(self, Reflex::Key, cKey); Reflex::Key* key = to<Reflex::Key*>(obj); if (!key) argument_error(); *THIS = *key; return self; } static VALUE chars(VALUE self) { CHECK; return value(THIS->chars.c_str()); } static VALUE code(VALUE self) { CHECK; return value(THIS->code); } static VALUE repeat(VALUE self) { CHECK; return value(THIS->repeat); } static VALUE modifiers(VALUE self) { CHECK; return value(THIS->modifiers); } void Init_key () { Module mReflex = rb_define_module("Reflex"); cKey = rb_define_class_under(mReflex, "Key", rb_cObject); rb_define_alloc_func(cKey, alloc); rb_define_private_method(cKey, "initialize", RUBY_METHOD_FUNC(initialize), -1); rb_define_private_method(cKey, "initialize_copy", RUBY_METHOD_FUNC(initialize_copy), 1); rb_define_method(cKey, "chars", RUBY_METHOD_FUNC(chars), 0); rb_define_method(cKey, "code", RUBY_METHOD_FUNC(code), 0); rb_define_method(cKey, "repeat", RUBY_METHOD_FUNC(repeat), 0); rb_define_method(cKey, "modifiers", RUBY_METHOD_FUNC(modifiers), 0); }
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
reflexion-0.1.6 | .doc/ext/reflex/key.cpp |
reflexion-0.1.5 | .doc/ext/reflex/key.cpp |
reflexion-0.1.4 | .doc/ext/reflex/key.cpp |