/*
 * 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;
}