analizer 08.09.2011 15:40 mcabber

Уня-ня, если собрать прогу с -rdynamic, и грузить в неё шаред либу, то эта либа может спокойно вызывать функции реализованные в проге.
У меня МОДУЛЬНОСТЬ!

А эта ваша сворованная ОС так умеет?

1. 0xd34df00d 08.09.2011 15:41 Azoth_idead

Мне такое одно время в личкрафтах нужно было, потом понял, что это ошибка проектирования.

2. SirAnthony 08.09.2011 15:42 home

Looks like АРХИТЕКТУРОПРОБЛЕМЫ.

3. analizer0xd34df00d /1 08.09.2011 15:43 mcabber

нифига. очень даже полезно. если прога реализует набор коллбэков, которые могут вызывать друг-дружку и хочешь дать возможность плагинам переопределять какие-то из этих коллбэков

4. 0xd34df00danalizer /3 08.09.2011 15:43 Azoth_idead

Што.

5. SirAnthonyanalizer /3 08.09.2011 15:43 home

Это и называется архитектуропроблемы.

6. analizerSirAnthony /5 08.09.2011 15:44 mcabber

ваши варианты для обеспечения подобного?

7. 0xd34df00danalizer /6 08.09.2011 15:44 Azoth_idead

Опиши нормально.

8. analizer0xd34df00d /7 08.09.2011 15:54 mcabber

на примере логгинга:
1. Есть прога с логгингом:
а. Функция формирования строчки лога, взять strftime от текущего времени, к нему приписать переданную параметром строку, затем фазу луны (которую возвращает отдельная функция), а затем получившуюся строку передать в 1.б.
б. Функция вывода в файл.

2. Use-case #1: пользователю хочется к строке приписывать ещё и расположение звёзд, определять которое умеет функция из либы:
а. В либе определяем аналог 1.а., но с дописыванием перед фазой луны расположения звёзд. В конце дёргаем 1.б.
б. Грузим либу, видим что аналог 1.а. в ней есть, вызываем его вместо родной функции.

3. Use-case #2: другому пользователю, в зависимости от фазы луны, хотим выводить лог либо в файл, либо в syslog.
а. ... думаю и так понятно

9. 0xd34df00danalizer /8 08.09.2011 15:57 Azoth_idead

Выставляй точки, в которые позволяешь плагинам регать boost::function'ы, проблем-то.
С кутями — излучать в нужных местах сигналы с модифицированными параметрами.

10. analizer0xd34df00d /9 08.09.2011 15:58 mcabber

имхо, не многим лучше такого

11. 0xd34df00danalizer /10 08.09.2011 15:58 Azoth_idead

Лучше. Точка вызова хука регулирует политику, а не хук.

12. analizer0xd34df00d /11 08.09.2011 15:59 mcabber

ок, а как тогда передать в 2.а. функцию вычисления фазы луны?

13. 0xd34df00danalizer /12 08.09.2011 16:01 Azoth_primary

void PostFormatHook (string& str, ...)
И ничего передавать не нужно.

14. analizer0xd34df00d /13 08.09.2011 16:01 mcabber

дописывать её в строку он как будет?

15. 0xd34df00danalizer /14 08.09.2011 16:03 Azoth_primary

Нахуй? str.append(), и все. Или тебе нужно захуячить между и после?
Аналогичный подход, просто сложнее и этапов больше.
Можно еще передавать прокси-объект со стандартным набором модификаторов строк, но это уже пиздец и лаги в архитектуре.

16. DZhonanalizer /14 08.09.2011 16:04

в boost::signals2 посмотри, там есть концепция Combiner, например.

17. analizer0xd34df00d /15 08.09.2011 16:04 mcabber

одному пользователю хочется до, другому — после, третьему вообще фаза луны не сделась, он просто в коллбэк записи в лог запишет текущее время

Do you really want to delete ?