Retrieving call expression of a function
Quentin Ladeveze via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Nov 28 07:41:57 PST 2015
On Saturday, 28 November 2015 at 15:22:51 UTC, tcak wrote:
> On Saturday, 28 November 2015 at 15:02:32 UTC, Quentin Ladeveze
> wrote:
>> Hi,
>>
>> Is it possible to retrieve the calling expression of a
>> function ? Something like that
>>
>> ---
>> import std.stdio;
>>
>> void funcTest(int x, float y)
>> {
>> writefln(get_call());
>> }
>>
>> void main()
>> {
>> float x = 0.2;
>> funcTest(1+2, x+2);
>> }
>> ---
>>
>> output expected : " funcTest(1+2, x+2) "
>>
>> Thanks
>
> I do not have right now to provide you with code, but three
> things:
>
> 1. Use of mixin,
> 2. The function call to be written in a string,
> 3. A wrapper that stores given function call string, saves it,
> and mixin it.
Thanks, it was a cool idea, I made something that works, but you
can only call the function with literals, not with variables :
---
import std.stdio;
void main()
{
int x = 2;
enum call = "funcTest(1, 0.2);";
callPrinter!call;
}
template callPrinter(string call)
{
void callPrinter()
{
writeln(call);
mixin(call);
}
}
void funcTest(int x, float y)
{
writeln("called with ", x, " and ", y);
}
---
output :
funcTest(2, 0.2);
called with 2 and 0.2
More information about the Digitalmars-d-learn
mailing list