godot/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
compression.h
config_file.cpp
config_file.h
file_access_buffered_fa.h
file_access_buffered.cpp
file_access_buffered.h
file_access_compressed.cpp
file_access_compressed.h
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
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
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
file_access_pack.cpp
file_access_pack.h
file_access_zip.cpp
file_access_zip.h
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
image_loader.h
ip_address.cpp
ip_address.h
ip.cpp
ip.h
json.cpp
json.h
logger.cpp Fixed regression making the logger not respect the max files limit. 2018-06-12 12:57:48 -03:00
logger.h
marshalls.cpp
marshalls.h
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
networked_multiplayer_peer.h
packet_peer_udp.cpp
packet_peer_udp.h
packet_peer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
packet_peer.h
pck_packer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
pck_packer.h
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
resource_import.cpp
resource_import.h
resource_loader.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
resource_loader.h
resource_saver.cpp
resource_saver.h
SCsub
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
stream_peer_tcp.h
stream_peer.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
stream_peer.h
tcp_server.cpp
tcp_server.h
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
xml_parser.cpp
xml_parser.h
zip_io.h