autointf 1.2.0

Auto interface implementation generator.


To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

autointf

.. image:: https://img.shields.io/dub/v/autointf.svg

:target: https://code.dlang.org/packages/autointf


An helper-library to auto-generate interface implementation from a template function.

Installation:

Using dub:

.. code-block:: json

"dependencies": {
    "autointf": "*"
}



Quickstart

See example app:

.. code-block:: d

import std.stdio;
import autointf;


class AutoJsonRpc(I) : I
{
    private int id;

    private ReturnType!Func executeMethod(alias Func, ARGS...)(ARGS args)
    {
        import std.traits;
        import std.array : join;
        import std.conv : to;

        // retrieve some compile time informations
        alias RT    = ReturnType!Func;
        alias PTT   = ParameterTypeTuple!Func;
        enum  Name  = __traits(identifier, Func);

        string[] params;
        foreach (i, PT; PTT)
            params ~= to!string(args[i]);

        return `{"jsonrpc": "2.0", "method": "` ~ Name ~ `", "params": [`
            ~ params.join(",") ~ `], "id": ` ~ (id++).to!string() ~ "}";
    }

    mixin(autoImplementMethods!(I, executeMethod)());
}


interface IAPI
{
    string helloWorld(int number, string str);

    @noAutoImplement()
    final string foo() { return "foo"; }
}

void main()
{
    auto api = new AutoJsonRpc!IAPI();

    writeln(api.helloWorld(42, "foo"));
    // > {"jsonrpc": "2.0", "method": "helloWorld", "params": [42,foo], "id": 0}

    writeln(api.foo());
    // > foo
}
Authors:
  • Eliott Dumeix
Dependencies:
vibe-d:utils
Versions:
1.2.0 2018-Nov-15
1.1.1 2018-Sep-21
1.1.0 2018-Sep-04
1.0.0 2018-Sep-04
~master 2018-Nov-15
Show all 5 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 4 downloads this month

  • 617 downloads total

Score:
0.7
Short URL:
autointf.dub.pm