top of page

Początek programowania w OUX / C+

Zaktualizowano: 15 lip 2022

Pierwsze uruchomienie podsystemu OUX

Pobieramy podsystem OUX z zachowaniem połączenia ze źródłem:

git clone https://github.com/overcq/oux.git

Otwieramy Geany i z menu mojego rozszerzenia – project ➪ open directory, a następnie zaznaczamy katalog z podsystemem OUX i klikamy przycisk open.

Geany otworzy wszystkie pliki projektu wskazane w pliku ".autoopen-text" znajdującym się w katalogu projektu. Otwarte zostaną pliki przynależne do trzech modułów: base, x_window_hi_cpu i x_window_lo_cpu. Na końcu zostanie otwarty plik main.cx przynależny do testowego programu "gui".

Uruchamiamy z menu mojego rozszerzenia make ➪ run i czekamy dłuższą chwilę, obserwując komunikaty wypisywane w dolnym panelu Geany. Na karcie Status w tym panelu jest wypisywany tylko komunikat o rozpoczęciu i zakończeniu procesu, tzn. "spawn: make run" i "spawn finished". Na karcie Messages są wypisywane w pojedynczych liniach komunikaty o ostrzeżeniach i błędach z kompilatora. Na karcie Compiler są wypisywane pełne komunikaty kompilatora.

make ➪ run najpierw kompiluje projekt, a następnie go uruchamia. Kompilacja projektu rozpoczyna się od zbudowania bazy danych wywołań systemowych twojego systemu operacyjnego i przypisania każdemu z nich wymaganych dla niego plików nagłówkowych C. Następnym razem, gdy będziemy uruchamiać projekt, zbudowana baza danych zostanie wykorzystana od razu, nie będzie trzeba czekać tak długo na jej budowanie, chyba że usuniemy ją poleceniem menu mojego rozszerzenia make ➪ distclean.


Organizacja struktury podkatalogów podsystemu OUX

W katalogu podsystemu OUX znajdują się trzy podstawowe katalogi:

  • compile, w którym są pliki związane z kompilacją

  • module, w którym są katalogi modułów podsystemu OUX

  • program, w którym są pisane programy

Jeśli chcemy utworzyć nowy program, to należy utworzyć podkatalog w katalogu program i utworzyć w nim łącze do pliku Makefile z któregokolwiek obecnego już podkatalogu innego programu, czyli w utworzonym podkatalogu wydać polecenie:

ln ../[nazwa_innego_podkatalogu]/Makefile .

Obecnie programy, z wyjątkiem programu "gui", są tworzone do pracy w systemie Linux, w szczególności Gentoo Linux, ale nic nie stoi na przeszkodzie, by utworzyć program do innego systemu uniksopodobnego.


Przykładowe programy

Program "gui"

Program ten demonstruje podstawowe możliwości modułu x_window_hi_cpu lub x_window_lo_cpu (w zależności od konfiguracji programu).

Obiekty graficzne są automatycznie układane w oknie, zgodnie z hierarchią tych obiektów.

Obiekty mogą być przeciągane z okna, po upuszczeniu tylko są usuwane, ale można sprawdzić funkcjonowanie mechanizmu przeciągnij i upuść. Obiekty animowane podczas przeciągania są rysowane pod wskaźnikiem ekranu, jeśli były animowane (tak jak na przykład zegar), to nadal są animowane.

Pola edycji tekstu pozwalają po kliknięciu w nich zmieniać tekst.

Pola wyświetlania tekstu rysują tekst w formacie UTF-8 przy użyciu wewnętrznie zdefiniowanej czcionki.

A całość wykorzystuje najmniej możliwie czasu procesora.


Program bieżący integrator systemowy

Program ten składa się z serwera uruchamiania akcji pulpitu i klienta wysyłającego do niego żądania.

Program ten został sprawdzony w moim systemie i służy mi do zwykłej pracy: otwiera pliki z menedżera plików ROX-Filer (https://github.com/overcq/rox-filer) i uruchamia polecenia z menu menedżera okien Fluxbox (http://fluxbox.org/).


Plik main.cx i podstawy programu

Plik w języku C+ ma rozszerzenie nazwy: ".cx". Plik main.cx zawiera procedurę główną wykonywanego programu, która ma postać:

int
main(
  int argc
, Pc argv[]
){  E_base_M( argc, argv );

    E_base_W();
    return 0;
}

Na początku zawartości tej procedury jest wywołanie utworzenia (zainicjowania) modułu base, a na końcu jego wyrzucenia. Mogą być też wywołania utworzenia innych modułów.

Nie trzeba (i nie powinno się) wstawiać plików nagłówkowych używanych procedur dyrektywą preprocesora #include, ponieważ jest to zapewniane przez środowisko kompilacji podsystemu OUX.

Ponadto plik main.cx musi zawierać procedurę komunikacji z procesem:

void
E_flow_Q_process_call_I_func( P data
){
}

Ostatecznie możemy wypisać "Hello World" w następujący sposób - oto zawartość main.cx:

int
main(
  int argc
, Pc argv[]
){  E_base_M( argc, argv );
    G_(); Gs0_( "Hello World" );
    E_base_W();
    return 0;
}
void
E_flow_Q_process_call_I_func( P data
){
}

Chociaż nie jest to typowy, najprostszy program w języku C+, który ma dużo większe możliwości.

Ostatnie posty

Zobacz wszystkie
Klient HTTP/1.1 i HTTP/2

Do modułu “base” dodałem podstawową obsługę klienta HTTP/1.1 i HTTP/2, korzystając z szyfrowania TLS zapewnianego przez OpenSSL....

 
 
 

Comentários


©2024 by technologia OUX / język C+. Stworzone przy pomocy Wix.com

bottom of page