/*!
\page	oess_1__version	oess_1: Список модификаций

\section	oess_1_4_0	1.4.0

	2004.12.01..2005.05.20

Добавлен класс 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, <b>этому код, который их
	использовал, должен быть переписан</b>.

	Добавлен класс oess_1::stdsn::shptr_skeleton_t.

	В класс oess_1::db::cln::db_t добавлены методы:
	- ent_destroy_all;
	- ent_raw_create;
	
	Реализован полноценный откат транзакций в БД.

	<b>Изменена физическа структура БД и формат ее хранения. Версия 1.4.0
		не сможет работать с БД, созданными предыдущими версиями. Предыдущие
		версии ObjESSty не смогут работать с новыми БД.</b>
	Для того, чтобы нельзя было просто подсунуть ObjESSty несовместимую БД
	изменена схема именования файлов БД.

	Использована "обновленная BSD лицензия" вместо собственной лицензии,
	применявшейся ранее.


\section	oess_1_3_1	1.3.1

	2004.11.28

	Увеличена производительность за счет рефакторинга.

	Изменения фиксируются в БД после завершения каждой транзакции.

\section	oess_1_3_0	1.3.0

	2004.09.10

	Переход на mxx_ru.

\section	oess_1_2_0	1.2.0

	2004.03.21-2004.06.07

	Добавлена поддержка опциональных полей сериализуемых типов
	для стандартной схемы сериализации. Подробнее см.
	\ref oess_1_2_0__optional_fields.

	Добавлена поддержка "расширений" типов. Подробнее см.
	\ref oess_1_2_0__extensible_types.

	Добавлена поддержка "наследования расширением". Подробнее см.
	\ref oess_1_2_0__subclassing_by_extension.

	Расширенные типы и расширяемые наследованием типы поддерживают
	т.н. неизвестные расширения. Подробнее см.
	\ref oess_1_2_0__unknown_extension.

	Изменен формат базы данных. Новый формат не совместим со
	старым форматом. Подробнее см. \ref oess_1_2_0__database_format.

	Классы 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 для совместимости с предыдущими
	версиями.

	Вспомогательный код сериализации объектов сделан реентерабильным.
	Подробнее см. \ref oess_1_2_0__reenterability.

	\note см. \ref oess_1_2_0__migrating.

\section	oess_1_1_4	1.1.4

	2004.03.15

	Исправлена ошибка: в классе oess_1::impl::std_db_content_t при
	открытии БД терялись указатели на ранее созданные объекты
	std_db_storage и std_client_map. В результате эти объекты не
	уничтожались.

\section	oess_1_1_3	1.1.3

	2004.01.27

	Устранена ошибка из-за которой содержимое БД не вытеснялось на
	диск после выполнения операций изменения БД при установленом
	флаге auto_flush. Спасибо Вячеславу Костину за
	выявление этой ошибки при использовании проекта oess_sequence_1.

\section	oess_1_1_2	1.1.2

	2003.12.21

	Из кода класса oess_1::io::mem_buf_t изъяты обращения
	к функции assert(). Теперь, если при выполнении методов
	insert, erase обнаруживаются недопустимые условия
	порождаются исключения.

\section	oess_1_1_1	1.1.1

	2003.11.12

	Класс 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.


\section	oess_1_1_0_1	1.1.0.1

	2003.10.02

	Исправлена ошибка с передачей идентификатора удаляемого
		объекта в метод slice_image_iface_t::erase() по
		ссылке, которая указывала на сам удаляемый объект.


\section	oess_1_1_0	1.1.0

	2003.09.10

	Начата реализация транзакций. Добавлен класс
		oess_1::db::cln::transaction_t. Транзакцию
		может проводить только один клиент. Транзакцию
		можно только подтвердить, но нельзя отменить.

	Изменился состав методов, автоматически генерируемых
		для сериализуемых классов. Добавлен метод
		virtual const std::string &amp; oess_scheme() const.
		При переходе на новую версию oess_1 необходимо
		перестроить все ddl.cpp файлы. Для этого при первой
		компиляции нужно определить символ препроцессора
		OESS_REBUILD_DDL_CPP
\verbatim
mxxc -d OESS_REBUILD_DDL_CPP
\endverbatim

	Схема данных в БД в динамике пополняется при
		помещении объектов в БД.

	Разделы в БД можно создавать в динамике через
		метод oess_1::db::cln::db_t::slice_create.

	БД можно создавать в динамике через метод
		oess_1::db::site::localhost_t::db_create.


\section	oess_1_0_9	1.0.9

	2003.09.09

	Добавлены классы oess_1::db::cln::slice_image_t,
		oess_1::db::cln::slice_index_t.

	Добавлен класс tlv::tlv_add_caller_t.

\section	oess_1_0_8	1.0.8

	2003.06.26

	Адаптация к cls_2 v.2.6. Теперь есть возможность определять
		в какой строке DDL-описания обнаружена синтаксическая ошибка.


\section	oess_1_0_7	1.0.7

	2003.06.05

	Оператор присваивания в oess_1::stdsn::shptr_t реализован
		через виртуальный метод oess_shptr_assign. Теперь, переопределив
		этот метод в производном классе можно изменить способ
		выполнения операции присваивания.


\section	oess_1_0_6_2	1.0.6.2

	2003.05.18

	Исправлена ошибка в oess_1/defs/required.4xx: добавлен
		проект threads_1 в список зависимостей.


\section	oess_1_0_6_1	1.0.6.1

	2003.04.22

	Файлы globals.4xx добавлены в подпроекты oess_1/defs, oess_1/io,
		oess_1/stdsn, oess_1/tlv, oess_1/scheme.

	Исправлены ошибки в проектных файлах подпроектов oess_1/io,
		oess_1/tlv.


\section	oess_1_0_6	1.0.6

	2003.04.08, 2003.04.11

	Добавлены файлы oess_1/stdsn_start.4xx, oess_1/stdsn_finish.4xx,
		которые нужно использовать вместо oess_1/start.4xx,
		oess_1/finish.4xx следующим образом:
\verbatim
#include <start.4xx>
#include "oess_1/stdsn_start.4xx"
...
#include "oess_1/stdsn_finish.4xx"
#include <finish.4xx>
\endverbatim
	Файлы oess_1/start.4xx, oess_1/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.


\section	oess_1_0_5	1.0.5

	2003.03.27

	Переход на threads-1-1.


\section	oess_1_0_4	1.0.4

	2003.02.03

	Адаптация к Borland C++ 5.6 (C++Builder 6).

	Переход на cls-2-4.

	Изъят код auto_ptr_2.

	Переход на args-4-2.


\section	oess_1_0_3	1.0.3

	2003.01.24

	Добавлен класс 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().

	Исправлена ошибка: не удалялось старое содержимое атрибутов
		контейнеров перед очередной десериализацией.

	Изменена структура каталогов и способ формирования
		дистрибутива.


\section	oess_1_0_2	1.0.2

	2002.11.17

	В метод tlv_base_t::tlv_unpack добавлен параметр tag_id.

	Добавлен класс oess_1::tlv::tlv_extractor_t.

\section	oess_1_0_1	1.0.1

	2002.10.31


	Компонент io разделен на io и stdsn.

*/
