MCPcopy Create free account
hub / github.com/crownengine/crown / write_data_versions

Function write_data_versions

src/resource/data_compiler.cpp:488–521  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

486}
487
488static s32 write_data_versions(FilesystemDisk &data_fs
489 , const char *filename
490 , const HashMap<StringId64, u32> &versions
491 , const HashMap<StringId64, DataCompiler::ResourceTypeData> &compilers
492 )
493{
494 StringStream ss(default_allocator());
495 DynamicString temp_filename(default_allocator());
496
497 File *file = data_fs.open_temporary(temp_filename);
498 if (file->is_open()) {
499 auto cur = hash_map::begin(versions);
500 auto end = hash_map::end(versions);
501 for (; cur != end; ++cur) {
502 HASH_MAP_SKIP_HOLE(versions, cur);
503
504 DataCompiler::ResourceTypeData rtd;
505 rtd.type_str = NULL;
506 rtd = hash_map::get(compilers, cur->first, rtd);
507 if (rtd.type_str != NULL)
508 ss << rtd.type_str << " = " << cur->second << "\n";
509 }
510
511 u32 ss_len = strlen32(string_stream::c_str(ss));
512 if (ss_len != file->write(string_stream::c_str(ss), ss_len)) {
513 data_fs.close(*file);
514 return -1;
515 }
516 }
517 data_fs.close(*file);
518
519 RenameResult rr = data_fs.rename(temp_filename.c_str(), filename);
520 return rr.error == RenameResult::SUCCESS ? 0 : -1;
521}
522
523static s32 write_data_mtimes(FilesystemDisk &data_fs, const char *filename, const HashMap<StringId64, u64> &mtimes)
524{

Callers 1

compile_internalMethod · 0.85

Calls 9

getFunction · 0.85
open_temporaryMethod · 0.80
beginFunction · 0.50
endFunction · 0.50
is_openMethod · 0.45
writeMethod · 0.45
closeMethod · 0.45
renameMethod · 0.45
c_strMethod · 0.45

Tested by

no test coverage detected