static public RClass ClassNew(NetRuby ruby, RMetaObject spr, object[] o) { if (spr == null) { spr = ruby.cObject; } else if (spr is RSingletonClass) { throw new eTypeError("can't make subclass of virtual class"); } RClass klass = new RClass(ruby, spr); klass.klass = new RSingletonClass(spr.klass); klass.klass.AttachSingleton(klass); ruby.CallInit(klass, o); ruby.Funcall(spr, "inherited", new object[1] { klass }); return klass; }
internal static RString New(NetRuby rb, object[] args) { RString rs = new RString(rb, String.Empty); rb.CallInit(rs, args); return rs; }