top of page

Obiektowość ogólna w technologii OUX / języku C+

Zaktualizowano: 16 mar 2022

Moduły i pliki

Moduły podsystemu OUX to zbiór plików w podkatalogu katalogu module, np. base.

Pliki te mają nazwy zawartego w nich realizatora (sterownika lub menedżera obiektów), np. flow-drv.cx, mem-blk.cx, text.cx.

Pierwsza część nazwy określa moduł języka C+, który jest czymś mniejszym od modułu podsystemu OUX, a druga część nazwy – przeważnie obiekt tego modułu. W powyższych przykładach: moduły flow, mem i text oraz oznaczenie sterownika drv i obiektu blk. Na końcu jest rozszerzenie nazwy .cx oznaczające plik w języku C+.


Nazwy definicji języka C+

Został wymyślony ogólny format nazywania definicji języka C+, np. obiektów, zmiennych, procedur. Ma on następującą formę:

  1. wielka litera reprezentująca typ następującej nazwy

  2. znak podkreślenia

  3. nazwa definicji małymi literami

Na przykład:

E_mem

Takie formy są ze sobą sklejane kolejno rozdzielone znakiem podkreślenia, tworząc pełną nazwę w obiektowości ogólnej języka C+.

E_mem_Q_blk

Ponadto można też na końcu umieścić wielką literę reprezentującą typ bez nazwy, na przykład:

E_mem_Q_blk_M

Powyższy zapis oznacza moduł (E) mem, obiekt (Q) blk, utworzenie (M), więc procedura tak nazwana jest tzw. z innych języków programowania kreatorem obiektu blk (block) przynależnego do modułu mem (memory), czyli jest alokatorem pamięci.

Takie tworzenie nazw definicji nie ogranicza języka żadną wbudowaną hierarchią obiektów, a zawiera w sobie szybki do zrozumienia opis przeznaczenia.

Stąd wszystkie tak nazwane obiekty są definiowane w przestrzeni globalnej, natomiast wewnątrz procedury do definiowania zmiennych wystarczy używać samych nazw definicji.


Podstawowe definicje obiektów

Obiekty (oznaczone literą Q) mogą mieć procedurę tworzenia oznaczoną literą M, procedurę wyrzucenia – literą W, odczyt właściwości – literą R, zapis właściwości – literą P, definicję zmiennej – literą S, definicję typu zmiennej – literą Z, procedurę wytworzenia formy czegoś stratnie względem obiektu – literą N, procedurę innej funkcji – literą I. Na przykład:

Pc
E_mem_Q_blk_M( N l
){ //Procedura utworzenia bloku pamięci.
}
P
E_mem_Q_blk_M_tab(
  N u
, N n
){ //Procedura utworzenia tablicy bloków pamięci.
}
void
E_mem_Q_blk_W( Pc p
){ //Procedura wyrzucenia bloku pamięci.
}
I
E_mem_Q_tab_R_n( struct E_mem_Q_tab_Z *tab
){ //Procedura odczytania liczby elementów tablicy.
}
P
E_mem_Q_tab_R( struct E_mem_Q_tab_Z *tab
, I id
){ //Procedura odczytania wskaźnika do elementu tablicy.
}
B
E_io_Q_stream_out_P( I id
, Pc s
, N l
){ //Procedura wypisania tekstu do strumienia wyjścia.
}
B
E_io_Q_stream_out_P_c( I id
, C c
){ //Procedura wypisania wartości C do strumienia wyjścia.
}
struct E_base_Z
{
} *E_base_S;
struct E_mem_Z_range
{
};
struct E_mem_Q_tab_Z
{
};
Pc
E_text_Z_n_N_s( Pc s_end
, N n
, N l
, N base
){ //Procedura przekształcenia wartości N na tekst.
}
P
E_mem_Q_blk_I_add( P p
, N n
, N *n_prepended
, N *n_appended
){ //Procedura powiększenia rozmiaru już przydzielonego bloku pamięci.
}

Jest również litera G do oznaczenia procedury wstępnego przepływu wykonania, na przykład do sprawdzenia, ile bajtów będzie potrzebne do wypisania liczby jako tekst:


N
E_text_Z_n_N_s_G( N n
, N l
, N base
){
}
Pc
E_text_Z_n_N_s( Pc s_end
, N n
, N l
, N base
){
}

Bardziej szczegółowy opis znajduje się na stronie Wiki projektu.

61 wyświetleń0 komentarzy

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. Procedura inicjująca połączenie automatycznie negocjuje najwyższy możli

Duże liczby jakby zmiennoprzecinkowe – math-bignum.cx

Moduł dużych liczb pozwala przechowywać w postaci dwójkowej liczby większe niż liczba naturalna procesora i przeprowadzać na nich obliczenia. Są to liczby bardzo podobne do liczb zmiennoprzecinkowych.

Parser plików tekstowych – text-syntax.cx

W module “base” jest dostępny parser plików tekstowych kodowanych w UTF-8. Do przetworzenia takiego pliku tekstowego są potrzebne dwa pliki: plik opisu składni (zazwyczaj z rozszerzeniem “.syntax”) w

bottom of page