Skip to content

Commit 331a4c5

Browse files
committed
[console] Console.Out/Error.Flush().
1 parent 1fce1bb commit 331a4c5

12 files changed

Lines changed: 115 additions & 52 deletions

File tree

AST.fu

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,7 @@ public enum FuId
195195
OrderedDictionaryContainsKey,
196196
OrderedDictionaryCount,
197197
OrderedDictionaryRemove,
198+
TextWriterFlush,
198199
TextWriterWrite,
199200
TextWriterWriteChar,
200201
TextWriterWriteCodePoint,
@@ -1801,6 +1802,7 @@ public class FuSystem : FuScope
18011802
AddDictionary(FuId.OrderedDictionaryClass, "OrderedDictionary", FuId.OrderedDictionaryClear, FuId.OrderedDictionaryContainsKey, FuId.OrderedDictionaryCount, FuId.OrderedDictionaryRemove);
18021803

18031804
FuClass# textWriterClass = FuClass.New(FuCallType.Normal, FuId.TextWriterClass, "TextWriter");
1805+
textWriterClass.AddMethod(VoidType, FuId.TextWriterFlush, "Flush", true);
18041806
textWriterClass.AddMethod(VoidType, FuId.TextWriterWrite, "Write", true, FuVar.New(PrintableType, "value"));
18051807
textWriterClass.AddMethod(VoidType, FuId.TextWriterWriteChar, "WriteChar", true, FuVar.New(IntType, "c"));
18061808
textWriterClass.AddMethod(VoidType, FuId.TextWriterWriteCodePoint, "WriteCodePoint", true, FuVar.New(IntType, "c"));

GenC.fu

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,6 +2397,10 @@ public class GenC : GenCCpp
23972397
case FuId.SortedDictionaryRemove:
23982398
WriteDictionaryLookup(obj, "g_tree_remove", args[0]);
23992399
break;
2400+
case FuId.TextWriterFlush:
2401+
Include("stdio.h");
2402+
WriteCall("fflush", obj);
2403+
break;
24002404
case FuId.TextWriterWrite:
24012405
WriteTextWriterWrite(obj, args, false);
24022406
break;

GenCpp.fu

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1084,6 +1084,9 @@ public class GenCpp : GenCCpp
10841084
if (parent > FuPriority.Equality)
10851085
WriteChar(')');
10861086
break;
1087+
case FuId.TextWriterFlush:
1088+
WritePostfix(obj, ".flush()");
1089+
break;
10871090
case FuId.TextWriterWrite:
10881091
WriteCollectionObject(obj, FuPriority.Shift);
10891092
WriteWrite(args, false);

GenCs.fu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -498,6 +498,7 @@ public class GenCs : GenTyped
498498
case FuId.SortedDictionaryRemove:
499499
case FuId.OrderedDictionaryClear:
500500
case FuId.OrderedDictionaryRemove:
501+
case FuId.TextWriterFlush:
501502
case FuId.ConsoleReadLine:
502503
case FuId.StringWriterToString:
503504
case FuId.BitConverterInt32BitsToSingle:

