virtualx-engine/core/io
Hein-Pieter van Braam 0e29f7974b Reduce unnecessary COW on Vector by make writing explicit
This commit makes operator[] on Vector const and adds a write proxy to it.  From
now on writes to Vectors need to happen through the .write proxy. So for
instance:

Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;

Failing to use the .write proxy will cause a compilation error.

In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.

_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
2018-07-26 00:54:16 +02:00
..
compression.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
compression.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
config_file.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
config_file.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_buffered.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_buffered.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_buffered_fa.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_compressed.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_compressed.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_encrypted.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
file_access_encrypted.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_memory.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
file_access_memory.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_network.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
file_access_network.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_pack.cpp Fix listing files inside directory in pack file 2018-03-18 14:04:50 +01:00
file_access_pack.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_zip.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
file_access_zip.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
http_client.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
http_client.h HTTP client now uses non blocking handshake 2018-07-16 13:08:17 +02:00
image_loader.cpp fix API string path 2018-04-30 09:38:18 +02:00
image_loader.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
ip.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
ip.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
ip_address.cpp Fix typos with codespell 2018-02-21 19:46:06 +01:00
ip_address.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
json.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
json.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
logger.cpp Fixed regression making the logger not respect the max files limit. 2018-06-12 12:57:48 -03:00
logger.h Update copyright statements to 2018 2018-01-01 14:40:47 +01:00
marshalls.cpp Merge pull request #16033 from poke1024/marshalls-dict 2018-05-07 17:51:06 -03:00
marshalls.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
multiplayer_api.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
multiplayer_api.h MultiplayerAPI::send_bytes transfer mode support. 2018-07-08 09:47:22 +02:00
networked_multiplayer_peer.cpp Bind many more properties to scripts 2018-01-12 00:58:14 +02:00
networked_multiplayer_peer.h Bind many more properties to scripts 2018-01-12 00:58:14 +02:00
packet_peer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
packet_peer.h Bind many more properties to scripts 2018-01-12 00:58:14 +02:00
packet_peer_udp.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
packet_peer_udp.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
pck_packer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
pck_packer.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
resource_format_binary.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
resource_format_binary.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
resource_import.cpp Removed PBM bitmap loader, added abiliy to importi mages as bitmap. Fixes #14828 2018-01-06 16:38:36 -03:00
resource_import.h Removed PBM bitmap loader, added abiliy to importi mages as bitmap. Fixes #14828 2018-01-06 16:38:36 -03:00
resource_loader.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
resource_loader.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
resource_saver.cpp fix API string path 2018-04-30 09:38:18 +02:00
resource_saver.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
SCsub Add an option to use zstd's recently introduced long range matching (off by default). 2017-10-27 12:26:13 -04:00
stream_peer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
stream_peer.h Change function signature from float to double to match type get_doubleCloses #16160 2018-01-29 15:45:46 -08:00
stream_peer_ssl.cpp Implement non blocking-handshake for StreamPeerSSL 2018-07-16 13:08:17 +02:00
stream_peer_ssl.h Implement non blocking-handshake for StreamPeerSSL 2018-07-16 13:08:17 +02:00
stream_peer_tcp.cpp Display set_nodelay to GDScript 2018-01-30 13:22:15 -02:00
stream_peer_tcp.h Display set_nodelay to GDScript 2018-01-30 13:22:15 -02:00
tcp_server.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
tcp_server.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
translation_loader_po.cpp Fix loading PO files with missing newline after last msgstr 2018-07-24 13:32:37 +02:00
translation_loader_po.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
xml_parser.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
xml_parser.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
zip_io.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00