Изменение механики поставляемых типов #77

Open
opened 2022-09-20 11:59:22 +03:00 by lirent · 2 comments
lirent commented 2022-09-20 11:59:22 +03:00 (Migrated from dev.lirent.ru)

То, что не изменяется не должно копироваться. Значение каждого из встроенных в данное решение типов, по умолчанию передается по ссылке и не вызывает копирование значения, увеличивая счетчик ссылок.
В случае, если производится какое-либо действие над объектом, -- счетчик ссылок уменьшается и производится поверхностная копия контейнера, увеличивая счетчик ссылок всех вложенных объектов первого уровня.

Подобная механика должна иметь возможность расширения пользовательскими типами

То, что не изменяется не должно копироваться. Значение каждого из встроенных в данное решение типов, по умолчанию передается по ссылке и не вызывает копирование значения, увеличивая счетчик ссылок. В случае, если производится какое-либо действие над объектом, -- счетчик ссылок уменьшается и производится поверхностная копия контейнера, увеличивая счетчик ссылок всех вложенных объектов первого уровня. Подобная механика должна иметь возможность расширения пользовательскими типами
lirent commented 2022-09-20 13:51:15 +03:00 (Migrated from dev.lirent.ru)

Ответственность за отложенное копирование пользовательских типов лежит на пользователе и не обрабатывается особым образом на уровне поставляемого решения.
Решение гарантирует, что будут осуществлены вызовы методов, зарегистрированных для каждого из пользовательских типов (включая инициализацию копированием и высвобождение памяти, при копировании контейнеров и высвобождении ресурсов контейнеров, соответственно)

Ответственность за отложенное копирование пользовательских типов лежит на пользователе и не обрабатывается особым образом на уровне поставляемого решения. Решение гарантирует, что будут осуществлены вызовы методов, зарегистрированных для каждого из пользовательских типов (включая инициализацию копированием и высвобождение памяти, при копировании контейнеров и высвобождении ресурсов контейнеров, соответственно)
lirent commented 2022-09-21 10:49:19 +03:00 (Migrated from dev.lirent.ru)

Вопросы связанные со сравнением более не должны требовать рекурсивной педантичной проверки каждого вложенного элемента на идентичность, достаточно узнать ссылаются ли эти (вложенные) элементы на один и тот же блок памяти. Неизбежным следствием подобного станет потеря точности сравнения в случае параллельного существования полностью идентичных объектов.

Для сохранения возможности предыдущей логики поведения (с последовательной проверкой каждого вложенного элемента на идентичность), можно предусмотреть специальный флаг компиляции

Вопросы связанные со сравнением более не должны требовать рекурсивной педантичной проверки каждого вложенного элемента на идентичность, достаточно узнать ссылаются ли эти (вложенные) элементы на один и тот же блок памяти. Неизбежным следствием подобного станет потеря точности сравнения в случае параллельного существования полностью идентичных объектов. Для сохранения возможности предыдущей логики поведения (с последовательной проверкой каждого вложенного элемента на идентичность), можно предусмотреть специальный флаг компиляции
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: c/libcdsb#77
No description provided.