Object.factory() and exe file size bloat

via Digitalmars-d digitalmars-d at puremagic.com
Sat Aug 22 01:16:04 PDT 2015


On Friday, 21 August 2015 at 21:37:34 UTC, Walter Bright wrote:
> On 8/21/2015 4:44 AM, Marc =?UTF-8?B?U2Now7x0eiI=?= 
> <schuetzm at gmx.net> wrote:
>> Just change Object.factory to require registration of the 
>> class.
>
> What mechanism do you propose for that?

E.g.:

     template factoryConstructors(Args...) {
         // using void* because I don't know whether it's possible
         // to have a function pointer to a constructor
         void*[string] factoryConstructors;
     }

     void registerFactoryConstructor(Class, Args...)()
     if(is(Class == class))
     {
         factoryConstructors!Args[Class.stringof] = ...;
     }

     Object factory(Args...)(string className, Args args) {
         auto constructor = factoryConstructors!Args[className];
         return ...;
     }

This even allows to call constructors with arguments. deadalnix's 
proposal is a nice way to automate this for an entire class 
hierarchy. Another possible mechanisms would be some UDA magic.


More information about the Digitalmars-d mailing list