Book Image

D Cookbook

By : Adam Ruppe
Book Image

D Cookbook

By: Adam Ruppe

Overview of this book

Table of Contents (21 chapters)
D Cookbook
Credits
Foreword
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

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:

  1. 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.

  2. Add alias this to the pointer so that operations will be automatically forwarded to it.

  3. Make a constructor, if possible, or a static factory method that acquires the object and increases the reference count.

  4. Write a postblit that increases the reference count.

  5. Write a destructor that decreases the reference count and frees the object if necessary.

  6. 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...