Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #34990 > unrolled thread
| Started by | Jacek Marcin Jaworski <jaworski1978@adres.pl> |
|---|---|
| First post | 2024-02-03 05:51 +0100 |
| Last post | 2024-02-03 17:23 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to pl.comp.programming
Jakie są dobre zasady programowania programów opartych na wtyczkach? Jacek Marcin Jaworski <jaworski1978@adres.pl> - 2024-02-03 05:51 +0100
Re: Jakie są dobre zasady programowania programów opartych na wtyczkach? heby <heby@poczta.onet.pl> - 2024-02-03 17:23 +0100
| From | Jacek Marcin Jaworski <jaworski1978@adres.pl> |
|---|---|
| Date | 2024-02-03 05:51 +0100 |
| Subject | Jakie są dobre zasady programowania programów opartych na wtyczkach? |
| Message-ID | <l25v21F7db6U1@mid.individual.net> |
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
[toc] | [next] | [standalone]
| From | heby <heby@poczta.onet.pl> |
|---|---|
| Date | 2024-02-03 17:23 +0100 |
| Message-ID | <uplpa4$36m3c$2@dont-email.me> |
| In reply to | #34990 |
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.
[toc] | [prev] | [standalone]
Back to top | Article view | pl.comp.programming
csiph-web