GenD.fu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -810,6 +810,7 @@ public class GenD : GenCCppD
810810
case FuId.StackClear:
811811
case FuId.HashSetRemove:
812812
case FuId.DictionaryRemove:
813+
case FuId.TextWriterFlush:
813814
if (obj != null) {
814815
if (IsReferenceTo(obj, FuId.BasePtr))
815816
Write("super.");

GenJava.fu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -680,6 +680,7 @@ public class GenJava : GenTyped
680680
case FuId.OrderedDictionaryClear:
681681
case FuId.OrderedDictionaryContainsKey:
682682
case FuId.OrderedDictionaryRemove:
683+
case FuId.TextWriterFlush:
683684
case FuId.StringWriterToString:
684685
case FuId.MathAbs:
685686
case FuId.MathMax:

GenPy.fu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,7 @@ public class GenPy : GenPySwift
853853
case FuId.DictionaryClear:
854854
case FuId.SortedDictionaryClear:
855855
case FuId.OrderedDictionaryClear:
856+
case FuId.TextWriterFlush:
856857
if (obj == null)
857858
WriteLocalName(method, FuPriority.Primary);
858859
else if (IsReferenceTo(obj, FuId.BasePtr)) {

libfut.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2857,6 +2857,7 @@ FuSystem::FuSystem()
28572857
addDictionary(FuId::sortedDictionaryClass, "SortedDictionary", FuId::sortedDictionaryClear, FuId::sortedDictionaryContainsKey, FuId::sortedDictionaryCount, FuId::sortedDictionaryRemove);
28582858
addDictionary(FuId::orderedDictionaryClass, "OrderedDictionary", FuId::orderedDictionaryClear, FuId::orderedDictionaryContainsKey, FuId::orderedDictionaryCount, FuId::orderedDictionaryRemove);
28592859
std::shared_ptr<FuClass> textWriterClass = FuClass::new_(FuCallType::normal, FuId::textWriterClass, "TextWriter");
2860+
textWriterClass->addMethod(this->voidType, FuId::textWriterFlush, "Flush", true);
28602861
textWriterClass->addMethod(this->voidType, FuId::textWriterWrite, "Write", true, FuVar::new_(this->printableType, "value"));
28612862
textWriterClass->addMethod(this->voidType, FuId::textWriterWriteChar, "WriteChar", true, FuVar::new_(this->intType, "c"));
28622863
textWriterClass->addMethod(this->voidType, FuId::textWriterWriteCodePoint, "WriteCodePoint", true, FuVar::new_(this->intType, "c"));
@@ -12030,6 +12031,10 @@ void GenC::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMethod
1203012031
case FuId::sortedDictionaryRemove:
1203112032
writeDictionaryLookup(obj, "g_tree_remove", (*args)[0].get());
1203212033
break;
12034+
case FuId::textWriterFlush:
12035+
include("stdio.h");
12036+
writeCall("fflush", obj);
12037+
break;
1203312038
case FuId::textWriterWrite:
1203412039
writeTextWriterWrite(obj, args, false);
1203512040
break;
@@ -15078,6 +15083,9 @@ void GenCpp::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMeth
1507815083
if (parent > FuPriority::equality)
1507915084
writeChar(')');
1508015085
break;
15086+
case FuId::textWriterFlush:
15087+
writePostfix(obj, ".flush()");
15088+
break;
1508115089
case FuId::textWriterWrite:
1508215090
writeCollectionObject(obj, FuPriority::shift);
1508315091
writeWrite(args, false);
@@ -16666,6 +16674,7 @@ void GenCs::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMetho
1666616674
case FuId::sortedDictionaryRemove:
1666716675
case FuId::orderedDictionaryClear:
1666816676
case FuId::orderedDictionaryRemove:
16677+
case FuId::textWriterFlush:
1666916678
case FuId::consoleReadLine:
1667016679
case FuId::stringWriterToString:
1667116680
case FuId::bitConverterInt32BitsToSingle:
@@ -17924,6 +17933,7 @@ void GenD::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMethod
1792417933
case FuId::stackClear:
1792517934
case FuId::hashSetRemove:
1792617935
case FuId::dictionaryRemove:
17936+
case FuId::textWriterFlush:
1792717937
if (obj != nullptr) {
1792817938
if (isReferenceTo(obj, FuId::basePtr))
1792917939
write("super.");
@@ -19385,6 +19395,7 @@ void GenJava::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMet
1938519395
case FuId::orderedDictionaryClear:
1938619396
case FuId::orderedDictionaryContainsKey:
1938719397
case FuId::orderedDictionaryRemove:
19398+
case FuId::textWriterFlush:
1938819399
case FuId::stringWriterToString:
1938919400
case FuId::mathAbs:
1939019401
case FuId::mathMax:
@@ -25176,6 +25187,7 @@ void GenPy::writeCallExpr(const FuType * type, const FuExpr * obj, const FuMetho
2517625187
case FuId::dictionaryClear:
2517725188
case FuId::sortedDictionaryClear:
2517825189
case FuId::orderedDictionaryClear:
25190+
case FuId::textWriterFlush:
2517925191
if (obj == nullptr)
2518025192
writeLocalName(method, FuPriority::primary);
2518125193
else if (isReferenceTo(obj, FuId::basePtr)) {

libfut.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,7 @@ public enum FuId
14381438
OrderedDictionaryContainsKey,
14391439
OrderedDictionaryCount,
14401440
OrderedDictionaryRemove,
1441+
TextWriterFlush,
14411442
TextWriterWrite,
14421443
TextWriterWriteChar,
14431444
TextWriterWriteCodePoint,
@@ -3338,6 +3339,7 @@ internal FuSystem()
33383339
AddDictionary(FuId.SortedDictionaryClass, "SortedDictionary", FuId.SortedDictionaryClear, FuId.SortedDictionaryContainsKey, FuId.SortedDictionaryCount, FuId.SortedDictionaryRemove);
33393340
AddDictionary(FuId.OrderedDictionaryClass, "OrderedDictionary", FuId.OrderedDictionaryClear, FuId.OrderedDictionaryContainsKey, FuId.OrderedDictionaryCount, FuId.OrderedDictionaryRemove);
33403341
FuClass textWriterClass = FuClass.New(FuCallType.Normal, FuId.TextWriterClass, "TextWriter");
3342+
textWriterClass.AddMethod(this.VoidType, FuId.TextWriterFlush, "Flush", true);
33413343
textWriterClass.AddMethod(this.VoidType, FuId.TextWriterWrite, "Write", true, FuVar.New(this.PrintableType, "value"));
33423344
textWriterClass.AddMethod(this.VoidType, FuId.TextWriterWriteChar, "WriteChar", true, FuVar.New(this.IntType, "c"));
33433345
textWriterClass.AddMethod(this.VoidType, FuId.TextWriterWriteCodePoint, "WriteCodePoint", true, FuVar.New(this.IntType, "c"));
@@ -12265,6 +12267,10 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
1226512267
case FuId.SortedDictionaryRemove:
1226612268
WriteDictionaryLookup(obj, "g_tree_remove", args[0]);
1226712269
break;
12270+
case FuId.TextWriterFlush:
12271+
Include("stdio.h");
12272+
WriteCall("fflush", obj);
12273+
break;
1226812274
case FuId.TextWriterWrite:
1226912275
WriteTextWriterWrite(obj, args, false);
1227012276
break;
@@ -15425,6 +15431,9 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
1542515431
if (parent > FuPriority.Equality)
1542615432
WriteChar(')');
1542715433
break;
15434+
case FuId.TextWriterFlush:
15435+
WritePostfix(obj, ".flush()");
15436+
break;
1542815437
case FuId.TextWriterWrite:
1542915438
WriteCollectionObject(obj, FuPriority.Shift);
1543015439
WriteWrite(args, false);
@@ -17054,6 +17063,7 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
1705417063
case FuId.SortedDictionaryRemove:
1705517064
case FuId.OrderedDictionaryClear:
1705617065
case FuId.OrderedDictionaryRemove:
17066+
case FuId.TextWriterFlush:
1705717067
case FuId.ConsoleReadLine:
1705817068
case FuId.StringWriterToString:
1705917069
case FuId.BitConverterInt32BitsToSingle:
@@ -18485,6 +18495,7 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
1848518495
case FuId.StackClear:
1848618496
case FuId.HashSetRemove:
1848718497
case FuId.DictionaryRemove:
18498+
case FuId.TextWriterFlush:
1848818499
if (obj != null) {
1848918500
if (IsReferenceTo(obj, FuId.BasePtr))
1849018501
Write("super.");
@@ -20015,6 +20026,7 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
2001520026
case FuId.OrderedDictionaryClear:
2001620027
case FuId.OrderedDictionaryContainsKey:
2001720028
case FuId.OrderedDictionaryRemove:
20029+
case FuId.TextWriterFlush:
2001820030
case FuId.StringWriterToString:
2001920031
case FuId.MathAbs:
2002020032
case FuId.MathMax:
@@ -26038,6 +26050,7 @@ protected override void WriteCallExpr(FuType type, FuExpr obj, FuMethod method,
2603826050
case FuId.DictionaryClear:
2603926051
case FuId.SortedDictionaryClear:
2604026052
case FuId.OrderedDictionaryClear:
26053+
case FuId.TextWriterFlush:
2604126054
if (obj == null)
2604226055
WriteLocalName(method, FuPriority.Primary);
2604326056
else if (IsReferenceTo(obj, FuId.BasePtr)) {

libfut.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ enum class FuId
322322
orderedDictionaryContainsKey,
323323
orderedDictionaryCount,
324324
orderedDictionaryRemove,
325+
textWriterFlush,
325326
textWriterWrite,
326327
textWriterWriteChar,
327328
textWriterWriteCodePoint,

0 commit comments

Comments
 (0)