Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Jakie są dobre zasady programowania programów opartych na wtyczkach?

7 views
Skip to first unread message

Jacek Marcin Jaworski

unread,
Feb 2, 2024, 11:51:17 PMFeb 2
to
Dzień dobry! (Mimo, że do świtu jeszcze prawie 2,5godz.)

Problem jaki teraz chcę poruszyć to programowanie w C++ programów
opartych o wtyczki. Tylko trik polega na tym, że są to programy
zdarzeniowe czyli używające biblioteki takiej jak Qt.

Model programu mam prosty i logiczny:
Logiki prog.->Narzędzia prog.->Bibl. własne->Bibl. obce

To co dla mnie jest kluczowe, to możliwość rozszerzania logik o wtyczki.
Problem jaki tu występuje, to hazard wynikający z przechodzenia zdarzeń
przez pętlę zdarzeń, która ma to do siebie że nie gwarantuje kiedy
zdarzenie będzie obsłużone. Dlatego wygodny mechanizm sygnał->slot w
przypadku wtyczek odpada (bo program staje się nieprzewidywalny).

W klasycznym ujęciu problem jest rozwiązywany banalnie: przez tablice
wsk. do f. (np. "tablice przerwań programowych" w M$ DOS).
Tylko, że w C++ nie mamy dostępu do tablic f. wirtualnych.

Jednak można sobie zdefiniować tablice f. C jako f. zwrotnych z góry
określoną sygnaturą i je wywoływać z wtyczek. Wadą jest to, że styk
miedzy prog. a wtyczką oparty jest nie na obiektach tylko na czystych f.
C (co oznacza konieczność użycia globalnych zm. we wtyczkach).
W tym przypadku do każdej logiki należało by dodać po jednej tablicy
tych f. C na każde przewidziane działanie wtyczek.

Z drugiej strony są szablony:
Można sobie wyobrazić tablicę obiektów pewnego szablonu (sygnatury f.).
I te obiekty mogą mieć albo wsk. do f. C albo wsk. do o. i f. (zgodnej z
sygnaturą). Tu należy zadbać jedynie o prawidłowe sygnatury f. i
operator porównania który jest konieczny dla f. tablicy removeAll().
To rozwiązanie jest dużo bardziej odlotowe od prostych tablic z f. C,
ale ma tą zaletę, że było by obiektowo i bez zm. globalnych we wtyczkach.

Pyt. są takie:
1. Czy macie jakieś inne pomysły na wywołania zwrotne z prog. do wtyczek?
2. Jak wasze prawdziwe prog. korzystają z wtyczek?
3. Jakbyście pisali nowy prog. oparty o wtyczki to które rozw. byście
wybrali?

Miłej sob. i nie.!
Jacek Marcin Jaworski

heby

unread,
Feb 3, 2024, 11:23:35 AMFeb 3
to
On 03/02/2024 05:51, Jacek Marcin Jaworski wrote:
> 1. Czy macie jakieś inne pomysły na wywołania zwrotne z prog. do wtyczek?

boost::signals.

Albo 100% wirtualne interfejsy.

Albo najlepiej oba.

> 3. Jakbyście pisali nowy prog. oparty o wtyczki to które rozw. byście
> wybrali?

To zbyt ogólne pytanie.

Zastanów się najpierw dlaczego w ogóle wtyczki znajdują się na ścieżce
eventów Qt i po co im widzieć jakieś Qt. Może nie powinny mieć o tym
pojęcia.

0 new messages