-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!uni-berlin.de!individual.n
et!not-for-mail
From: Jacek Marcin Jaworski <j...@a...pl>
Newsgroups: pl.comp.programming,pl.comp.lang.c
Subject: Jakie są dobre zasady programowania programów opartych na wtyczkach?
Followup-To: pl.comp.programming
Date: Sat, 3 Feb 2024 05:51:13 +0100
Lines: 42
Message-ID: <l...@m...individual.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: individual.net 97PiEf9CG18p+Iadf/6BJgv8cx4r5804RJs5WAiPE5hoDlfVKm
Cancel-Lock: sha1:t8VLZhhsozt1wDkWxeKvmXP85HA=
sha256:V8lwZ+MwU7y5X0EDXrAhsbXcuQrDk+9VbIAjNhpJouc=
User-Agent: Mozilla Thunderbird
Content-Language: pl-PL, en-GB
Xref: news-archive.icm.edu.pl pl.comp.programming:215990 pl.comp.lang.c:308883
[ ukryj nagłówki ]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
Następne wpisy z tego wątku
- 03.02.24 17:23 heby
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-05-09 Vitruvian Man - parts 7-11a
- 2024-05-09 Vitruvian Man - parts 7-11a
- 2024-05-09 Chess
- 2024-05-09 Vitruvian Man - parts 7-11a
- 2024-05-09 szafka sieciowa
- 2024-05-09 Białystok => Senior Software Engineer PHP (BillPro) Contractor <=
- 2024-05-09 policja pomaga
- 2024-05-09 Łódź => Senior DevOps Engineer <=
- 2024-05-09 Wrocław => Java Developer <=
- 2024-05-09 MSI B450 PRO VDH MAX - HDMI+DVI = 2 ekrany?
- 2024-05-09 Raspberry Pi 5 + dyski SATA
- 2024-05-09 Warszawa => Spedytor międzynarodowy <=
- 2024-05-09 Berlin => IT Systems Administrator and Customer Support Engineer <=
- 2024-05-09 lutownica na węgiel
- 2024-05-09 Dla Kfiata i Olina tzw. prawo międzynarodowe