Using referenceCounters

Begah via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed Jun 1 11:14:33 PDT 2016


I started using reference counters for my assets in my 
application :
  - Images
  - Models
  - ....

Such as :

alias ModelType = RefCounted!Model;

struct Model
{
	static ModelType create(Mesh mesh, Shader shader) {
		ModelType model = ModelType();

		model.mesh = mesh;
		model.shader = shader;

		return model;
	}
}

I worked fine and compiled, but now i also want to keep a 
reference of the created models :
static ModelType[string] loadedModels;

static ModelType load(string modelName) {
	ModelType model = null;
		
	switch(extensions) {
		case "obj":
			model = loadObjModel(modelName, shader);
			break;
		case "dae":
			model = loadColladaModel(modelName);
			break;
		default: abort(extensions ~ " not supported model file format");
	}
		
	loadedModels[modelName] = model; // This creates a reference, so 
i need to get rid of it
	model.refCountedStore()._store._count--; // Something like that
	model.modelName = modelName;
	
	return model;
}

So i create load a model, and the reference counter is at one ( 
normal ).
Now i store this model in the associative array but i do not want 
it to count in the reference count. Unfortunatly _store is 
private.
How can i go about making the reference in the associative array 
be canceled?


More information about the Digitalmars-d-learn mailing list