How to convert int type to string int ?

2014-06-01 Thread bioinfornatics via Digitalmars-d-learn

Hi,

All is in the title.
I need this to do a tupleof enhanced, that mean:
   - .tupleof need an instance me i want to do this on type
diretcly
   - .tupleof do not bind to member name i need this


for this i strat to this code:

import std.stdio;
import std.typecons;
import std.conv;

struct Coord
{
 int x;
 int y;
 int z;
}

template toTuple(T){
 static string maker(){
 string statement = alias Tuple!(;
 foreach(const memberName; __traits(allMembers, T)){
 statement ~=  to!string(typeof(__traits(getMember, T,
memberName)))  ~ ,\ ~ memberName ~ \,  ;
 }
 statement = statement[O..$-1] ~ ) t; ; // $-1 to remove
extra comma
 return statement;
 }
 enum toTuple = mixin( maker() );
}


but that fail on typeof(__traits(getMember, T, memberName) becase
that return a type and not a string.


Thaks for your help


Re: How to convert int type to string int ?

2014-06-01 Thread bioinfornatics via Digitalmars-d-learn

On Sunday, 1 June 2014 at 13:34:20 UTC, bioinfornatics wrote:

Hi,

All is in the title.
I need this to do a tupleof enhanced, that mean:
   - .tupleof need an instance me i want to do this on type
diretcly
   - .tupleof do not bind to member name i need this


for this i strat to this code:

import std.stdio;
import std.typecons;
import std.conv;

struct Coord
{
 int x;
 int y;
 int z;
}

template toTuple(T){
 static string maker(){
 string statement = alias Tuple!(;
 foreach(const memberName; __traits(allMembers, T)){
 statement ~=  to!string(typeof(__traits(getMember, 
T,

memberName)))  ~ ,\ ~ memberName ~ \,  ;
 }
 statement = statement[O..$-1] ~ ) t; ; // $-1 to 
remove

extra comma
 return statement;
 }
 enum toTuple = mixin( maker() );
}


but that fail on typeof(__traits(getMember, T, memberName) 
becase

that return a type and not a string.


Thaks for your help


I find this: typeid(typeof(__traits(getMember, T,
memberName))).toString
but that do not works at compile time.

Error: static variable typeid(int) cannot be read at compile time


Re: How to convert int type to string int ?

2014-06-01 Thread Tobias Pankrath via Digitalmars-d-learn

Maybe http://dlang.org/property.html#stringof helps.


Re: How to convert int type to string int ?

2014-06-01 Thread bioinfornatics via Digitalmars-d-learn

On Sunday, 1 June 2014 at 13:52:27 UTC, Tobias Pankrath wrote:

Maybe http://dlang.org/property.html#stringof helps.


yes that help a lot thanks


Re: How to convert int type to string int ?

2014-06-01 Thread bioinfornatics via Digitalmars-d-learn

I bam close to be done

import std.stdio;
import std.typecons;
import std.conv;

struct Coord
{
 int x;
 int y;
 int z;
}

template toTuple(T){
 static string maker(){
 string statement = alias Tuple!(;
 foreach(const memberName; __traits(allMembers, T)){
 statement ~=  typeof(__traits(getMember, T,
memberName)).stringof  ~ ,\ ~ memberName ~ \,  ;
 }
 statement = statement[0..$-2] ~ ) toTuple; ; // $-1 to
remove extra comma
 return statement;
 }
 pragma( msg, maker() );
 mixin( maker() );
}

void main()
{
 //auto a = c.tupleof;
 auto a = toTuple!Coord;
}



$ ldc2 -w -oftestTupleof testTupleof.d
alias Tuple!(int,x, int,y, int,z) toTuple;
testTupleof.d(29): Error: type Tuple!(int, x, int, y, int,
z) has no value


Re: How to convert int type to string int ?

2014-06-01 Thread bioinfornatics via Digitalmars-d-learn

On Sunday, 1 June 2014 at 13:58:03 UTC, bioinfornatics wrote:

On Sunday, 1 June 2014 at 13:52:27 UTC, Tobias Pankrath wrote:

Maybe http://dlang.org/property.html#stringof helps.


yes that help a lot thanks


End of spam ( joke ^^)


I found it :-)

import std.stdio;
import std.typecons;
import std.conv;

struct Coord
{
 int x;
 int y;
 int z;
}

template toTuple(T){
 static string maker(){
 string statement = alias toTuple = Tuple!(;
 foreach(const memberName; __traits(allMembers, T)){
 statement ~=  typeof(__traits(getMember, T,
memberName)).stringof  ~ ,\ ~ memberName ~ \,  ;
 }
 statement = statement[0..$-2] ~ ) ; ; // $-1 to remove
extra comma
 return statement;
 }
 pragma( msg, maker() );
 mixin( maker() );
}


void main()
{
 Coord c;
 alias A = toTuple!Coord;
 A a;
 a[0] = 1;
 a.x = 1;
}