top of page

Menedżer plików – mem-file.cx

Zaktualizowano: 15 lip 2022

Menedżer plików obsługuje zarówno losowe jak i strumieniowe czytanie i zapisywanie do pliku. Przechowuje on w pamięci podręcznej dotychczas odczytaną zawartość pliku i w regularnych odstępach czasowych zapisuje do pliku zmienioną zawartość. Zawartość pliku jest czytana blokami o rozmiarze i wyrównanymi do adresu strony pamięci.

Menedżer plików jest modułem eksperymentalnym, tzn. nie został do końca przetestowany.

Plik posiada pozycję, od której będzie dokonywany odczyt lub zapis danych. Po każdym odczycie lub zapisie danych pozycja ta jest przesuwana na koniec tych odczytanych lub zapisanych danych. W każdej chwili pozycję tę można odczytać lub ustawić procedurami:

N
E_mem_Q_file_R_pos( I id
);
N
E_mem_Q_file_P_pos( I id
, N pos
);

Obiekt otwartego pliku tworzymy i wyrzucamy procedurami:

I
E_mem_Q_file_M( Pc path
, B readonly
, mode_t create_mode
);
N
E_mem_Q_file_W( I id
);

Procedura E_mem_Q_file_M posiada dodatkowy parametr informujacy, czy otworzyć plik w trybie tylko do odczytu (wtedy procedury zapisu danych nie mogą być używane), oraz kolejny, czy utworzyć plik i z jakimi prawami dostępu (jeśli różny od 0).

Z pliku można czytać i do niego zapisywać: bajt danych, ciąg bajtów, liczbę N16, N32, N64. Można te dane odczytać, zapisać na bieżącej pozycji w pliku oraz można je wstawić. Można też usuwać ciąg bajtów od bieżącej pozycji.

Ponadto menedżer plików posiada początki obsługi UTF-8: pozwala odczytać z pliku następny znak Unicode w tym kodowaniu.

Do pomocy przy parsowaniu plików UTF-8 służą procedury czytające ciąg znaków aż do wystąpienia jednego z podanych albo aż do niewystąpienia takowego:

N
E_mem_Q_file_R_u_upto( I id
, Pc upto
, Pc *s
);
N
E_mem_Q_file_R_u_upto_0( I id
, Pc *s
);
N
E_mem_Q_file_R_u_outof( I id
, Pc outof
, Pc *s
);
N
E_mem_Q_file_R_u_outof_0( I id
, N *l
, U *u
);

Tworzą one w wyniku i przypisują zmiennej s nowo przydzielony blok pamięci zawierający odczytany ciąg znaków UTF-8 łącznie ze znakiem, który przerwał wykonywanie procedury, znajdującym się na końcu. Trzeba ten ciąg znaków po użyciu usunąć instrukcją W(s).

Wszystkie procedury dostępne do użycia znajdują się w pliku mem-file.cx.

20 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