/* Do not remove the headers from this file! see /USAGE for more info. */ //:MODULE //inf_supply is a container which supports an unlimited supply of objects. //If the number of objects to be created in set_objects() is -1 then one //object is created and each time this object is removed/taken a new //object is created. // //See set_objects inherit CONTAINER; private mapping obs = ([ ]); mixed *set_objects(mapping m) { foreach( string key, mixed value in m ) { if( arrayp( value )) { if( value[0] == -1 ) { m[key][0] = 1; obs[absolute_path(key)] = m[key]; } } else if( value == -1 ) { m[key] = 1; obs[absolute_path(key)] = -1; } } return ::set_objects( m ); } mixed release_object(object target, int force) { mixed ret = ::release_object(target, force); string obj = absolute_path( base_name(target)); if (ret == 1) { if (obs[obj] == -1) give_new_obj(this_object(), obj, 0); else if (arrayp(obs[obj])) give_new_obj(this_object(), obj, 0, obs[obj]); } return ret; }