[Обсуждение]Декоратор для простых типов данных
От: Ulfur Россия  
Дата: 31.10.06 07:55
Оценка: 1 (1)
Для своих нужд был разработан враппер для простых типов данных. Враппер идет в составе библиотеки Mithril, её можно скачать здесь (30 Кб). В предлагаемом архиве солюшен из трех проектов в которых иллюстрируется использование библиотеки, а так же небольшая статья. Для сборки предлагаемых проектов понадобиться MSVC 7.1 и boost, но в принципе подойдет любой другой компилятор — нужно только создать для него соответствующий проект.
Возможно библиотека будет для кого-то полезной и я не изобрел велосипеда в очередной раз
Я не стал оформлять статью в RSDN, поскольку мне пока интересно насколько будет актуальной предлагаемая библиотека.

Совсем коротенький пример по использованию (using опущен):

wrapper<int, MITHRIL_POLICIES_2(must_be_initialized, set_once), default_error_reporter> a;

try
{
a = 45;
a = 987; // logic error
}
catch( const logic_error& err )
{
cout << "Logic Error: " << err.what() << endl;
}


здесь:
int — "оборачиваемый" тип,
MITHRIL_POLICIES_2(must_be_initialized, set_once) — комбинация из стратегий контроля "обернутого" значения
default_error_reporter — стратегия реакции на провал проверок стратегий контроля.
All suggestions will be greatly appreciated
Re: [Обсуждение]Декоратор для простых типов данных
От: Константин Л. Франция  
Дата: 31.10.06 09:26
Оценка:
Здравствуйте, Ulfur, Вы писали:

[]

U>[ccode]

U>wrapper<int, MITHRIL_POLICIES_2(must_be_initialized, set_once), default_error_reporter> a;

must_be_initialized — это что? Первое что пришло в голову — при объявлении должно быть сразу присвоено значение. А тут нет. Создается с пом дефолтного конструктора.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: [Обсуждение]Декоратор для простых типов данных
От: Ulfur Россия  
Дата: 31.10.06 09:31
Оценка:
Здравствуйте, Константин Л., Вы писали:

КЛ>must_be_initialized — это что? Первое что пришло в голову — при объявлении должно быть сразу присвоено значение. А тут нет. Создается с пом дефолтного конструктора.


Нет. Предполагается, что должно быть проинициализировано до первой попытки получить значение, т.е. так:


wrapper<int, must_be_initialized> a;

a = 654;

int c;

c = a; // ОК

wrapper<int, must_be_initialized> a2;

c = a2; // logic error
Re: [Обсуждение]Декоратор для простых типов данных
От: Ulfur Россия  
Дата: 31.10.06 14:48
Оценка: -1
up
Re: [Обсуждение]Декоратор для простых типов данных
От: johny5 Новая Зеландия
Дата: 08.11.06 03:20
Оценка:
Лицензия то на либу какая?
Re[2]: [Обсуждение]Декоратор для простых типов данных
От: Ulfur Россия  
Дата: 10.11.06 09:31
Оценка:
Здравствуйте, johny5, Вы писали:

J>Лицензия то на либу какая?

Artistic.
Можно использовать когда и где угодно, для любых целей под свою ответственность, при изменениях в библиотеке не стирать имя автора
Уже есть некоторые идеи по добавлению новых фич и написанию нормальной документации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.