Добавлена возможность компиляции в виде статических библиотек. Подробнее см. oess_1.4.0. Компиляция в виде статических библиотек.
Добавлена возможность ручной сериализации STL-контейнеров. Подробнее см. oess_1.4.0. Шаблоны ручной сериализации для STL контейнеров.
Реализована возможность более экономичного сохранения размерностей контейнеров в потоках ввода-вывода. Подробнее см. oess_1.4.0. Сохранение размерностей в потоках ввода/вывода..
Добавлена возможность использовать более новые версии библиотеки ACE без необходимости создавать для ACE проектные файлы Mxx_ru вручную. Подробнее см. oess_1.4.0. Подключение библиотеки ACE.
Добавлена возможность компиляции oess_1::stdsn::serializable_t в виде статической библиотеки. Подробнее см. oess_1.4.0. Компиляция в виде статических библиотек.
Добавлена возможность ручной сериализации типов, которые невозможно сделать производными от oess_1::stdsn::serializable_t. Подробнее см. oess_1.4.0. Ручная сериализация пользовательских типов.
Добавлен класс snapshot_file_committer_t для формирования snapshot-ов при выполнении обратного воспроизведения trace-файлов.
Утилита oess_trace_replay теперь позволяет создавать snapshot-ы (вместо восстановления БД), а так же удалять ставшие неактуальными snapshot-ы.
Реализован механизм snapshot-ов.
Частичный рефакторинг: замена обмена указателями на динамически созданные объекта обменом объектами std::auto_ptr.
В класс oess_1::stdsn::cloneable_policy_t добалена поддержка методов clone, которые возвращают std::auto_ptr< T >.
Изменен способ проверки существования БД. Теперь, если используется режим trace_all, то для существования БД необходимо наличие конфигурационного файла и trace-файлов.
Добавлен unit-тест stdsn/shptr.cloneable.
Добавлен пример subexpression.
Реализована возможность открывать через local_db_t БД в режиме read-only.
Начата реализация утилиты oess_db_export.
В класс oess_1::db::cln::db_t добавлен метод ent_raw_update.
В класс oess_1::db::cln::db_t добавлен метод ent_raw_load.
В класс oess_1::db::cln::db_t добавлен метод ent_raw_create.
Добавлен unit-тест test/oess_db/ent_raw.
Отказ от использования threads_1 в пользу средств синхронизации ACE.
Тест test/reenterability переписан с использованием средств поддержки нитей из ACE.
Тест test/reenterability преобразован в unit-тест.
Класс oess_1::stdsn::shptr_t сделан производным от oess_1::stdsn::shptr_skeleton_t. Из класса shptr_t изъяты методы oess_shptr_assign, oess_shptr_reset, этому код, который их использовал, должен быть переписан.
Добавлен класс oess_1::stdsn::shptr_skeleton_t.
В класс oess_1::db::cln::db_t добавлены методы:
Реализован полноценный откат транзакций в БД.
Изменена физическа структура БД и формат ее хранения. Версия 1.4.0 не сможет работать с БД, созданными предыдущими версиями. Предыдущие версии ObjESSty не смогут работать с новыми БД. Для того, чтобы нельзя было просто подсунуть ObjESSty несовместимую БД изменена схема именования файлов БД.
Использована "обновленная BSD лицензия" вместо собственной лицензии, применявшейся ранее.
Увеличена производительность за счет рефакторинга.
Изменения фиксируются в БД после завершения каждой транзакции.
Переход на mxx_ru.
Добавлена поддержка опциональных полей сериализуемых типов для стандартной схемы сериализации. Подробнее см. oess_1.2.0. Опциональные поля.
Добавлена поддержка "расширений" типов. Подробнее см. oess_1.2.0. Расширяемые типы.
Добавлена поддержка "наследования расширением". Подробнее см. oess_1.2.0. Наследование расширением (subclassing_by_extension).
Расширенные типы и расширяемые наследованием типы поддерживают т.н. неизвестные расширения. Подробнее см. oess_1.2.0. Неизвестные расширения.
Изменен формат базы данных. Новый формат не совместим со старым форматом. Подробнее см. oess_1.2.0. Формат базы данных.
Классы oess_1::stdsn::ient_no_markers_t, oess_1::stdsn::oent_no_markers_t переименованы в oess_1::stdsn::ient_std_t, oess_1::stdsn::oent_std_t и описаны в заголовочном файле oess_1/stdsn/h/ent_std.hpp. Имена oess_1::stdsn::ient_no_markers_t, oess_1::stdsn::oent_no_markers_t оставлены в виде typedef для совместимости с предыдущими версиями.
Вспомогательный код сериализации объектов сделан реентерабильным. Подробнее см. oess_1.2.0. Реентерабильность вспомогательного кода.
Исправлена ошибка: в классе oess_1::impl::std_db_content_t при открытии БД терялись указатели на ранее созданные объекты std_db_storage и std_client_map. В результате эти объекты не уничтожались.
Устранена ошибка из-за которой содержимое БД не вытеснялось на диск после выполнения операций изменения БД при установленом флаге auto_flush. Спасибо Вячеславу Костину за выявление этой ошибки при использовании проекта oess_sequence_1.
Из кода класса oess_1::io::mem_buf_t изъяты обращения к функции assert(). Теперь, если при выполнении методов insert, erase обнаруживаются недопустимые условия порождаются исключения.
Класс oess_1::io::mem_buf_t сделан производным от oess_1::io::ibinbuffer_t, oess_1::io::obinbuffer_t.
Класс oess_1::io::isubbinstream_t сделан производным от oess_1::io::ibinbuffer_t. Реализован метод oess_1::io::isubbinstream_t::size().
Класс oess_1::io::ofixed_mem_buf_t сделан производным от oess_1::io::obinbuffer_t. Реализован метод oess_1::io::ofixed_mem_buf_t::size().
Класс oess_1::io::ifixed_mem_buf_t сделан производным от oess_1::io::ibinbuffer_t. Реализован метод oess_1::io::ifixed_mem_buf_t::size().
Класс oess_1::io::obstring_t сделан производным от oess_1::io::obinbuffer_t. Реализованы методы oess_1::io::obstring_t::capacity(), oess_1::io::obstring_t::size(), oess_1::io::obstring_t::pos().
Класс oess_1::io::ibstring_t сделан производным от oess_1::io::ibinbuffer_t. Реализован метод oess_1::io::ibstring_t::size().
Добавлены интерфейсы oess_1::io::ibinbuffer_t, oess_1::io::obinbuffer_t.
Добавлен заголовочный файл oess_1/io/h/binbuffer.hpp.
Исправлена ошибка с передачей идентификатора удаляемого объекта в метод slice_image_iface_t::erase() по ссылке, которая указывала на сам удаляемый объект.
Начата реализация транзакций. Добавлен класс oess_1::db::cln::transaction_t. Транзакцию может проводить только один клиент. Транзакцию можно только подтвердить, но нельзя отменить.
Изменился состав методов, автоматически генерируемых для сериализуемых классов. Добавлен метод virtual const std::string & oess_scheme() const. При переходе на новую версию oess_1 необходимо перестроить все ddl.cpp файлы. Для этого при первой компиляции нужно определить символ препроцессора OESS_REBUILD_DDL_CPP
mxxc -d OESS_REBUILD_DDL_CPP
Схема данных в БД в динамике пополняется при помещении объектов в БД.
Разделы в БД можно создавать в динамике через метод oess_1::db::cln::db_t::slice_create.
БД можно создавать в динамике через метод oess_1::db::site::localhost_t::db_create.
Добавлены классы oess_1::db::cln::slice_image_t, oess_1::db::cln::slice_index_t.
Добавлен класс tlv::tlv_add_caller_t.
Адаптация к cls_2 v.2.6. Теперь есть возможность определять в какой строке DDL-описания обнаружена синтаксическая ошибка.
Оператор присваивания в oess_1::stdsn::shptr_t реализован через виртуальный метод oess_shptr_assign. Теперь, переопределив этот метод в производном классе можно изменить способ выполнения операции присваивания.
Исправлена ошибка в oess_1/defs/required.4xx: добавлен проект threads_1 в список зависимостей.
Файлы globals.4xx добавлены в подпроекты oess_1/defs, oess_1/io, oess_1/stdsn, oess_1/tlv, oess_1/scheme.
Исправлены ошибки в проектных файлах подпроектов oess_1/io, oess_1/tlv.
Добавлены файлы oess_1/stdsn_start.4xx, oess_1/stdsn_finish.4xx, которые нужно использовать вместо oess_1/start.4xx, oess_1/finish.4xx следующим образом:
#include <start.4xx> #include "oess_1/stdsn_start.4xx" ... #include "oess_1/stdsn_finish.4xx" #include <finish.4xx>
Оформление подпроектов oess_1/defs, oess_1/io, oess_1/stdsn, oess_1/tlv, oess_1/scheme, oess_1/db, oess_1/util_cpp_serializer, oess_1/util_db_create, oess_1/util_slice_create, oess_1/util_ent_enum в виде самостоятельных проектов. Для этого использовались возможности mxx-4-add-on для mxx v.4.4.
Переход на threads-1-1.
Адаптация к Borland C++ 5.6 (C++Builder 6).
Переход на cls-2-4.
Изъят код auto_ptr_2.
Переход на args-4-2.
Добавлен класс oess_1::tlv::tagged_scalar_wrapper_t.
В класс oess_1::stdsn::serializable_t добавлены виртуальные методы oess_post_pack и oess_pre_unpack.
Добавлен класс oess_1::stdsn::smart_ptr_t и макрос OESS_1_SPTR_IFACE.
Добавлен макрос OESS_SERIALIZER_EX().
Исправлена ошибка: не удалялось старое содержимое атрибутов контейнеров перед очередной десериализацией.
Изменена структура каталогов и способ формирования дистрибутива.
В метод tlv_base_t::tlv_unpack добавлен параметр tag_id.
Добавлен класс oess_1::tlv::tlv_extractor_t.
Компонент io разделен на io и stdsn.