LINUX.ORG.RU

Ответ на: комментарий от rh9

В Qt сигналы и слоты работают через MOC, это, строго говоря, не чистая C++-библиотека, а использующая особый диалект C++. Не надо там смотреть.

erDiZz
()
Ответ на: комментарий от anonymous

> открой для себя указатели на функции в С, что в этом сложного?

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

Про Qt (а также про boost.signals и libsigc) я в курсе, но интересует именно реализация сигналов и слотов на C а не на C++.

syomin
() автор топика
Ответ на: комментарий от syomin

Можно узнать, чем механизм сигналов и слотов несколько большее, чем банальные указатели на функции?

Мне на самом деле интересно.

vasirck
()
Ответ на: комментарий от vasirck

> Можно узнать, чем механизм сигналов и слотов несколько большее, чем банальные указатели на функции?

Конечно :).
Главное отличие в том, что при вызове функции по указателю вызывается одна функция, а при использовании сигналов - последовательно вызывается несколько функций.

syomin
() автор топика
Ответ на: комментарий от vasirck

> Может тогда сделать список указателей на функции?
Фактически всё к этому и сводится, просто интересно было бы посмотреть на возможные реализации.

syomin
() автор топика
Ответ на: комментарий от syomin

>просто интересно было бы посмотреть на возможные реализации.

ну так и посмотрите в сырцы glib-a

cvv ★★★★★
()
Ответ на: комментарий от cvv

Я ж сказал, что посмотрел - но там все весьма навернуто, а интересует более простоя реализация, которую можно было бы использовать при разработке ПО для встраиваемых систем.

syomin
() автор топика
Ответ на: комментарий от syomin

>Я ж сказал, что посмотрел - но там все весьма навернуто,

я вас понял что вы только api смотрели.

также я не считаю эту реализацию "весьма навернутой". по крайней мере в отличие от qt ей не требуется дополнительный препроцессор

cvv ★★★★★
()
Ответ на: комментарий от cvv

> также я не считаю эту реализацию "весьма навернутой". по крайней мере в отличие от qt ей не требуется дополнительный препроцессор

После того, как я поработал с boost::signal я что-то засомневался в том, что это преимущество... :)

syomin
() автор топика
Ответ на: комментарий от syomin

>После того, как я поработал с boost::signal я что-то засомневался в том, что это преимущество... :)

я говорю о том что "дополнительный препроцессор это наворот" а преимущество это или нет вопрос религиозный.

cvv ★★★★★
()
Ответ на: комментарий от cvv

любая реализация signal-slot mechanism , connection points, etc,
работает на основе наличия metadata information.
Говоря по-русски, необходим механизм,
который позволяет преврашать "символьную строку" в указатель на
функцию или метод класса. То есть, signal-slot mechanism, это всегда
"некий встроенный интепретатор".
Думаю самой простой реализацией могла бы быть
"parcing debugging info", например, полученную после nm, gdb, etc,


Valeriy_Onuchin ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.