Making a reference-counted object
A common technique to manage resources is reference counting. D's structs provide the necessary infrastructure to automate reference counting.
How to do it…
In order to make a reference-counted object, perform the following steps:
Write a struct with its only data member being a pointer to the object. You may write a nested
struct
to hold the data, or it may be a pointer to a library.Add
alias this
to the pointer so that operations will be automatically forwarded to it.Make a constructor, if possible, or a static factory method that acquires the object and increases the reference count.
Write a postblit that increases the reference count.
Write a destructor that decreases the reference count and frees the object if necessary.
Keep in mind that the data pointer may be null, and check for that in each function. Consider the following code:
struct RefCountedObject { private struct Implementation { /* other contents here */ int refcount; } Implementation...