digitalmars.D - DMD 0.95 release
- Walter (2/2) Jul 08 2004 Finally, the new printf is here! (called writef). The rest are bug fixes...
-
Juanjo =?ISO-8859-15?Q?=C1lvarez?=
(2/5)
Jul 08 2004
And more important, writefln which will save a lot \n's to the world
- Ben Hinkle (7/10) Jul 08 2004 cool. writef is nice and simple and as flexible as printf. Is someone go...
- Ivan Senji (6/8) Jul 08 2004 Although i can't get writef to work (only writefln) it is a great
- Stewart Gordon (28/31) Jul 09 2004 Presumably we're going to have versions of writef for strings and Stream...
- Walter (9/17) Jul 09 2004 The character itself.
- Matthias Becker (2/10) Jul 10 2004 Could you perhaps tell something about the improved Typeinfo? What can b...
- Walter (5/20) Jul 10 2004 now,
-
Stewart Gordon
(13/18)
Jul 12 2004
-
Stewart Gordon
(55/58)
Jul 12 2004
- David L. Davis (14/16) Jul 09 2004 Walter: Bravo! I really likee the new 'C' printf() replacements in 'D',
- Walter (9/27) Jul 10 2004 converting all
-
Juanjo =?ISO-8859-15?Q?=C1lvarez?=
(1/5)
Jul 10 2004
<*- Hint -*> I'm sure Walter accept patches
- David L. Davis (16/21) Jul 10 2004 Juanjo: Thxs!!
- Burton Radons (14/14) Jul 12 2004 This code doesn't compile properly. The first line in classTemplate
- Vathix (23/25) Jul 13 2004 Hooray!
- Stewart Gordon (14/28) Jul 13 2004 Yes, that's the whole point of writef.
- Roberto Mariottini (28/43) Jul 13 2004 Exactly my thought, with the difference that I think you can use a custo...
- Roberto Mariottini (9/12) Jul 13 2004 Re-thinking about it, I prefer having a format function returning a stri...
-
Stewart Gordon
(11/13)
Jul 13 2004
- Burton Radons (7/7) Jul 16 2004 This code fails with "non-constant expression b" on the last line in DMD...
- J C Calvarese (10/19) Jul 16 2004 We now have a newsgroup dedicated to bug reports. I'm cross-posting to i...
-
Stewart Gordon
(23/34)
Aug 10 2004
Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.html
Jul 08 2004
Walter wrote:Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlAnd more important, writefln which will save a lot \n's to the world <g>
Jul 08 2004
Walter wrote:Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlcool. writef is nice and simple and as flexible as printf. Is someone going to add a std.stream wrapper for writef? (Sean? me?) A corresponding readf would be nice since then we could replace std.stream.scanf. It could also be worth deprecating std.stream.printf, too, though it just ends up calling C's printf so it isn't a big deal. -Ben
Jul 08 2004
"Walter" <newshound digitalmars.com> wrote in message news:cck67e$2irt$1 digitaldaemon.com...Finally, the new printf is here! (called writef). The rest are bug fixes.Although i can't get writef to work (only writefln) it is a great improvement over printf. BUT: Why do fwritef and fwritefln take FILE* as an argument and not a Stream or something like that?http://www.digitalmars.com/d/changelog.html
Jul 08 2004
"Ivan Senji" <ivan.senji public.srce.hr> wrote in message news:cckkic$6gf$1 digitaldaemon.com..."Walter" <newshound digitalmars.com> wrote in message news:cck67e$2irt$1 digitaldaemon.com...fixes.Finally, the new printf is here! (called writef). The rest are bugAlthough i can't get writef to work (only writefln) it is a great improvement over printf.This works: ----------------------------------------- C:\mars>type test.d import std.stdio; void main() { std.stdio.writef("hello\n"); } C:\mars>dmd test \dm\bin\link test,,,user32+kernel32/noi; C:\mars>test hello C:\mars> ----------------------------------------------BUT: Why do fwritef and fwritefln take FILE* as an argument and not a Stream or something like that?std.format.doFormat() is designed to work with anything you want.
Jul 08 2004
"Walter" <newshound digitalmars.com> wrote in message news:cck67e$2irt$1 digitaldaemon.com... Finally, the new printf is here! (called writef). The rest are bugfixes. Wow, writef() is cool! This'll make displaying information alot easier than it was before with printf()! writef("NUMBER: ", 3); instead of: printf("NUMBER: %i", 3); Thanks, Walter (and whoever else contributed to the writef() function)!
Jul 08 2004
Walter wrote:Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlPresumably we're going to have versions of writef for strings and Stream objects? OK, so it would be straightforward to write them ourselves, but they'd be such common, simple operations there would otherwise be several independently-written copies around (a bit like the many copies of bubble sort that C programmers who haven't discovered how to qsort keep around...). The obvious way would be to add writef and writefln methods to Stream (we'd have Unicode or not to consider - maybe also writefW and writeflnW), and to create a function dchar[] swritef(...); (by analogy with sprintf - but still don't know if that's the best name) to return a formatted string. I'll probably code up these additions over the weekend if nobody else is going to.... BTW there are a few kinds of types you haven't told us the default formatting for: - characters (presumably the character itself) - structs and unions (presumably .toString(), if it has one....) - enums (do these count as integral types?) - arrays other than strings - pointers - function pointers/delegates - have I missed any? Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Jul 09 2004
"Stewart Gordon" <smjg_1998 yahoo.com> wrote in message news:cclsjm$20s5$1 digitaldaemon.com...BTW there are a few kinds of types you haven't told us the default formatting for: - characters (presumably the character itself)The character itself.- structs and unions (presumably .toString(), if it has one....)Yup. Though this won't work yet for structs until TypeInfo is improved.- enums (do these count as integral types?)Enums I have special plans for. When TypeInfo gets better, I plan to have writef write out the enum identifier corresponding to the value. Right now, they come out as integers.- arrays other than stringsWaiting on improved TypeInfo. Probably will do a comma separated list.- pointers - function pointers/delegatesLike %p.
Jul 09 2004
Could you perhaps tell something about the improved Typeinfo? What can be done with it? What will be changed?- structs and unions (presumably .toString(), if it has one....)Yup. Though this won't work yet for structs until TypeInfo is improved.- enums (do these count as integral types?)Enums I have special plans for. When TypeInfo gets better, I plan to have writef write out the enum identifier corresponding to the value. Right now, they come out as integers.- arrays other than stringsWaiting on improved TypeInfo. Probably will do a comma separated list.
Jul 10 2004
"Matthias Becker" <Matthias_member pathlink.com> wrote in message news:ccp56o$sjl$1 digitaldaemon.com...now,- structs and unions (presumably .toString(), if it has one....)Yup. Though this won't work yet for structs until TypeInfo is improved.- enums (do these count as integral types?)Enums I have special plans for. When TypeInfo gets better, I plan to have writef write out the enum identifier corresponding to the value. Rightdonethey come out as integers.Could you perhaps tell something about the improved Typeinfo? What can be- arrays other than stringsWaiting on improved TypeInfo. Probably will do a comma separated list.with it? What will be changed?Basically having specialized TypeInfo's for each type.
Jul 10 2004
Stewart Gordon wrote: <snip>The obvious way would be to add writef and writefln methods to Stream (we'd have Unicode or not to consider - maybe also writefW and writeflnW), and to create a function dchar[] swritef(...);<snip> I've just discovered that there's a function char[] format(...); in std.string that does this. Yet another undocumented feature. And I'm not sure why it's only been written for char, not for wchar or dchar, considering that doFormat itself generates dchars.... Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Jul 12 2004
Stewart Gordon wrote: <snip>The obvious way would be to add writef and writefln methods to Stream (we'd have Unicode or not to consider - maybe also writefW and writeflnW), and to create a function<snip> Here they are.... ---------- void writef(...) { void putc(dchar c) { char[] buf; std.utf.encode(buf, c); writeString(buf); } std.format.doFormat(&putc, _arguments, _argptr); } void writefln(...) { void putc(dchar c) { char[] buf; std.utf.encode(buf, c); writeString(buf); } std.format.doFormat(&putc, _arguments, _argptr); version (Win32) { writeString("\r\n"); } else version (Mac) { writeString("\r"); } else { writeString("\n"); } } void writefW(...) { void putc(dchar c) { wchar[] buf; std.utf.encode(buf, c); writeStringW(buf); } std.format.doFormat(&putc, _arguments, _argptr); } void writeflnW(...) { void putc(dchar c) { wchar[] buf; std.utf.encode(buf, c); writeStringW(buf); } std.format.doFormat(&putc, _arguments, _argptr); version (Win32) { writeStringW("\r\n"); } else version (Mac) { writeStringW("\r"); } else { writeStringW("\n"); } } -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Jul 12 2004
In article <cck67e$2irt$1 digitaldaemon.com>, Walter says...Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlWalter: Bravo! I really likee the new 'C' printf() replacements in 'D', especially the writef() and writefln() functions, which I've been converting all the printf()s to writefln()s in my current 'D' code! :)) They work Great!! Also v0.95 fixed the problems I had found in v0.93 and v0.94...Thxs! <*-Hint-*>I know that I promised not to bug you, but it has been a little while now, so here goes nothing...are you any closer to putting in the ifind(), and irfind() (and maybe hopefully the ireplace() and icount() functions) into std.string? Please. I need them for the code I'm writing, and it would be a lot better if they're already in the Phobos runtime library. Plus I'm very close to announcing the opening of an expanded 'D' programming section to my home page soon, so it would be nice have the functions in place. ------------------------------------------------------------------- "Dare to reach for the Stars...Dare to Dream, Build, and Achieve!"
Jul 09 2004
"David L. Davis" <SpottedTiger yahoo.com> wrote in message news:ccnnvn$1ko1$1 digitaldaemon.com...In article <cck67e$2irt$1 digitaldaemon.com>, Walter says...converting allFinally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlWalter: Bravo! I really likee the new 'C' printf() replacements in 'D', especially the writef() and writefln() functions, which I've beenthe printf()s to writefln()s in my current 'D' code! :)) They work Great!! Also v0.95 fixed the problems I had found in v0.93 and v0.94...Thxs! <*-Hint-*>I know that I promised not to bug you, but it has been a littlewhilenow, so here goes nothing...are you any closer to putting in the ifind(),andirfind() (and maybe hopefully the ireplace() and icount() functions) into std.string? Please. I need them for the code I'm writing, and it would bea lotbetter if they're already in the Phobos runtime library. Plus I'm veryclose toannouncing the opening of an expanded 'D' programming section to my homepagesoon, so it would be nice have the functions in place.Don't worry, I'll get to them.
Jul 10 2004
<*-Hint-*>I know that I promised not to bug you, but it has been a little while now, so here goes nothing...are you any closer to putting in the ifind(), and irfind() (and maybe hopefully the ireplace() and icount() functions) into std.string? Please. I need them for the code I'm writing,<*- Hint -*> I'm sure Walter accept patches <g>
Jul 10 2004
In article <ccp4j1$rio$1 digitaldaemon.com>, Juanjo =?ISO-8859-15?Q?=C1lvarez?= says...Juanjo: Thxs!! But I've already did that, done that in the following messages "Re:DMD 0.92 release 06/12/2004 11:44 AM" with ifind() and irfind() REF:<caf8dk$2l38$1 digitaldaemon.com> and "Re:DMD 0.92 release 06/15/2004 01:45 PM" with ireplace() and icount() REF:<canciu$2p8q$1 digitaldaemon.com>. And Walter had allowed me the chance to do them, so now it's just a matter of waiting. :P ... <g> P.S. I bug Walter ever now and then, because he seems to work better and faster under pressure. :)) The wonderful new writef() replacement for printf() being as a prime example. Keep Truckin' Walter!! ------------------------------------------------------------------- "Dare to reach for the Stars...Dare to Dream, Build, and Achieve!"<*-Hint-*>I know that I promised not to bug you, but it has been a little while now, so here goes nothing...are you any closer to putting in the ifind(), and irfind() (and maybe hopefully the ireplace() and icount() functions) into std.string? Please. I need them for the code I'm writing,<*- Hint -*> I'm sure Walter accept patches <g>
Jul 10 2004
This code doesn't compile properly. The first line in classTemplate works, but the second reports the error "no property 'type' for type 'classBase'". It should create a field of the given alias type. class classBase { alias int type; const int constant = 1; } class classTemplate (parameter) { int value = parameter.constant; parameter.type field; } alias classTemplate! (classBase) instantiation;
Jul 12 2004
"Walter" <newshound digitalmars.com> wrote in message news:cck67e$2irt$1 digitaldaemon.com...Finally, the new printf is here! (called writef). The rest are bug fixes. http://www.digitalmars.com/d/changelog.htmlHooray! I don't think the format %.*s works as expected. It's printing out the entire string rather than using the alternate length from the stack: writef("%.*s", 2, "hello"); Still prints out the entire "hello". I know we don't need this anymore, but I think it should at least be consistent. All the types cleanly print what you would expect, except strings are still treated as formats. I just don't think it's all that good. The same old problem with printf(): you get user input and go to print it, if the user types a % it is processed as a format and all hell breaks loose (the typesafety prevents some of the problems). Sure you could just writef("%s", userinput) but it's just not very clean with the rest of it. I guess I'm having a hard time explaining it. But I have an idea to make it better, by using a different string type as the format: writef(f"this is a format string", "this isn't"); writef("%s does nothing", f"%s does something"); the f"" tells the compiler to use fchar[], fwchar[] or fdchar[] (can be typedef'd in object.d) that instruct writef() to process it as a format string instead of a regular string. Then writef(userinput) is safe. I think it will fit in fine because we won't need as many format strings as printf() did, since writef() knows about the types.
Jul 13 2004
Vathix wrote: <snip>All the types cleanly print what you would expect, except strings are still treated as formats.Yes, that's the whole point of writef.I just don't think it's all that good. The same old problem with printf(): you get user input and go to print it, if the user types a % it is processed as a format and all hell breaks loose (the typesafety prevents some of the problems). Sure you could just writef("%s", userinput) but it's just not very clean with the rest of it.I tend to use puts to write a string by itself. The only problem is if you want to do it without a trailing newline. Maybe we should have another function or two in std.stdio for this....I guess I'm having a hard time explaining it. But I have an idea to make it better, by using a different string type as the format: writef(f"this is a format string", "this isn't"); writef("%s does nothing", f"%s does something"); the f"" tells the compiler to use fchar[], fwchar[] or fdchar[] (can be typedef'd in object.d)<snip> For the syntax to be supported, the types would have to be built into the language. But it does seem a rather ad hoc feature.... Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Jul 13 2004
In article <cd08je$2ar5$1 digitaldaemon.com>, Vathix says...[...]All the types cleanly print what you would expect, except strings are still treated as formats. I just don't think it's all that good. The same old problem with printf(): you get user input and go to print it, if the user types a % it is processed as a format and all hell breaks loose (the typesafety prevents some of the problems). Sure you could just writef("%s", userinput) but it's just not very clean with the rest of it. I guess I'm having a hard time explaining it. But I have an idea to make it better, by using a different string type as the format: writef(f"this is a format string", "this isn't"); writef("%s does nothing", f"%s does something"); the f"" tells the compiler to use fchar[], fwchar[] or fdchar[] (can be typedef'd in object.d) that instruct writef() to process it as a format string instead of a regular string. Then writef(userinput) is safe. I think it will fit in fine because we won't need as many format strings as printf() did, since writef() knows about the types.Exactly my thought, with the difference that I think you can use a custom class to specify a format: Then you can safely write: writef("This is 100% safe!"); writef("Items: ", num , ", free: ", fspec("%7.3f%%"), (max-num)/max*100); Ciao
Jul 13 2004
In article <cd0qv1$9me$1 digitaldaemon.com>, Roberto Mariottini says...[...]Then you can safely write: writef("This is 100% safe!"); writef("Items: ", num , ", free: ", fspec("%7.3f%%"), (max-num)/max*100);Re-thinking about it, I prefer having a format function returning a string, and having a write function that doesn't apply formats: write("this is ", 100, "% safe"); write("Used: ", format("%7.3f%%", num/max*100), ", free: ", format("%7.3f%%", (max-num)/max*100)); write(format("Used: %7.3f%% free: %7.3f%%", num/max*100, (max-num)/max*100))); Ciao
Jul 13 2004
Roberto Mariottini wrote: <snip>Re-thinking about it, I prefer having a format function returning a string, and having a write function that doesn't apply formats:<snip> We have that format function in std.string; it just isn't documented. But yes, an unformatted write function would be nice. See my previous post on this thread. Stewart. -- My e-mail is valid but not my primary mailbox, aside from its being the unfortunate victim of intensive mail-bombing at the moment. Please keep replies on the 'group where everyone may benefit.
Jul 13 2004
This code fails with "non-constant expression b" on the last line in DMD 0.95. It should compile normally. struct foo { int x; } const int a = 0; const foo b = { a }; const foo c = b; It's a sticky problem, but templating can't be done without it.
Jul 16 2004
Burton Radons wrote:This code fails with "non-constant expression b" on the last line in DMD 0.95. It should compile normally. struct foo { int x; } const int a = 0; const foo b = { a }; const foo c = b; It's a sticky problem, but templating can't be done without it.We now have a newsgroup dedicated to bug reports. I'm cross-posting to it. *web interface* http://www.digitalmars.com/drn-bin/wwwnews?digitalmars.D.bugs *usenet interface* news://news.digitalmars.com/digitalmars.D.bugs FWIW, I've confirmed your bug. -- Justin (a/k/a jcc7) http://jcc_7.tripod.com/d/
Jul 16 2004
J C Calvarese wrote:Burton Radons wrote:<snip> To elaborate, members of const structs also fail. (DMD 0.98) Stewart. ---------- struct Qwert { int yuiop; } struct Asdfg { int hjkl; } struct Zxcvb { Asdfg nm; } const int qaz = 15; const Qwert wsx = { qaz }; const Asdfg edc = { wsx.yuiop }; const Zxcvb rfv = { edc }; int tgb = rfv.nm.hjkl; ---------- D:\My Documents\Programming\D\Tests\bugs\init_struct.d(7): non-constant expression *(&wsx) D:\My Documents\Programming\D\Tests\bugs\init_struct.d(8): non-constant expression edc D:\My Documents\Programming\D\Tests\bugs\init_struct.d(9): non-constant expression *(&rfv) -- My e-mail is valid but not my primary mailbox. Please keep replies on the 'group where everyone may benefit.This code fails with "non-constant expression b" on the last line in DMD 0.95. It should compile normally. struct foo { int x; } const int a = 0; const foo b = { a }; const foo c = b; It's a sticky problem, but templating can't be done without it.
Aug 10 2004