/* *Copyright (C) 2018 Laurent Tréguier * *This file is part of DLS. * *DLS is free software: you can redistribute it and/or modify *it under the terms of the GNU General Public License as published by *the Free Software Foundation, either version 3 of the License, or *(at your option) any later version. * *DLS is distributed in the hope that it will be useful, *but WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *GNU General Public License for more details. * *You should have received a copy of the GNU General Public License *along with DLS. If not, see <http://www.gnu.org/licenses/>. * */ module dls.util.constructor; mixin template Constructor(T) { this() { foreach (member; __traits(derivedMembers, T)) { static if (is(typeof(__traits(getMember, T, member)) == class)) { import std.format : format; mixin(format!"%s = new %s();"(member, __traits(identifier, typeof(__traits(getMember, T, member))))); } } } }