Object Entity Serialization & Stability (ObjESSty) Инструмент для сериализации и долговременного хранения сложных C++ объектов Коротко об ObjESSty ------------------- ObjESSty -- это инструмент для сериализации и долговременного хранения сложных C++ объектов. ObjESSty включает в себя средства для сериализации/ десериализации C++ объектов в двоичное, платформо-независимое представление. Так же в состав ObjESSty входит небольшая, встраиваемая система долговременного хранения сериализованных объектов. Основная идея в ObjESSty -- это необходимость описания схемы данных на специальном языке и объявление сериализуемых типов производными от специального класса oess_1::stdsn::serializable_t. Все остальное -- задача ObjESSty. По описанию схемы данных автоматически генерируется вспомогательный код, который и выполняет сериализацию/десериализацию. ObjESSty реализован на языке C++ и предназначен для использования в C++ приложениях. Поэтому в ObjESSty встроена поддержка атрибутов-указателей и атрибутов-контейнеров STL. ObjESSty распространяется в исходных текстах по BSD-лицензии. Дополнительная информация об ObjESSty может быть получена со страницы разработчика (http://eao197.narod.ru/objessty) или из генерируемой по исходным текстам ObjESSty документации. Получение и инсталляция ObjESSty -------------------------------- Загрузить ObjESSty можно со страницы разработчика -- http://eao197.narod.ru/objessty. ObjESSty распространяется только в исходных текстах. Для компиляции ObjESSty потребуется инструмент для управления компиляцией проектов mxx_ru (http://eao197.narod.ru/mxx_ru) и язык Ruby (http://www.ruby-lang.org). Возможны два способа инсталляции ObjESSty. Единственная инсталляция на компьютере ====================================== Архив с ObjESSty распаковывается в некоторый каталог (например, d:/usr/tools/oess_1). Пусть этот каталог называется oess_root. Компиляция ObjESSty запускается из подкаталога oess_root/dev. Результирующие dll размещаются в каталоге oess_root/dev, библиотеки импорта в oess_root/dev/lib. Для использования ObjESSty необходимо добавить oess_root/dev в переменную среды PATH, oess_root/dev в переменную среды INCLUDE, а oess_root/dev/lib -- в LIB. Замечание для платформы Unix. ObjESSty не использует GNU autotools, поэтому инсталляция через ./configure; make; make install в ObjESSty не поддерживается. Все настройки на конкретную платформу для ObjESSty осуществляются через настройку mxx_ru для этой платформы. После компиляции ObjESSty необходимо прописать каталог oess_root/dev в LD_LIBRARY_PATH, а при компиляции использующих ObjESSty проектов необходимо указывать в опциях компилятора пути к каталогам oess_root/dev (для заголовочных файлов) и oess_root/dev, oess_root/dev/lib (для поиска библиотек). Данный способ является наиболее сложным способом инсталляции и подключения ObjESSty к собственным проектам. Более предпочтительным является следующий способ. Включение ObjESSty в состав использующего его проекта ===================================================== Путь ObjESSty должен использоваться в проекте A. Пусть исходные тексты проекта находятся в дереве каталогов с вершиной в каталоге A_root. Для использования ObjESSty в проекте A необходимо поместить в A_root все каталоги из каталога dev архива ObjESSty за исключением каталогов htm, sample, test. В результате должно получиться такое соотвествие: oess.tar.bz2/dev/ace A_root/ace oess.tar.bz2/dev/args_4 A_root/args_4 oess.tar.bz2/dev/auto_ptr_3 A_root/auto_ptr_3 oess.tar.bz2/dev/cls_2 A_root/cls_2 oess.tar.bz2/dev/cpp_util_2 A_root/cpp_util_2 oess.tar.bz2/dev/lib A_root/lib oess.tar.bz2/dev/libpcre++ A_root/libpcre++ oess.tar.bz2/dev/oess_1 A_root/oess_1 oess.tar.bz2/dev/pcre A_root/pcre oess.tar.bz2/dev/smart_ref_3 A_root/smart_ref_3 oess.tar.bz2/dev/threads_1 A_root/threads_1 Затем в настройки проекта A добавляются: - путь для поиска заголовочных файлов: каталог A_root; - путь для поиска библиотек: каталог A_root/lib. На платформе Unix так же потребуется добавить каталог A_root в путь для поиска библиотек (в него будут помещаться скомпилированные so-файлы) и указать каталог A_root в LD_LIBRARY_PATH. По умолчанию, в результате компиляции ObjESSty будет размещать полученные dll/exe файлы в каталог A_root, а библиотеки импорта/статические библиотеки в A_root/lib. Расположение результатов компиляции может быть изменено при помощи возможно назначения obj_placement в mxx_ru. Например, включением в файл build.rb инструкции вида: global_obj_placement( Mxx_ru::Cpp::Runtime_subdir_obj_placement.new( "output" ) ) (Подробнее см. в документации по mxx_ru: http://eao197.narod.ru/mxx_ru). Такой способ инсталляции и использования ObjESSty позволяет: - компилировать ObjESSty с теми же настройками, что и использующий его проект; - перекомпилировать ObjESSty вместе с проектом либо в debug, либо в release режиме, не затрагивая других проектов, которые так же могут использовать ObjESSty; - использовать разные версии ObjESSty в разных проектах на одном компьютере. Например, проект A использует версию 1.4.0, проект B -- версию 1.5.4, а проект C -- версию 1.4.6b1. Все эти проекты могут мирно сосуществовать на одном компьюере не мешая друг другу и не требуя изменений глобальных переменных среды при необходимости переключения с одного проекта на другой. Получение документации по ObjESSty ---------------------------------- Документация по ObjESSty доступна в электронном виде со страницы разработчика: http://eao197.narod.ru/objessty. Большая часть документации получена из исходных текстов с помощью инструмента doxygen (http://www.doxygen.org). Для извлечения этой документации из исходных текстов ObjESSty необходимо: - установить инструмент doxygen (при работе с ObjESSty использовалась версия 1.4.1); - распаковать ObjESSty в какой-либо каталог. Пусть этот каталог называется oess_root; - зайти в подкаталог oess_root/doxygen и запусть doxygen; - html-документация будет помещена в oess_root/dev/doc/html. Лицензия -------- ObjESSty распространяется под т.н. "обновленной" BSD-лицензией, которая не требует включения в использующие ObjESSty проекты рекламной информации. BSD-лицензия позволяет использовать ObjESSty как в открытых, так и в закрытых проектах. ObjESSty использует ряд сторонних компонентов, которые распространяются под собственными лицензиями. Все эти компоненты так же допускают их использование и в открытых, и в закрытых проектах. Но при включении ObjESSty в какой-либо проект следует убедиться, что лицензия этого проект на противоречит лицензиям использующихся в ObjESSty компонентов. Все лицензии, использованные в ObjESSty, перечислены в LICENSE. Так же в lgpl.txt содержится текст GNU LESSER GENERAL PUBLIC LICENSE, которая необходима для компонента pcre++. О разработчике -------------- Разработка ObjESSty до версии 1.4.0 включительно осуществлялась Евгением Охотниковым (http://eao197.narod.ru). eao197@intervale.ru eao197@yahoo.com