TypeInfoEx and Variant: suggestions?
Steven Schveighoffer
schveiguy at yahoo.com
Fri Apr 17 04:39:01 PDT 2009
On Fri, 17 Apr 2009 07:23:48 -0400, Daniel Keep
<daniel.keep.lists at gmail.com> wrote:
>
>
> Steven Schveighoffer wrote:
>> On Fri, 17 Apr 2009 07:11:33 -0400, Daniel Keep
>> <daniel.keep.lists at gmail.com> wrote:
>>
>>>
>>>
>>> Steven Schveighoffer wrote:
>>>> On Thu, 16 Apr 2009 21:37:29 -0400, Daniel Keep
>>>> <daniel.keep.lists at gmail.com> wrote:
>>>>
>>>>> On a side note, I'm working on getting Tango's Layout to understand
>>>>> Variants and do the "proper" stringification. Still trying to work
>>>>> out
>>>>> how to get the changes to compile without having to rebuild Tango...
>>>>> *grumble*
>>>>
>>>>
>>>> Have you tried building your test app with your modified Tango file
>>>> specifically? That generally works for me:
>>>>
>>>> dmd variantTest.d ~/d/include/d/tango/core/Variant.d
>>>>
>>>> -Steve
>>>
>>> That works for Variant, but it doesn't seem to work with Layout. It
>>> compiles and runs, but it doesn't seem to actually use the code I give
>>> it.
>>
>> I think I ran into this before. I think it's because Layout is a
>> template, and is compiled when it is used, not when the module is
>> compiled. You have to recompile the user of Layout as well (i.e.
>> Stdout.d, and probably Print.d).
>>
>> -Steve
>
> Ah, but I'm using it directly. AND I've put my main function inside the
> modified Layout module. What more does it want from me? Cookies?
> Chocolates?!
You must be doing something wrong, it works for me:
[steves at localhost trunk]$ svn diff tango/text/convert/Layout.d
Index: tango/text/convert/Layout.d
===================================================================
--- tango/text/convert/Layout.d (revision 4435)
+++ tango/text/convert/Layout.d (working copy)
@@ -35,6 +35,8 @@
private import tango.io.model.IConduit : OutputStream;
+private import tango.stdc.stdio;
+
/*******************************************************************************
Platform issues ...
@@ -602,6 +604,7 @@
return integer (result, *cast(ushort*) p,
format, ushort.max, "u");
case TypeCode.INT:
+ printf("inside INT print!\n");
return integer (result, *cast(int*) p,
format, uint.max);
case TypeCode.UINT:
[steves at localhost trunk]$ cd ~/dstuff/testing
[steves at localhost testing]$ cat teststuff.d
import tango.text.convert.Layout;
void main()
{
auto layout = new Layout!(char);
int x = 0;
auto result = layout("{}", x);
}
[steves at localhost testing]$ dmd teststuff.d
[steves at localhost testing]$ ./teststuff
inside INT print!
[steves at localhost testing]$
-Steve
More information about the Digitalmars-d
mailing list