29
29
/* *************************************************************************/
30
30
31
31
#include " file_access.h"
32
+ #include " file_access.compat.inc"
32
33
33
34
#include " core/config/project_settings.h"
34
35
#include " core/crypto/crypto_core.h"
@@ -509,7 +510,7 @@ String FileAccess::get_as_utf8_string(bool p_skip_cr) const {
509
510
return s;
510
511
}
511
512
512
- void FileAccess::store_16 (uint16_t p_dest) {
513
+ bool FileAccess::store_16 (uint16_t p_dest) {
513
514
uint8_t a, b;
514
515
515
516
a = p_dest & 0xFF ;
@@ -519,11 +520,10 @@ void FileAccess::store_16(uint16_t p_dest) {
519
520
SWAP (a, b);
520
521
}
521
522
522
- store_8 (a);
523
- store_8 (b);
523
+ return store_8 (a) && store_8 (b);
524
524
}
525
525
526
- void FileAccess::store_32 (uint32_t p_dest) {
526
+ bool FileAccess::store_32 (uint32_t p_dest) {
527
527
uint16_t a, b;
528
528
529
529
a = p_dest & 0xFFFF ;
@@ -533,11 +533,10 @@ void FileAccess::store_32(uint32_t p_dest) {
533
533
SWAP (a, b);
534
534
}
535
535
536
- store_16 (a);
537
- store_16 (b);
536
+ return store_16 (a) && store_16 (b);
538
537
}
539
538
540
- void FileAccess::store_64 (uint64_t p_dest) {
539
+ bool FileAccess::store_64 (uint64_t p_dest) {
541
540
uint32_t a, b;
542
541
543
542
a = p_dest & 0xFFFFFFFF ;
@@ -547,28 +546,27 @@ void FileAccess::store_64(uint64_t p_dest) {
547
546
SWAP (a, b);
548
547
}
549
548
550
- store_32 (a);
551
- store_32 (b);
549
+ return store_32 (a) && store_32 (b);
552
550
}
553
551
554
- void FileAccess::store_real (real_t p_real) {
552
+ bool FileAccess::store_real (real_t p_real) {
555
553
if constexpr (sizeof (real_t ) == 4 ) {
556
- store_float (p_real);
554
+ return store_float (p_real);
557
555
} else {
558
- store_double (p_real);
556
+ return store_double (p_real);
559
557
}
560
558
}
561
559
562
- void FileAccess::store_float (float p_dest) {
560
+ bool FileAccess::store_float (float p_dest) {
563
561
MarshallFloat m;
564
562
m.f = p_dest;
565
- store_32 (m.i );
563
+ return store_32 (m.i );
566
564
}
567
565
568
- void FileAccess::store_double (double p_dest) {
566
+ bool FileAccess::store_double (double p_dest) {
569
567
MarshallDouble m;
570
568
m.d = p_dest;
571
- store_64 (m.l );
569
+ return store_64 (m.l );
572
570
}
573
571
574
572
uint64_t FileAccess::get_modified_time (const String &p_file) {
@@ -652,19 +650,18 @@ Error FileAccess::set_read_only_attribute(const String &p_file, bool p_ro) {
652
650
return err;
653
651
}
654
652
655
- void FileAccess::store_string (const String &p_string) {
653
+ bool FileAccess::store_string (const String &p_string) {
656
654
if (p_string.length () == 0 ) {
657
- return ;
655
+ return true ;
658
656
}
659
657
660
658
CharString cs = p_string.utf8 ();
661
- store_buffer ((uint8_t *)&cs[0 ], cs.length ());
659
+ return store_buffer ((uint8_t *)&cs[0 ], cs.length ());
662
660
}
663
661
664
- void FileAccess::store_pascal_string (const String &p_string) {
662
+ bool FileAccess::store_pascal_string (const String &p_string) {
665
663
CharString cs = p_string.utf8 ();
666
- store_32 (cs.length ());
667
- store_buffer ((uint8_t *)&cs[0 ], cs.length ());
664
+ return store_32 (cs.length ()) && store_buffer ((uint8_t *)&cs[0 ], cs.length ());
668
665
}
669
666
670
667
String FileAccess::get_pascal_string () {
@@ -679,13 +676,12 @@ String FileAccess::get_pascal_string() {
679
676
return ret;
680
677
}
681
678
682
- void FileAccess::store_line (const String &p_line) {
683
- store_string (p_line);
684
- store_8 (' \n ' );
679
+ bool FileAccess::store_line (const String &p_line) {
680
+ return store_string (p_line) && store_8 (' \n ' );
685
681
}
686
682
687
- void FileAccess::store_csv_line (const Vector<String> &p_values, const String &p_delim) {
688
- ERR_FAIL_COND (p_delim.length () != 1 );
683
+ bool FileAccess::store_csv_line (const Vector<String> &p_values, const String &p_delim) {
684
+ ERR_FAIL_COND_V (p_delim.length () != 1 , false );
689
685
690
686
String line = " " ;
691
687
int size = p_values.size ();
@@ -702,41 +698,43 @@ void FileAccess::store_csv_line(const Vector<String> &p_values, const String &p_
702
698
line += value;
703
699
}
704
700
705
- store_line (line);
701
+ return store_line (line);
706
702
}
707
703
708
- void FileAccess::store_buffer (const uint8_t *p_src, uint64_t p_length) {
709
- ERR_FAIL_COND (!p_src && p_length > 0 );
704
+ bool FileAccess::store_buffer (const uint8_t *p_src, uint64_t p_length) {
705
+ ERR_FAIL_COND_V (!p_src && p_length > 0 , false );
710
706
for (uint64_t i = 0 ; i < p_length; i++) {
711
- store_8 (p_src[i]);
707
+ if (unlikely (!store_8 (p_src[i]))) {
708
+ return false ;
709
+ }
712
710
}
711
+ return true ;
713
712
}
714
713
715
- void FileAccess::store_buffer (const Vector<uint8_t > &p_buffer) {
714
+ bool FileAccess::store_buffer (const Vector<uint8_t > &p_buffer) {
716
715
uint64_t len = p_buffer.size ();
717
716
if (len == 0 ) {
718
- return ;
717
+ return true ;
719
718
}
720
719
721
720
const uint8_t *r = p_buffer.ptr ();
722
721
723
- store_buffer (&r[0 ], len);
722
+ return store_buffer (&r[0 ], len);
724
723
}
725
724
726
- void FileAccess::store_var (const Variant &p_var, bool p_full_objects) {
725
+ bool FileAccess::store_var (const Variant &p_var, bool p_full_objects) {
727
726
int len;
728
727
Error err = encode_variant (p_var, nullptr , len, p_full_objects);
729
- ERR_FAIL_COND_MSG (err != OK, " Error when trying to encode Variant." );
728
+ ERR_FAIL_COND_V_MSG (err != OK, false , " Error when trying to encode Variant." );
730
729
731
730
Vector<uint8_t > buff;
732
731
buff.resize (len);
733
732
734
733
uint8_t *w = buff.ptrw ();
735
734
err = encode_variant (p_var, &w[0 ], len, p_full_objects);
736
- ERR_FAIL_COND_MSG (err != OK, " Error when trying to encode Variant." );
735
+ ERR_FAIL_COND_V_MSG (err != OK, false , " Error when trying to encode Variant." );
737
736
738
- store_32 (len);
739
- store_buffer (buff);
737
+ return store_32 (len) && store_buffer (buff);
740
738
}
741
739
742
740
Vector<uint8_t > FileAccess::get_file_as_bytes (const String &p_path, Error *r_error) {
@@ -896,7 +894,7 @@ void FileAccess::_bind_methods() {
896
894
ClassDB::bind_method (D_METHOD (" store_float" , " value" ), &FileAccess::store_float);
897
895
ClassDB::bind_method (D_METHOD (" store_double" , " value" ), &FileAccess::store_double);
898
896
ClassDB::bind_method (D_METHOD (" store_real" , " value" ), &FileAccess::store_real);
899
- ClassDB::bind_method (D_METHOD (" store_buffer" , " buffer" ), (void (FileAccess::*)(const Vector<uint8_t > &)) & FileAccess::store_buffer);
897
+ ClassDB::bind_method (D_METHOD (" store_buffer" , " buffer" ), (bool (FileAccess::*)(const Vector<uint8_t > &)) & FileAccess::store_buffer);
900
898
ClassDB::bind_method (D_METHOD (" store_line" , " line" ), &FileAccess::store_line);
901
899
ClassDB::bind_method (D_METHOD (" store_csv_line" , " values" , " delim" ), &FileAccess::store_csv_line, DEFVAL (" ," ));
902
900
ClassDB::bind_method (D_METHOD (" store_string" , " string" ), &FileAccess::store_string);
0 commit comments