TypeFunction example creatiing a conversion matrix

Stefan Koch uplink.coder at gmail.com
Thu Oct 1 08:21:24 UTC 2020


Hi People,

To further show the intuitive type function syntax I just created 
a way to print a conversion matrix.

Here is the code:

string makeConvMatrix(alias[] types ...)
{
     string result;
     foreach(t;types)
     {
         result ~= "\t" ~ t.stringof;
     }
     result ~= "\n";
     foreach(t1;types)
     {
         result ~= t1.stringof;
         foreach(t2;types)
         {
             result ~=  "\t" ~ (is(t1:t2) ? "yes" : "no");
         }
         result ~= "\n";
     }
     return result;
}

alias Byte = byte;
alias Ubyte = ubyte;
alias Short = short;
alias Ushort = ushort;
alias Int = int;
alias Uint = uint;
alias Long = long;
alias Ulong = ulong;

void main()
{
     import std.stdio;
     static immutable convMatrix = makeConvMatrix(Byte, Ubyte, 
Short, Ushort, Int, Uint, Long, Ulong);

     printf("%s\n", convMatrix.ptr);
}

And here is the output:

----
  	byte 	ubyte 	short 	ushort 	int 	uint 	long 	ulong
byte	yes 	yes 	yes 	yes 	yes 	yes 	yes 	yes
ubyte	yes 	yes 	yes 	yes 	yes 	yes 	yes 	yes
short	no 	no 	yes 	yes 	yes 	yes 	yes 	yes
ushort	no 	no 	yes 	yes 	yes 	yes 	yes 	yes
int	no 	no 	no 	no 	yes 	yes 	yes 	yes
uint	no 	no 	no 	no 	yes 	yes 	yes 	yes
long	no 	no 	no 	no 	no 	no 	yes 	yes
ulong	no 	no 	no 	no 	no 	no 	yes 	yes

--


More information about the Digitalmars-d mailing list