digitalmars.D.announce - std.stdio.write, writeln, fwrite, fwriteln
- Lionello Lunesu (261/261) Dec 28 2006 This is for the cout lovers out there:
- Lionello Lunesu (14/14) Dec 28 2006 I forgot to mention:
- Andrei Alexandrescu (See Website For Email) (3/9) Dec 28 2006 How about the converse read* functions?
- Lionello Lunesu (6/16) Dec 28 2006 "Andrei Alexandrescu (See Website For Email)"
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (4/8) Dec 28 2006 They exist, but only for std.stream (din) There is
- Sean Kelly (16/32) Dec 28 2006 Yup, they don't exist, though std.stream does have read functions. As
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (8/14) Dec 28 2006 Just for the archives: the ugly workarounds I did at
- Sean Kelly (6/20) Dec 28 2006 Thanks for pointing this out. I couldn't remember why the workarounds
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (8/13) Dec 28 2006 I've worked on a back-port from Apple's GCC (which *does*
- =?ISO-8859-1?Q?Anders_F_Bj=F6rklund?= (7/18) Dec 28 2006 I hope that you have better luck with your patch than I did with mine...
- Lionello Lunesu (8/16) Dec 28 2006 I figured it had to be done before : S
- Lionello Lunesu (112/112) Dec 28 2006 The diff -u against files from 0.178.
This is for the cout lovers out there: I like writefln, but many times it's doing too much. I often forget to print strings explicitly using "%s", to prevent errors in the (rare) case the string contains %-characters. That's why I've added write, writeln, fwrite, fwriteln to std\stdio.d Attached the changed files from DMD 0.178 (including ddoc). (I have no idea what flags to pass to diff to get the usual diff output; do tell) Changes: * std.format.doFormat has an optional 4th parameter "bool parse" that determines whether strings should be parsed for %-characters. It defaults to 'true' (for compatibility). * std.stdio.writefx has an optional 5th parameter "bool parse". Ditto. * std.stdio.write, writeln, fwrite, fwriteln call writefx with parse=false, which in turn calls doFormat with parse=false. Because the signature of doFormat and writefx has changed, you'll have linker errors when linking to old obj/libs. Since we're <1.0 I thought it would not be a problem. If it is, I'll have to make new functions doFormat2, writefx2 (or so) and make the old doFormat, writefx call those new functions. By the way: since the "parse" flag is tested early on, printing strings with write,writeln will probably be slightly faster as well. Also: I hereby release my changes to the public domain. L. begin 666 std.zip M; /^#P MKSLXJ(67]S GB:(2WDFV6JM>%PZ +,L 8BNF2)(2F0>A2 W],B$AC2H'E\4R MA %^,^$;%UM48#F00F$0BH4D2>Z!I9F0"N,LU[H:YA^68$.[;?&"A%+D/^OW MSGSZ?GI\N19+D0]F*IIIL3JS5$1%0AO]D29FM K.3SLTPVZ18R$QR-$&K5"Q MV6)V-9Y^&%FQQU[W4?MH>]F2;9SIZDN4.6MY85S!(LX*%2YX(L*_/"3T83(] MB8-)X[M:H ]7]QF=\EA<WP"1JR*E7.5]8_% $S(E^[ 4( %.RX1Q>AP3S-C1 M,FPD>JQD037"+F A&1HA>N3J9%HT;*:X9!'UM/=A!8:2]TU#X 89"[,%8F9& M0E*2 LY,+QN<8<T2!792*G(%";VE":KAM$F"+*D'G4.X)I*$>OG &JK_!$80 M)Z[3%!<+92+ML!B\=JAOCS'"3 ?7W_)>T8TLA 0NVA14U['7>&C O4C[A=!W M' QIB55V&R!0XN/5Y(V'&GV,I-;"A0%>SOZF"P4,Q;&=&+R%99!0OE)K_'=X M:*+KV*B6U^QF,S W1.ZM64)!)";FQ7NAB]!O-U;54J9SC"G3ZU 2UU_&I?7X MH=\4LH7G!!^_HC_4Q9MO8.K*9E\J;(T"?DH#YNL*8&,"7Z^'-PB1YZ&C5^CG M:(B/#R<G<(0_+Y#R M5B?4&34%1TB+N_]4[NV"[?+0MIAKO,,*IV'=55_1F^6>S3G?[L[6D1(SKN\* MS4)K[V:KL7ET?O%64UUL3JM ,58*H>!8:'T944)O2=R..1 YO/Z87:\O8<AS M%Q-<F7YSE6H.!"\( N:(KLX(J]"'1:M"BZI$[A0P/_[()?+5:<Q(2A$O$Y=Q MY^.!4B U2EC[EU9AA<U&AD-):JEC[#MRB M RS.\)S,%241B/ SV,06G.:LWIF 9OP?$"7\V^2'P.V;X2[X]AXFNQ_T,&7F M!D'=E?Y\^MO[USJ#A=L :Y4FW]GW5W;H^DZYFD%_CQF,]QW"9X V?OKXQ7O/ MWS/&_\R=&3]M])XCL6\U=/$3I\[E] ]02P,$% `"`` `-:6<-7+5-^.F(P`` M[X0``` ```!F;W)M870N9+T]:W,:29*?<<3\AQJ\,B !`B19LF1Y0V-;<XJ; M7D;+^SB8SE+1?MD1H\' N <_GHKQO7 53(/4F0/:..F*U6K5][AD`05]8(HQ M15D*<K 7_GH9^TDB0#HHR,#W M>D8&7^[<"5".3DKUJSA*?>*$*4 'M4S%S83:E,2ED0%'#FJ(E[DIRD(X[N<P M6LU];XI3"NL1M6PAO,C-L)R$!U,M Z$?&VP V= '&>-X >QP^+!GL?^O+ "9 M/_9Q2*K%8HT+<Q `#POG7 MU.NSC;D *W#H M"2E\._'T`A&XSGP.BDL3,_2!TSOGXQR80 B OG-2LI *,DLG%Y45+B*=!^/Z M6C2=U;6Z[KM'<B1%^]< ]*)5TOGNT1<0"WSI&FGIT-!UN I:-%3UI;#J7UYP M;$*-H3*9,] J\-)91WS\N"1&)XLTUW%_GOAV)W^!Z0P+DTA"UH\B[X135;:9 M50RE,UV:S'!R<FEBVJIB*$UU*6J+PAN8MJH82C_KTGD$PR-+YZ:M*H;2A2XE M79:E$UWJ11EZ"E3JZ5*<+0JOCZ6*-X4$RB/#L4("I4M3JI! Z2==ZEH8_F5* MEY+M`EN/I6^,E*5%PM)K2T)^J&1_8_I'\XA+7QH>TAC7=BI]JTM)EV7;U[HT MO5_ZGC^ATG>FS_[<G^*B`*6OL)1MR2$805K3<!E^!Y WX21B3PVG[")( SMP M3*""[$"8P1H60=MX%22X2EOV7+D08,1"5WI[**,$':H`??\5K/3H,LR<.W:' M\9F"UPB0?;,FZC[JWJF2MK0*BXZ0)D&W38,+5I($_'*PD>V%,3ZT:CA [AF\ M3U;DG,O!9 4 <!1?X+6QHG,Q! 7^?%$!!W:F$ S*-T&!':H& XI-</=DC"O MVP))IK,2DFHV0+)YK03EJ VP:(0K(;%BTVC4LQMLXS?8P'"PE>. EN5 "\]N MJXIQU(1>DH('N;R<'\+E%UQ\6&WNG#APO M1,;GA*R:)8Z9(2[V.#T M#TD MA)K(_ PM]! ?H/1DKD9VUV(?V6(R:0#A\+U8\C)N=XO6>\$.?E>LU = [_%G M:J1%!ST!IJ,LI/"_BXFA0,:3J "<8W#RH M>;EB)[44&96M"3:T+2JI"Q92P%,0! B!$**/Y1/5- *'S%]ARL,)0COVPM18 M^KN B00C$U J\I[Z`<.N)6C4^ VHR$+F:%$`XK+QSRQ=<F8*<T7"BS QICS8 MKM$KY%<_$,Z&8>-2L&L(O"E'K 42P_0DJJR/LT$K$UH#WXRIQH7&X5*\B<A_ MA4;5,YB;+QU,:5^*'\#S MM%)4_Y#A.BJCT6*MEHDT(IP\M%5$)=U(2S1J;O'Q+7'$%)X[(G06_F63,?:8 MV^:+O[5O9'/5 <[S0^<%P>#PHHV5=D3.?9J2T*L8]1P3V]06\=3T6+PL& Y, M>\-(1TN9^V[(21:QIK0Q\XAS&!6H(YP)J 9F`D,?%=2)$3:4F2D;/I_2^.7= M=>],&T,MG,:5J..U`R)P8HQLH%< Z-9>RW2\RSH$8S)SDD(>> I*OZ#U\KM' M#E MW%6U$OX!^FTP+[JTI2F"B1A'T&O:U)2+G<0 O<VBO<-%X]]^'/6M' C=!5!, M6&^E4N9[`UY3&(4]A.UBGW!DY&"3X&E UQ)\\+[3*5&HW<;(2XWS64&8^'$J M'2LW6( 8"*R:[ZGF^\<BWZ\BVACSYZ %X&<XP1Q9P&XDB.OY(8VFK0<#K0=$ M23.)J9MIB"YI(!W55D)J;8]C077%[YPS1+HOY[N2B&T0>,U199XT%W(Y]GD- M7T!W%]F")SWO"DF4['%S$:LP<KW?8<<Y]->IUEZ(;F8!N"QR+Y7A<39 GA6A M,QY&,N)'P)3(?6<U\]&/A9'P8W"/C?23/,.F^9\B(HV>(B 6A18-(RG(!U00 M11-&5<J76RYL!RJO(L75(]&:^J[D9=KQJQV)XQZ<$X8P3Z07S5:.=%>%UQ6& M&>E1JM<R!^^L)2H1S]/T10MCC];S0_B(\30539QY(LML>T.6( 9+1-F0`E:D MSIIF,QN0?-PB,<BC+'*M9_(VK[PA >%I'-RI8PC8Q7_2&93.+OQSPDL!4V1" MVT"P/J0.Q"(MQ0SB[:<1QVGM3D<L_'06>7]=;W%UE$PG>,3$I17#NX=0D8)B MW*VI[?&'Y'F2C5\,GA_BKZ[ QZ%Z[/?[MQ)V1?.2ZS]SO1+99Y //I\F$[*U MF48T6\I9JYHU<-SJXOXF[EKB'B[[J+PF;IBWZ `,+&:YN0* M%5N3VNTLJ%: MD&'[XBHTO-FVE Q,J6<0JP`TF!-P)CC9,<:,,$YF;#L.0G0!)])]&8.UUIX> ME40=/'4A'1_XI,J]#J<19_[:46Z1J /?2WYZ3[Z7+%-9#TY;0I"-9M0ACR1E M]-7Q\4FA >?<Z 05JS,>E5FC]DC^,&?OP^+)6DT)H$JONGXP6/!V>SK:J) 6 MO]60:%U %]Y"*%6C$E^5Y!B<PZ6'B&\*XOOQX>+S`PHD$(7?X0`$/T^T+Z', MF=T:\_' <4?[3!E!< E9"]A&%H<8\>;"/YH:%!?6SHNNZN $UPLZC0UHEDY, M$=OZ58D!!4HK(NX0J32RO3,DMT?*8UEK5G:;&MMLG<.;5N7.),RO2;C /N0: M1G%^+_1I6W74) V 3=Y4*CW4* [T5_+\>D!!%>X\:5(8<2?!>(ZA5 -/#SN6 M0>GR]IOJ:5<>TY9,H*>SI'49]'E$X5=(T] :R_T1.'S+%_D11>]O^:+$*,Y% M7 =5 5)2&6("[2,Q])5!NOGJY\)C-CH5Q*5R9? KZ$,]6PE5>B LC6_A9^; MGZ\[UN>;GV_>_6^)02VBUVL'[WS0!D>O[BMW8)I.-P?11:[0.II-AS-U%]_ MP=DV'HLUIY>Q`>X`T2$'X5KG0R=<W$6<49:63I8:4GTO8E&TGR!,5WRT-EL_ M\H: /HD+Y.G4-PS%6ER*T>D%'4&C0[W 'J,Z.F&R8CLW.CU_"OYRH0?-?*.] MF8%8AUUZ0H. 0N8GRN7!XS$_SKCI&3_-PZDWGL/S8#T:<-$`\Y!8<"P+3!X* M2\\&74LE+'WBX;J*IZQ4$UNK2%QWXP#UL\'G:^]X7<,":G^'/_&)CYS>>>J9 MDP- WY?D*L/%NL.?Q(T/[KJ60W Z(*2KJD*]X!YHHY%%'V!O :J3>8J1CX0 M>WT\7 [F=U^<W8ITL1QG$[J 0*S[891-9YS+1V J!&O)89S$LZ^2XI>BV=3( M;T5"8]E04Q""4'50&S=8&E]DH'YX* ^\-TEY`,MZ;_U_(: \/:/.-RS%D6.6 MZYC3)X+U$:NIWC B 1%? Z\!R!:J`U8#K6*:M$&/*IJCOIH%,.3M?<F\QHNV M3!8>'% _5%,FV>OEVV*NWR).OR6C15HU"$0K1V8'CO(=18<+CUNP41+N!:M% M \URYT(W5&RP<"4?.1Z^Y10-IT>;ITJUGLDV8N^G*>G9'1^<TP35 5Z:V$8< M[ULW;SHP7-)DB*]"V7NTZP6R7?'DKHMN3,I7;#H3NMGS!"_U6(:BH^EAGX"9 M[R]%CUELJ'&J9A1,Z4A72A&U+7K.?!ZY#J M`'"YK ,XJ + +>L:"%$%,=O T^,J`&5AJP`&+5LN`:P4+)O]4OF0RONE\E%- M]&S-G*X]U^[,/+(L&*=44,OP7C.2V//(FMG34EYS"_,S,10O0!3BR1,`>PYL M\E-'KGY00L#V+1R]YE?<I6G4W99I--!M!^P0`4'P\SU?EFF;\$Y:#A=7`KF; M2U-)^O<(*?U^HC&-P&W^R?C^.14 4G\738RHFA#F-&GCE5?EAM8`[9%4G>,' MW*G%7_KG.)AI],N[Z[/V'?E BJ1A<8LJRGM?8"M5Y,FVTI*JFDQX#ZQBE+6 MTCO>Q>U$$V:!V0F^LD\JR4M/R1 ;E:MZ6CTH53U6U_ :];<*M>6_I%OYXNM7 M<-9U?3-&.OJDA*P<8O"]R9 $X+#W M/B ::.*M=)Q\AX=\S KWT? T5OZ6?L(8<=9]`"_ L3K&9?F>"2O:<#BZ ]_, MWV)G*LSF)O>TL5(IZE711RUA1M+2?4I6#Z!F'-B&IZAY12]V(S7/^':2%J,K MN[B;<H'R\I;$7\C4:',- ;9Y>&Y2Y1H[,I9P+* ;\E"J "'IY&-RW"UAV&*2 M^I(T2!3E0E6'= .EY =)?ZT=(GOLY'W, TNTK(E*:V"*K0.:_)^C*M^IL!-A M:V%!A_1NL'1$SJU,`V\/Y%(-<G? /'LMO<BS"]RQ`S[J-3MFTEM3F2F6E=E7 MZS6E1FNOKF=M*^9S7.A/BIK$JX7RH'FQ`<)D7BT0T;2<-;-78;H[;N6]?4Y9 M2K^.(]]*N& 3W%D]W'N&LWS7<C88+9B45:>TA= <O.<^59.6KF E[;49V <1 M]XYEDYF_CB:3Q,?HG&BVF6B[]0SY''8Z0+S-U$T9C[7, 5LS5YMVBEFE&/98 M(\NG$H],*T1:.<8XGVSY%+3\JMA,[>_K/?M22QF2Y1I3_-:/>:^"]QP.6NK! M;A(LK"9!JY* WFBOVV-7#E+Y;84X$I\T)GK'PR=:`L0G&$!]"DOIMU 'B]B' M,^^<^71P0,Z8V2M)_20=PL3:Z^\G+;6;5O+A*HKLHR^'AU!-&#GGM M9"CTHK2C+RDI+%!A<B$S:3;M+5E:K$\[[1I*ZM3W+8AZ 2]NQ7--N3>XJ!,F M2)91FO0UX&'IJ Q'Z]4NA YW2><7Z9:(?:._L,HA6^6QK>K0<3,9/2/0#I2\ M'"4O3\G;B9)72ZGHP)B8" -WLW$3A6D09G[EX2F,*&A3-V +$L",!(*V[9#K MNSQ A1O\"S[<H-B BJF?7B_HF&];1R<P46 KJJ1G]CM<Y,N+[_"=.S[JC[W+ MBNIV3C(HUA;HIEO!PA8U,E?%\5* #VKJE56I=K=,290&YWLZ`Y7/02HWC_9] M43. `,VF>CU07L&"7H]?%CYVW,\B6\J[.;1"%*%(3^2+OOO<I TJWQ5!)Z\& MF,1PSW.'+-UJ Z&Z`PS\Z,N3V>)+[T \_F8V>53X67T$KU)Y;;/O%N841\:] MMM.$5OS.ZK'MO&)EP*\&0X=&%'S;UP(*`]%O[;;_>7A80W#C/"L-N)EJ-E.E M\6[D$P'ZO-N7PDXL]Z8DCSS[2D\;M6R64X^UPUS!MQKAG &N7Y,JXHVZ\. ! M 4 C;]LW&'>;MAU0&$_<=<)6:KE$UGT1?3;([122'"IQHL*=BOEOALDJ* UG M\,47$R,'ZFVR]DT2SH2.LVF;N]<1*OBUKFK)7PHKA,$4A,LK77*1E>_]Y+;M MSC"*?"GFP3C&^Y[JJG(:Z>O-"*A>N ,^+_X5"B_R$]135MQ[<)/E.[EF_GK+ MK5B-AZ_J`I,:]6'AKX;,83FE2R$Y$6'O1&_P_JI_].IT<"5_G+WI'>'-2"U6 M.24J08?]X].KUT/YXX<W!P,-NG&P]]9B[SV>CUL/1T?'5]?XZ>J:_U4.)S9S M)D*UV8'"6.Q%#Z M\.A$C)X=GYZ, ,;)#D20 M)I.3H3\^DS\FXGCPZNSZY.71#B0>#Y[V]R?-[J ['/6/CD\J"0RP[F0G;/N$ M[>D?A.^T?SS%JYW0_NGI624N095GYP_&]M/O13<XGGS=&YQX7Z';)VOX>;)N MQQ _P(P'X0?R'RVE\JB/J-9%H/&U\$WL%5DY^?,Y.?D*9$ H\(W_J]CX\^4Q M#LN#Q1X7.5S-O. M9=-*5C\`H2Y [0ZZ UN+W\PPG%D<9R66LQJ>,\/TJ%R^&]?99K8!;Y%M.NC M;//?XF*VN=AFFTO*;'.YDO6S8L5N?,N_:[-!W):\-VD:*-I#T<GALP21V9+( MRJ+(ZF216<(845!5JMMQ'+?T8(0&H] %B%^8?PPTF7DLLCG'YS+;6%HQ %B\ M-JFZ1 "9)8&L)(*L1 :9$4).!MD#A)!MYKN";5[)F.^1Y%F6V4R/F&&YTMCE MQ' SMSI2.3'<Q%S$-J9'U0P3J2XA[G8!C\UU[5IYAC[4:25"Z2Z<;E]PS];H M* PV87%V8*9W5,_,J1 [8-A'!+VCWX>DOPV+A4/]'3\ZTG//UU5H8^U>'?+I MG6Z4WJ*21.]T.Y_.V&VZE=!8LV7, .?FJA(8:[8`3V=!TZL$QAK#N+P;K7*^ M?,MHL'[U^NK5#Z]?7V\DLJS$KT!W&,7':TJ_ "RJ6>6JK;K]F'-35S^\?%6- M^4^KKNBVOM/: :N5NPTEGU'Q=D?I;41IHB8Q!B3XH;]PUEOPXMP>5QOGK=:+ M \.JL'/!K\/?%B,402]\XP^[MBO9%;3L<FN7:O!<*8B]=^#H9 WQ-?.[M:O MH+9;D]V[%M3V;+![[S8BV<6*;G!WG*T\O*\'OMJI`\/J!62R&^5J8'M%E:^] M<_-_]+$::?7<IKO4G?RK`W$K$F\YF5?SX>__<>:9/^SR[U%^3W3#IH="UF>X M( ````````!S=&1I;RYD4$L!`A0`% `"`` `-:6<-7+5-^.F(P``[X0``` ` M`````````0` ````U 0``&9O<FUA="YD4$L%! `````"``(`:P```*(H```` !```` ` end
Dec 28 2006
I forgot to mention: To test, overwrite the files in dmd/src/phobos/std/ and recompile Phobos. (follow the instructions from http://www.prowiki.org/wiki4d/wiki.cgi?HowTo/CompilePhobos ) Copy the resulting phobos.lib to dmd/lib/, overwriting the phobos.lib that's already there. And an example: #import std.stdio; #void main() { Prints: test 23 is %s 5 L.
Dec 28 2006
Lionello Lunesu wrote:This is for the cout lovers out there: I like writefln, but many times it's doing too much. I often forget to print strings explicitly using "%s", to prevent errors in the (rare) case the string contains %-characters. That's why I've added write, writeln, fwrite, fwriteln to std\stdio.dHow about the converse read* functions? Andrei
Dec 28 2006
"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail erdani.org> wrote in message news:45941A78.50908 erdani.org...Lionello Lunesu wrote:I didn't know they existed? Ah wait, they don't! I see, std.stdio is actually only std-output : ) L.This is for the cout lovers out there: I like writefln, but many times it's doing too much. I often forget to print strings explicitly using "%s", to prevent errors in the (rare) case the string contains %-characters. That's why I've added write, writeln, fwrite, fwriteln to std\stdio.dHow about the converse read* functions?
Dec 28 2006
Lionello Lunesu wrote:They exist, but only for std.stream (din) There is also an "unFormat" implementation there (in vreadf). --andersHow about the converse read* functions?I didn't know they existed? Ah wait, they don't! I see, std.stdio is actually only std-output : )
Dec 28 2006
Lionello Lunesu wrote:"Andrei Alexandrescu (See Website For Email)" <SeeWebsiteForEmail erdani.org> wrote in message news:45941A78.50908 erdani.org...Yup, they don't exist, though std.stream does have read functions. As an alternative, I've put a copy of the readf/unFormat routines I wrote ages ago online here: http://www.invisibleduck.org/~sean/code/stdio.d http://www.invisibleduck.org/~sean/code/unformat.d http://www.invisibleduck.org/~sean/code/utf.d They convert everything to dchar internally during processing and this may not be a terribly optimal decision (though given my limited understanding of Unicode at the time it seemed the most prudent approach), but the code may be useful regardless, as it's a complete implementation of the C99 scanf function with some additions for D. The utf changes are necessary to preserve the one-char putback guarantee that C requires, though things admittedly get a bit weird with a single Unicode char being represented by up to four bytes. SeanLionello Lunesu wrote:I didn't know they existed? Ah wait, they don't! I see, std.stdio is actually only std-output : )This is for the cout lovers out there: I like writefln, but many times it's doing too much. I often forget to print strings explicitly using "%s", to prevent errors in the (rare) case the string contains %-characters. That's why I've added write, writeln, fwrite, fwriteln to std\stdio.dHow about the converse read* functions?
Dec 28 2006
Sean Kelly wrote:As an alternative, I've put a copy of the readf/unFormat routines I wrote ages ago online here: http://www.invisibleduck.org/~sean/code/stdio.d http://www.invisibleduck.org/~sean/code/unformat.d http://www.invisibleduck.org/~sean/code/utf.dJust for the archives: the ugly workarounds I did at http://www.algonet.se/~afb/d/stdio/ turned out to be just because Mac OS X 10.3 / GCC 3.3 doesn't support templates fully, and GDC uses that for the TypeInfo... For Mac OS X 10.4 / GCC 4.0, it should be working OK ? (DMDScript is also broken on the old, for same reason) --anders
Dec 28 2006
Anders F Björklund wrote:Sean Kelly wrote:Thanks for pointing this out. I couldn't remember why the workarounds were necessary.As an alternative, I've put a copy of the readf/unFormat routines I wrote ages ago online here: http://www.invisibleduck.org/~sean/code/stdio.d http://www.invisibleduck.org/~sean/code/unformat.d http://www.invisibleduck.org/~sean/code/utf.dJust for the archives: the ugly workarounds I did at http://www.algonet.se/~afb/d/stdio/ turned out to be just because Mac OS X 10.3 / GCC 3.3 doesn't support templates fully, and GDC uses that for the TypeInfo...For Mac OS X 10.4 / GCC 4.0, it should be working OK ?I hope so. Aside from some inline asm issues, I haven't seen anything DMD can compile that the new GDC cannot. Sean
Dec 28 2006
Sean Kelly wrote:I've worked on a back-port from Apple's GCC (which *does* support one-only linkage) to FSF GCC 3.3 (which doesn't), but haven't been able to get it out of the crashing stage. Then again, Intel Macs has made it (10.3) obsolete anyway. --anders PS. http://www.algonet.se/~afb/d/gcc-3.3.6-linkonce.patch (If you can make it work, please follow up to D.gnu!)... because Mac OS X 10.3 / GCC 3.3 doesn't support templates fully, and GDC uses that for the TypeInfo...Thanks for pointing this out. I couldn't remember why the workarounds were necessary.
Dec 28 2006
Lionello Lunesu wrote:I like writefln, but many times it's doing too much. I often forget to print strings explicitly using "%s", to prevent errors in the (rare) case the string contains %-characters. That's why I've added write, writeln, fwrite, fwriteln to std\stdio.dI hope that you have better luck with your patch than I did with mine... http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=15627Attached the changed files from DMD 0.178 (including ddoc). (I have no idea what flags to pass to diff to get the usual diff output; do tell)diff -uBecause the signature of doFormat and writefx has changed, you'll have linker errors when linking to old obj/libs. Since we're <1.0 I thought it would not be a problem. If it is, I'll have to make new functions doFormat2, writefx2 (or so) and make the old doFormat, writefx call those new functions.I hope so. Secretly I also hope that readf / unFormat will make it too ? (see http://www.digitalmars.com/d/archives/digitalmars/D/21692.html) --anders
Dec 28 2006
"Anders F Björklund" <afb algonet.se> wrote in message news:en166e$1lou$1 digitaldaemon.com...I hope that you have better luck with your patch than I did with mine... http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D&artnum=15627I figured it had to be done before : S Maybe 'yet another patch' will convince Walter that this is badly needed : )Thanks.. Why isn't that the default, I wonder.Attached the changed files from DMD 0.178 (including ddoc). (I have no idea what flags to pass to diff to get the usual diff output; do tell)diff -uI hope so. Secretly I also hope that readf / unFormat will make it too ? (see http://www.digitalmars.com/d/archives/digitalmars/D/21692.html)Hey Andrei! Check that out : ) My wish for the new year will be Phobos being hosted on dsource. L.
Dec 28 2006
The diff -u against files from 0.178. This patch also solves the following bug in doFormat: (a bug that has nothing to do with write/writeln, but is easily solvable because of them) #import std.stdio; #void main() { C:\dmd>dmd -run bug [Error: std.format This happens because doFormat is called recursively, once for each of the elements of the array. This means that there should never be any parsing for string elements, since there'll never be any 2nd argument to be formatted. Because the new doFormat takes the extra "bool parse" parameter, the fix is simple: invoke doFormat with parse set to false. L. begin 666 write.patch M+2TM(%QD;60N,3<X7&1M9%QS<F-<<&AO8F]S7'-T9%PO9F]R;6%T+F0),C P M-BTQ,BTR,R R,#HT M87)G=6UE;G1S(#T 07)R87D ;V8 5'EP94EN9F\G<RP ;VYE(&9O<B!E86-H M(&%R9W5M96YT('1O(&)E(&9O<FUA='1E9"X-"B * EA<F=P='( /2!0;VEN M=', =&\ =F%R:6%D:6, 87)G=6UE;G0 ;&ES="X-"BL * EP87)S92 ]($)O M;VQE86XN(%1H92!D969A=6QT(&]F('1R=64 =VEL;"!P87)S92!S=')I;F=S M(&9O<B H)$D 9F]R;6%T('-P96-I9FEC871I;VYS*2X-"B * T*(" J(%1H M<F]W<SH-"B * E-:7-M871C:&5D(&%R9W5M96YT<R!A;F0 9F]R;6%T<R!R M(&EN="!J.PT**W9O:60 9&]&;W)M870H=F]I9"!D96QE9V%T92AD8VAA<BD M<'5T8RP 5'EP94EN9F];72!A<F=U;65N=',L('9A7VQI<W0 87)G<'1R+"!B M;V]L('!A<G-E(#UT M-R! 0 T*( D ('!U=&,H)ULG*3L-"B )("!S:7IE7W0 ='-I>F4 /2!T:2YT M<VEZ92 I.PT*( D ('=H:6QE("AL96XM+2D >PT*+0D (" 9&]&;W)M870H M(&=O=&\ 3&5R<F]R.PT*( EM(#T 8V%S="A-86YG;&4I=&DN8VQA<W-I;F9O M("AM(#T M;F=L92!M,B ](&-A<W0H36%N9VQE*71I+F-L87-S:6YF;RYN86UE6S$P73L- M"B )(" (&-H87);72 9FUT.PD)"2\O(&9O<FUA="!S=')I;F<-"BTM+2!< M9&UD+C$W.%QD;61<<W)C7'!H;V)O<UQS=&1<+W-T9&EO+F0),C P-BTQ,BTR M,R R,#HT M-BTQ,BTR." R,#HT M('T-"B -"BUV;VED('=R:71E9G H1DE,12H 9G L(%1Y<&5);F9O6UT 87)G M=6UE;G1S+"!V;VED*B!A<F=P='(L(&EN="!N97=L:6YE/69A;'-E*0T**W9O M:60 =W)I=&5F>"A&24Q%*B!F<"P 5'EP94EN9F];72!A<F=U;65N=',L('9O M:60J(&%R9W!T<BP 8F]O;"!N97=L:6YE/69A;'-E+"!B;V]L('!A<G-E/71R M( D (" ?0T*( T*+0D (" <W1D+F9O<FUA="YD;T9O<FUA=" F<'5T8RP M87)G=6UE;G1S+"!A<F=P='(I.PT**PD (" <W1D+F9O<FUA="YD;T9O<FUA M=" F<'5T8RP 87)G=6UE;G1S+"!A<F=P='(L('!A<G-E*3L-"B )(" (&EF M( T*+0D (" <W1D+F9O<FUA="YD;T9O<FUA=" F<'5T8W<L(&%R9W5M96YT M<RP 87)G<'1R*3L-"BL)(" ('-T9"YF;W)M870N9&]&;W)M870H)G!U=&-W M+"!A<F=U;65N=',L(&%R9W!T<BP <&%R<V4I.PT*( D (" :68 *&YE=VQI M,"PT-R! 0 T*( T*( T*("\J*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M*BHJ*BHJ* T**R J($%R9W5M96YT<R!A<F4 8V]N=F5R=&5D('1O('-T<FEN M("H =&\ =&AE(&]U='!U="X-"BL *B\-"BL-"BMV;VED('=R:71E;&XH+BXN M*0T**WL-"BL (" =W)I=&5F>"AS=&1O=70L(%]A<F=U;65N=',L(%]A<F=P M*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ* T**R J(%-A;64 87, )"A"('=R M=W)I=&5L;BA&24Q%*B!F<"P +BXN*0T**WL-"BL (" =W)I=&5F>"AF<"P M7V%R9W5M96YT<RP 7V%R9W!T<BP =')U92P 9F%L<V4I.PT**WT-"BL-"BL- M"BLO*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH-"B *B!! M=&1?9F]R;6%T+FAT;6PC9F]R;6%T+7-T<FEN9RP 9F]R;6%T('-T<FEN9W,I M<FET969X*'-T9&]U="P 7V%R9W5M96YT<RP 7V%R9W!T<BP 9F%L<V4I.PT* M('T-"B -"B O*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BH- M+" Q*3L-"BL (" =W)I=&5F>"AS=&1O=70L(%]A<F=U;65N=',L(%]A<F=P M='(L('1R=64I.PT*('T-"B -"B O*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ*BHJ M("!W<FET969X*&9P+"!?87)G=6UE;G1S+"!?87)G<'1R+" Q*3L-"BL (" ` end
Dec 28 2006