/* * Create a new world. * * You must pass an InterfaceSpec object defining the interface * to the world. * * world = Irmo::World.new(spec) */ static VALUE world_new(VALUE klass, VALUE ifspec) { IrmoInterfaceSpec *spec; IrmoWorld *world; VALUE object; VALUE argv[1]; Data_Get_Struct(ifspec, IrmoInterfaceSpec, spec); // create object and wrap it world = irmo_world_new(spec); object = wrap_world(world); irmo_world_unref(world); // call init argv[0] = ifspec; rb_obj_call_init(object, 1, argv); return object; }