本文整理汇总了C++中common::WriteStream::flush方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteStream::flush方法的具体用法?C++ WriteStream::flush怎么用?C++ WriteStream::flush使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类common::WriteStream
的用法示例。
在下文中一共展示了WriteStream::flush方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: writeASCII
void TwoDAFile::writeASCII(Common::WriteStream &out) const {
// Write header
out.writeString("2DA V2.0\n");
if (!_defaultString.empty())
out.writeString(Common::UString::format("DEFAULT: %s", _defaultString.c_str()));
out.writeByte('\n');
// Calculate column lengths
std::vector<size_t> colLength;
colLength.resize(_headers.size() + 1, 0);
const Common::UString maxRow = Common::UString::format("%d", (int)_rows.size() - 1);
colLength[0] = maxRow.size();
for (size_t i = 0; i < _headers.size(); i++)
colLength[i + 1] = _headers[i].size();
for (size_t i = 0; i < _rows.size(); i++) {
for (size_t j = 0; j < _rows[i]->_data.size(); j++) {
const bool needQuote = _rows[i]->_data[j].contains(' ');
const size_t length = needQuote ? _rows[i]->_data[j].size() + 2 : _rows[i]->_data[j].size();
colLength[j + 1] = MAX<size_t>(colLength[j + 1], length);
}
}
// Write column headers
out.writeString(Common::UString::format("%-*s", (int)colLength[0], ""));
for (size_t i = 0; i < _headers.size(); i++)
out.writeString(Common::UString::format(" %-*s", (int)colLength[i + 1], _headers[i].c_str()));
out.writeByte('\n');
// Write array
for (size_t i = 0; i < _rows.size(); i++) {
out.writeString(Common::UString::format("%*u", (int)colLength[0], (uint)i));
for (size_t j = 0; j < _rows[i]->_data.size(); j++) {
const bool needQuote = _rows[i]->_data[j].contains(' ');
Common::UString cellString;
if (needQuote)
cellString = Common::UString::format("\"%s\"", _rows[i]->_data[j].c_str());
else
cellString = _rows[i]->_data[j];
out.writeString(Common::UString::format(" %-*s", (int)colLength[j + 1], cellString.c_str()));
}
out.writeByte('\n');
}
out.flush();
}
示例2: dumpTLK
void dumpTLK(const Common::UString &inFile, const Common::UString &outFile, Common::Encoding encoding) {
Common::SeekableReadStream *tlk = new Common::ReadFile(inFile);
Common::WriteStream *out = 0;
try {
if (!outFile.empty())
out = new Common::WriteFile(outFile);
else
out = new Common::StdOutStream;
} catch (...) {
delete tlk;
throw;
}
try {
XML::TLKDumper::dump(*out, tlk, encoding);
} catch (...) {
delete out;
throw;
}
out->flush();
if (!outFile.empty())
status("Converted \"%s\" to \"%s\"", inFile.c_str(), outFile.c_str());
delete out;
}
示例3: saveGame
bool BladeRunnerEngine::saveGame(Common::WriteStream &stream, const Graphics::Surface &thumbnail) {
if (!playerHasControl() || _sceneScript->isInsideScript() || _aiScripts->isInsideScript()) {
return false;
}
Common::MemoryWriteStreamDynamic memoryStream(DisposeAfterUse::YES);
SaveFileWriteStream s(memoryStream);
s.write(thumbnail.getPixels(), SaveFileManager::kThumbnailSize);
s.writeFloat(1.0f);
_settings->save(s);
_scene->save(s);
_scene->_exits->save(s);
_scene->_regions->save(s);
_scene->_set->save(s);
for (uint i = 0; i != _gameInfo->getGlobalVarCount(); ++i) {
s.writeInt(_gameVars[i]);
}
_music->save(s);
// _audioPlayer->save(s) // zero func
// _audioSpeech->save(s) // zero func
_combat->save(s);
_gameFlags->save(s);
_items->save(s);
_sceneObjects->save(s);
_ambientSounds->save(s);
_overlays->save(s);
_spinner->save(s);
_scores->save(s);
_dialogueMenu->save(s);
_obstacles->save(s);
_actorDialogueQueue->save(s);
_waypoints->save(s);
for (uint i = 0; i != _gameInfo->getActorCount(); ++i) {
_actors[i]->save(s);
int animationState, animationFrame, animationStateNext, nextAnimation;
_aiScripts->queryAnimationState(i, &animationState, &animationFrame, &animationStateNext, &nextAnimation);
s.writeInt(animationState);
s.writeInt(animationFrame);
s.writeInt(animationStateNext);
s.writeInt(nextAnimation);
}
_actors[kActorVoiceOver]->save(s);
_policeMaze->save(s);
_crimesDatabase->save(s);
s.finalize();
stream.writeUint32LE(memoryStream.size() + 4);
stream.write(memoryStream.getData(), memoryStream.size());
stream.flush();
return true;
}
示例4: flushStream
static inline bool flushStream(Common::WriteStream &stream) {
// Flush and check for errors
if (!stream.flush())
return false;
if (stream.err())
return false;
return true;
}
示例5: logPrintf
void Testsuite::logPrintf(const char *fmt, ...) {
// Assuming log message size to be not greater than STRINGBUFLEN i.e 256
char buffer[STRINGBUFLEN];
va_list vl;
va_start(vl, fmt);
vsnprintf(buffer, STRINGBUFLEN, fmt, vl);
va_end(vl);
Common::WriteStream *ws = ConfigParams::instance().getLogWriteStream();
if (ws) {
ws->writeString(buffer);
ws->flush();
debugCN(kTestbedLogOutput, "%s", buffer);
} else {
debugCN(kTestbedLogOutput, "%s", buffer);
}
}
示例6: logDetailedPrintf
void Testsuite::logDetailedPrintf(const char *fmt, ...) {
// Assuming log message size to be not greater than STRINGBUFLEN i.e 256
// Messages with this function would only be displayed if -d1 is specified on command line
char buffer[STRINGBUFLEN];
va_list vl;
va_start(vl, fmt);
vsnprintf(buffer, STRINGBUFLEN, fmt, vl);
va_end(vl);
Common::WriteStream *ws = ConfigParams::instance().getLogWriteStream();
if (ws) {
ws->writeString(buffer);
ws->flush();
debugCN(1, kTestbedLogOutput, "%s", buffer);
} else {
debugCN(1, kTestbedLogOutput, "%s", buffer);
}
}
示例7: writeCSV
void TwoDAFile::writeCSV(Common::WriteStream &out) const {
// Write column headers
for (size_t i = 0; i < _headers.size(); i++) {
const bool needQuote = _headers[i].contains(',');
if (needQuote)
out.writeByte('"');
out.writeString(_headers[i]);
if (needQuote)
out.writeByte('"');
if (i < (_headers.size() - 1))
out.writeByte(',');
}
out.writeByte('\n');
// Write array
for (size_t i = 0; i < _rows.size(); i++) {
for (size_t j = 0; j < _rows[i]->_data.size(); j++) {
const bool needQuote = _rows[i]->_data[j].contains(',');
if (needQuote)
out.writeByte('"');
if (_rows[i]->_data[j] != "****")
out.writeString(_rows[i]->_data[j]);
if (needQuote)
out.writeByte('"');
if (j < (_rows[i]->_data.size() - 1))
out.writeByte(',');
}
out.writeByte('\n');
}
out.flush();
}
示例8: dump2DA
void dump2DA(Aurora::TwoDAFile &twoDA, const Common::UString &outFile, Format format) {
Common::WriteStream *out = 0;
if (!outFile.empty())
out = new Common::WriteFile(outFile);
else
out = new Common::StdOutStream;
try {
if (format == kFormat2DA)
twoDA.dumpASCII(*out);
else
twoDA.dumpCSV(*out);
} catch (...) {
delete out;
throw;
}
out->flush();
delete out;
}
示例9: testWriteFile
/**
* This test creates a file testbed.out, writes a sample data and confirms if
* it is same by reading the file again.
*/
TestExitStatus FStests::testWriteFile() {
const Common::String &path = ConfMan.get("path");
Common::FSNode gameRoot(path);
if (!gameRoot.exists()) {
Testsuite::logPrintf("Couldn't open the game data directory %s", path.c_str());
return kTestFailed;
}
Common::FSNode fileToWrite = gameRoot.getChild("testbed.out");
Common::WriteStream *ws = fileToWrite.createWriteStream();
if (!ws) {
Testsuite::logDetailedPrintf("Can't open writable file in game data dir\n");
return kTestFailed;
}
ws->writeString("ScummVM Rocks!");
ws->flush();
delete ws;
Common::SeekableReadStream *rs = fileToWrite.createReadStream();
if (!rs) {
Testsuite::logDetailedPrintf("Can't open recently written file testbed.out in game data dir\n");
return kTestFailed;
}
Common::String readFromFile = rs->readLine();
delete rs;
if (readFromFile.equals("ScummVM Rocks!")) {
// All good
Testsuite::logDetailedPrintf("Data written and read correctly\n");
return kTestPassed;
}
return kTestFailed;
}
示例10: dumpGFF
void dumpGFF(const Common::UString &inFile, const Common::UString &outFile,
Common::Encoding encoding, bool nwnPremium) {
Common::SeekableReadStream *gff = new Common::ReadFile(inFile);
XML::GFFDumper *dumper = 0;
try {
dumper = XML::GFFDumper::identify(*gff, nwnPremium);
} catch (...) {
delete gff;
throw;
}
Common::WriteStream *out = 0;
try {
if (!outFile.empty())
out = new Common::WriteFile(outFile);
else
out = new Common::StdOutStream;
dumper->dump(*out, gff, encoding, nwnPremium);
} catch (...) {
delete dumper;
delete out;
throw;
}
out->flush();
if (!outFile.empty())
status("Converted \"%s\" to \"%s\"", inFile.c_str(), outFile.c_str());
delete dumper;
delete out;
}
示例11: dumpTGA
void dumpTGA(const Common::UString &fileName, const ImageDecoder *image) {
if (!image || (image->getLayerCount() < 1) || (image->getMipMapCount() < 1))
throw Common::Exception("No image");
int32 width = image->getMipMap(0, 0).width;
int32 height = 0;
for (size_t i = 0; i < image->getLayerCount(); i++) {
const ImageDecoder::MipMap &mipMap = image->getMipMap(0, i);
if (mipMap.width != width)
throw Common::Exception("dumpTGA(): Unsupported image with variable layer width");
height += mipMap.height;
}
Common::WriteStream *file = openTGA(fileName, width, height);
for (size_t i = 0; i < image->getLayerCount(); i++)
writeMipMap(*file, image->getMipMap(0, i), image->getFormat());
file->flush();
delete file;
}
示例12: pngFlushStream
void pngFlushStream(png_structp pngPtr) {
void *writeIOptr = png_get_io_ptr(pngPtr);
Common::WriteStream *stream = (Common::WriteStream *)writeIOptr;
stream->flush();
}
示例13: disNCS
void disNCS(const Common::UString &inFile, const Common::UString &outFile,
Aurora::GameID &game, Command &command, bool printStack, bool printControlTypes) {
Common::SeekableReadStream *ncs = new Common::ReadFile(inFile);
Common::WriteStream *out = 0;
try {
if (!outFile.empty())
out = new Common::WriteFile(outFile);
else
out = new Common::StdOutStream;
status("Disassembling script...");
NWScript::Disassembler disassembler(*ncs, game);
if (game != Aurora::kGameIDUnknown) {
try {
status("Analyzing script stack...");
disassembler.analyzeStack();
} catch (...) {
Common::exceptionDispatcherWarnAndIgnore("Script analysis failed");
}
try {
status("Analyzing control flow...");
disassembler.analyzeControlFlow();
} catch (...) {
Common::exceptionDispatcherWarnAndIgnore("Control flow analysis failed");
}
}
switch (command) {
case kCommandListing:
disassembler.createListing(*out, printStack);
break;
case kCommandAssembly:
disassembler.createAssembly(*out, printStack);
break;
case kCommandDot:
disassembler.createDot(*out, printControlTypes);
break;
default:
throw Common::Exception("Invalid command %u", (uint)command);
}
} catch (...) {
delete ncs;
delete out;
throw;
}
out->flush();
if (!outFile.empty())
status("Disassembled \"%s\" into \"%s\"", inFile.c_str(), outFile.c_str());
delete ncs;
delete out;
}