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
..
2018-07-26 00:54:16 +02:00
2018-01-05 01:22:23 +01:00
2018-06-25 18:40:24 -03:00
2018-06-25 21:46:12 +02:00
2018-07-26 00:54:16 +02:00
2018-06-25 21:46:12 +02:00
2018-07-14 18:16:18 -03:00
2018-06-21 18:08:11 -03:00
2018-07-26 00:54:16 +02:00
2018-06-07 12:52:00 -03:00
2018-07-26 00:54:16 +02:00
2018-06-25 16:22:41 -03:00
2018-04-22 19:36:01 +02:00
2018-01-05 01:22:23 +01:00
2018-07-26 00:54:16 +02:00
2018-04-19 15:20:45 +02:00
2018-07-26 00:54:16 +02:00
2018-07-17 22:11:35 +09:00
2018-01-12 00:08:32 -03:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-07-26 00:54:16 +02:00
2018-06-12 11:01:24 +02:00
2018-05-17 18:03:05 -03:00
2018-01-05 01:22:23 +01:00
2018-07-26 00:54:16 +02:00
2018-04-28 11:22:22 -03:00
2018-07-26 00:54:16 +02:00
2018-01-05 01:22:23 +01:00
2018-07-06 20:21:42 -03:00
2018-07-06 20:21:42 -03:00
2018-05-15 17:14:31 -03:00
2018-01-05 01:22:23 +01:00
2018-05-18 12:37:18 -03:00
2018-05-17 18:03:05 -03:00
2018-06-07 12:52:00 -03:00
2018-06-07 12:52:00 -03:00
2018-01-12 00:08:32 -03:00
2018-01-05 01:22:23 +01:00
2018-05-17 18:03:05 -03:00
2018-05-17 18:03:05 -03:00
2018-05-15 17:14:31 -03:00
2018-03-27 19:19:45 +02:00
2018-07-26 00:54:16 +02:00
2018-01-05 01:22:23 +01:00
2018-05-17 18:03:05 -03:00
2018-01-05 01:22:23 +01:00
2018-01-01 14:40:47 +01:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-04-22 19:36:01 +02:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-01-05 01:22:23 +01:00
2018-05-17 18:03:05 -03:00
2018-01-05 01:22:23 +01:00
2018-07-26 00:54:16 +02:00
2018-01-05 01:22:23 +01:00
2018-07-23 12:28:50 -03:00
2018-07-07 09:04:22 -03:00
2018-05-09 14:01:04 +01:00
2018-05-09 14:01:04 +01:00
2018-05-09 14:01:04 +01:00
2018-05-09 14:01:04 +01:00
2018-05-07 21:03:16 +02:00
2018-05-07 21:03:16 +02:00
2018-05-27 22:32:58 +09:00
2018-05-04 11:54:21 -03:00
2018-01-15 07:49:29 +01:00
2018-01-15 07:49:29 +01:00
2018-06-27 16:30:48 -03:00
2018-06-26 19:06:16 -03:00
2018-07-26 00:54:16 +02:00
2018-07-22 11:55:56 +01:00
2018-07-22 11:55:56 +01:00
2018-07-22 11:55:56 +01:00
2017-03-05 14:21:25 +01:00
2018-07-22 11:48:59 +01:00
2018-01-05 01:22:23 +01:00
2018-04-22 19:36:01 +02:00
2018-01-05 01:22:23 +01:00
2018-05-16 14:50:44 -03:00
2018-05-16 14:50:44 -03:00
2018-07-26 00:54:16 +02:00
2018-05-07 21:03:16 +02:00
2018-07-26 00:54:16 +02:00
2018-07-23 20:50:23 +02:00
2018-07-26 00:54:16 +02:00
2018-05-16 14:50:44 -03:00
2018-04-30 16:05:21 -05:00
2018-01-05 01:22:23 +01:00
2018-05-17 18:03:05 -03:00
2018-05-17 18:03:05 -03:00
2018-07-22 11:55:56 +01:00
2018-07-22 11:55:56 +01:00
2018-02-03 12:10:44 +03:00
2018-01-05 01:22:23 +01:00
2018-05-17 18:03:05 -03:00
2018-05-17 18:03:05 -03:00
2018-05-03 18:07:18 -03:00
2018-01-05 01:22:23 +01:00
2018-07-26 00:54:16 +02:00
2018-07-01 20:50:56 +02:00
2018-06-03 16:32:23 +03:00
2018-03-02 23:15:32 +07:00
2018-07-26 00:54:16 +02:00
2018-07-15 10:33:11 +03:00