accessors 1.1.1

D getter/setter generator


To use this package, put the following dependency into your project's dependencies section:

dub.json
dub.sdl

accessors

Build Status License Dub Version

accessors module allows to generate getters and setters automatically.

Usage

import accessors;

class WithAccessors
{
    @Read @Write
    private int num_;

    mixin(GenerateFieldAccessors);
}

@Read and @Write generate the following two methods:

public final @property inout(int) num() inout
{
    return this.num_;
}

public final @property void num(int num)
{
    this.num_ = num;
}

The accessors names are derived from the appropriate member variables by removing an underscore from the beginning or the end of the variable name.

Available user defined attributes

  • @Read
  • @RefRead
  • @ConstRead
  • @Write

As you can see there are multiple attributes that can be used to generate getters and only one for the setters. The getters differ by the return type. @RefRead returns a ref to the member variable, @ConstRead returns a const value.

Accessor visibility

Visibility of the generated accessors is by default public, but it can be changed. In order to achieve this, you have to pass public, protected, private or package as argument to the attribute:

import accessors;

class WithAccessors
{
    @Read("public") @Write("protected")
    private int num_;

    mixin(GenerateFieldAccessors);
}

Example

import accessors;
import std.stdio;

class Person
{
    @Read @Write
    private uint age_;

    @ConstRead
    private string name_;

    this(in string name, in uint age = 0)
    {
        this.name_ = name;
        this.age_ = age;
    }

    mixin(GenerateFieldAccessors);
}

void main()
{
    auto person = new Person("Saul Kripke");

    person.age = 57;

    writeln(person.name, ": ", person.age);
}

Bugs

If you experience compile-time problems, open an issue with the information about the type of the member variable fails.

Authors:
Eugene Wissner
Dependencies:
none
Versions:
1.1.1 2017-Mar-13
1.1.0 2017-Jan-16
1.0.0 2016-Dec-09
~master 2017-May-12
~unittest-attributes 2017-Oct-17
Show all 6 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 1 downloads this month

  • 24 downloads total