LINUX.ORG.RU

История изменений

Исправление DarkEld3r, (текущая версия) :

Да ну

Ну да. Свойства - это не просто несколько булевских флажков (на самом деле, даже optional<bool>), хотя и их изрядно получается. Это ещё и ещё и цвет текста/бекграунда (и нет, цвет - это не тупо RGBA) и шрифт и много другой фигни.

Собственно, свойства между стилями тоже шарятся.

Два указателя или один указатель - не суть важно, всё равно в итоге памяти столько же потратится. Тем более, что в твоём примере теряется «не заданное» состояние. Будешь ещё в optional заворачивать? Молча получать пустое значение как раз нафиг не нужно.

И да, «выпячивать указатели» удобно - свойства могут задаваться на разных уровнях. В итоге резолвинг выглядит как-то так: берём дефолтные свойства и проходимся по «уровням» и если свойство имеется - заменяем.

Про CoW.

Редактирование - это отдельная большая тема. Хинт: совместное редактирование.

Исходная версия DarkEld3r, :

Да ну

Ну да. Свойства - это не просто несколько булевских флажков (на самом деле, даже optional<bool>), хотя и их изрядно получается. Это ещё и ещё и цвет текста/бекграунда (и нет, цвет - это не тупо RGBA) и шрифт и много другой фигни.

Собственно, свойства между стилями тоже шарятся.

Два указателя или один указатель - не суть важно, всё равно в итоге памяти столько же потратится. Тем более, что в твоём примере теряется «не заданное» состояние. Будешь ещё в optional заворачивать? Молча получать пустое значение как раз нафиг не нужно.

И да, «выпячивать указатели» удобно - свойства могут задаваться на разных уровнях. В итоге резолвинг выглядит как-то так: берём дефолтные свойства и проходимся по «уровням» и если свойство имеется - заменяем.