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