Automatic code refactoring
BCS
ao at pathlink.com
Sun Aug 5 14:53:28 PDT 2007
Reply to Robert,
> BCS Wrote:
>
>> I'd go the other way
>>
>> I would like this is convert a class to abstract, derive a cocreate
>> class from it that acts as the original class does, replace all
>> 'new's and derivations with this new class.
>>
>> extract interface from several classes (only ask about overlapping
>> functions)
>>
>> convert "auto T = ..." to it's actual type
>> ---
>> select methods from a class and build a mixin template for them
>> with interface extraction this would allow extracting interface +
>> functionality
>> blocks
>> interface I { int foo() }
>> template I_impl() { int foo(){...} }
>> ...
>> class C : I { mixin I_impl!() }
> All good ideas! They'll be there.
>
>> generate a explicit specialization of a template from a general one
>>
>> template T(U) { U foo; }
>>
>> becomes, for int
>>
>> template T(U) { U foo; }
>> template T(U : int) { int foo; }
> I don't really understand what you mean here and why this would be
> useful. Can you elaborate, please?
>
This would be for where you want to have a special case of a template for
some given inputs. It assumes that the general case is good starting point.
The most basic form would do a copy/paste of a template and insert "__ :
type/value" code into the args list. A better version would then run whatever
parts of the template logic it could and drop failed static ifs and maybe
some type deductions.
More information about the Digitalmars-d
mailing list