summaryrefslogtreecommitdiffstats
path: root/core/core_bind.cpp
diff options
context:
space:
mode:
authorHugo Locurcio <hugo.locurcio@hugo.pro>2020-12-15 15:31:04 +0100
committerHugo Locurcio <hugo.locurcio@hugo.pro>2021-02-13 01:37:16 +0100
commitab397460e9f8ea36414eb1b11d76c3e223decdcc (patch)
tree1d16317a797b0e179443691bb334e035d845fd11 /core/core_bind.cpp
parent45c6d3c5767f0ebc60ef1334aec5720680191eec (diff)
downloadredot-engine-ab397460e9f8ea36414eb1b11d76c3e223decdcc.tar.gz
Expose a `File.flush()` method to scripting
This can be used to ensure a file has its contents saved even if the project crashes or is killed by the user (among other use cases). See discussion in #29075.
Diffstat (limited to 'core/core_bind.cpp')
-rw-r--r--core/core_bind.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/core/core_bind.cpp b/core/core_bind.cpp
index f568ee754d..dd99c32fa8 100644
--- a/core/core_bind.cpp
+++ b/core/core_bind.cpp
@@ -1254,6 +1254,11 @@ Error _File::open(const String &p_path, ModeFlags p_mode_flags) {
return err;
}
+void _File::flush() {
+ ERR_FAIL_COND_MSG(!f, "File must be opened before flushing.");
+ f->flush();
+}
+
void _File::close() {
if (f) {
memdelete(f);
@@ -1547,6 +1552,7 @@ void _File::_bind_methods() {
ClassDB::bind_method(D_METHOD("open_compressed", "path", "mode_flags", "compression_mode"), &_File::open_compressed, DEFVAL(0));
ClassDB::bind_method(D_METHOD("open", "path", "flags"), &_File::open);
+ ClassDB::bind_method(D_METHOD("flush"), &_File::flush);
ClassDB::bind_method(D_METHOD("close"), &_File::close);
ClassDB::bind_method(D_METHOD("get_path"), &_File::get_path);
ClassDB::bind_method(D_METHOD("get_path_absolute"), &_File::get_path_absolute);