godot/core
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
..
bind Added a new MIDIDriver class 2018-07-21 09:09:42 -03:00
helper
io Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
math Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
os Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
allocators.h
array.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
array.h
class_db.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
class_db.h -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
color_names.inc Style: Apply clang-format (5.0) to some missed files 2018-05-31 09:00:37 +02:00
color.cpp Fixed float Color conversions to int types 2018-06-19 22:19:08 +03:00
color.h
command_queue_mt.cpp
command_queue_mt.h Added ability for SSAO to affect AO textures too 2018-07-02 16:50:52 -03:00
compressed_translation.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
compressed_translation.h
core_string_names.cpp
core_string_names.h
cowdata.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
dictionary.cpp Add Dictionary::erase_checked(key) method 2018-07-18 23:07:31 +02:00
dictionary.h Add Dictionary::erase_checked(key) method 2018-07-18 23:07:31 +02:00
dvector.cpp
dvector.h Style: Format code with clang-format 6.0.1 2018-07-18 16:27:03 +02:00
engine.cpp GDScript access to copyright, license, author and donor information. 2018-05-19 00:40:16 +01:00
engine.h GDScript access to copyright, license, author and donor information. 2018-05-19 00:40:16 +01:00
error_list.h
error_macros.cpp
error_macros.h Style: Apply clang-format (5.0) to some missed files 2018-05-31 09:00:37 +02:00
func_ref.cpp
func_ref.h
global_constants.cpp Added a new MIDIDriver class 2018-07-21 09:09:42 -03:00
global_constants.h
hash_map.h
hashfuncs.h -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
image.cpp Merge pull request #19313 from RandomShaper/improve-image 2018-07-23 16:21:45 -03:00
image.h Merge pull request #19313 from RandomShaper/improve-image 2018-07-23 16:21:45 -03:00
input_map.cpp Added method to clear input events of an action 2018-05-03 00:26:49 +02:00
input_map.h Added method to clear input events of an action 2018-05-03 00:26:49 +02:00
int_types.h
list.h
make_binders.py
map.h
message_queue.cpp -Project/Editor settings now use new inspector 2018-07-19 19:02:04 -03:00
message_queue.h
method_bind.cpp
method_bind.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
method_ptrcall.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
node_path.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
node_path.h -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
oa_hash_map.h updated OAHashMap to use robinhood hashing 2018-05-03 17:00:21 +02:00
object.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
object.h -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
ordered_hash_map.h
packed_data_container.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
packed_data_container.h
pair.h
path_remap.cpp
path_remap.h
pool_allocator.cpp Fix PoolAllocator::resize for too large p_new_size 2018-05-17 00:35:47 +02:00
pool_allocator.h
print_string.cpp
print_string.h
project_settings.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
project_settings.h Fix build issues and typos after c69de2ba4 2018-07-20 08:37:10 +02:00
ref_ptr.cpp
ref_ptr.h
reference.cpp
reference.h
register_core_types.cpp -Project/Editor settings now use new inspector 2018-07-19 19:02:04 -03:00
register_core_types.h
resource.cpp -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
resource.h
rid.cpp
rid.h
ring_buffer.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
safe_refcount.cpp reduce clang warning spam 2018-07-24 12:13:05 +02:00
safe_refcount.h reduce clang warning spam 2018-07-24 12:13:05 +02:00
script_debugger_local.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
script_debugger_local.h Local debugger fixes and extensions 2018-05-07 23:17:06 -04:00
script_debugger_remote.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
script_debugger_remote.h Fix debugger focus stealing 2018-05-28 21:49:48 +02:00
script_language.cpp Global class names (and GDScript support for it) 2018-07-15 19:29:00 -03:00
script_language.h Add editor highlight for type-safe lines 2018-07-20 21:55:18 -03:00
SCsub add NoCache wrapper to Command 2018-06-21 03:00:33 -04:00
self_list.h
set.h
simple_type.h
sort.h
string_buffer.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
string_builder.cpp
string_builder.h
string_db.cpp Fix some Coverity warnings in String API 2018-04-18 22:20:39 +02:00
string_db.h -Fixes to how hashing happened, now StringName and NodePath use default hasher, this was leading to some severe slowdown in scenarios 2018-07-02 15:08:35 -03:00
translation.cpp Removed unnecessary assignments 2018-07-24 09:51:03 +02:00
translation.h
type_info.h State machine animation node 2018-06-25 16:22:41 -03:00
typedefs.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
ucaps.h
undo_redo.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
undo_redo.h Add a message when there is nothing to Undo or Redo 2018-05-27 12:53:52 -03:00
ustring.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
ustring.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
variant_call.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
variant_construct_string.cpp
variant_op.cpp Hacked around duplication bug. I think duplicate needs to be even smarter, maybe pass two bools? (containers and/or resources) 2018-07-03 08:34:06 -03:00
variant_parser.cpp
variant_parser.h
variant.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
variant.h State machine animation node 2018-06-25 16:22:41 -03:00
vector.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
version.h
vmap.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
vset.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00