|
libgadu
1.12.2
|
Bufor wspierający obsługę pakietów typu Type-Value(s) Więcej...
Struktury danych | |
| struct | gg_tvbuff |
Bufor wspierający obsługę pakietów typu Type-Value(s)
| gg_tvbuff_t* gg_tvbuff_new | ( | const char * | buffer, |
| size_t | length | ||
| ) |
Tworzy nową instancję bufora.
| buffer | Bufor źródłowy; nie może być modyfikowany (w szczególności zwalniany) przez cały okres korzystania z jego opakowanej wersji. |
| length | Długość bufora źródłowego. |
| int gg_tvbuff_close | ( | gg_tvbuff_t * | tvb | ) |
Zwalnia opakowanie bufora. Przed zwolnieniem sprawdza, czy przeczytano go do końca.
| tvb | Bufor. |
| int gg_tvbuff_is_valid | ( | const gg_tvbuff_t * | tvb | ) |
Sprawdza, czy wszystkie odczyty z bufora były prawidłowe.
| tvb | Bufor. |
| size_t gg_tvbuff_get_remaining | ( | const gg_tvbuff_t * | tvb | ) |
Zwraca pozostałą do odczytania liczbę bajtów w buforze.
| tvb | Bufor. |
| int gg_tvbuff_have_remaining | ( | gg_tvbuff_t * | tvb, |
| size_t | length | ||
| ) |
Sprawdza, czy w buforze pozostała określona liczba bajtów do odczytania. Jeżeli nie została - oznacza bufor jako nieprawidłowy.
| tvb | Bufor. |
| length | Ilość bajtów do odczytania. |
| void gg_tvbuff_skip | ( | gg_tvbuff_t * | tvb, |
| size_t | amount | ||
| ) |
Pomija określoną liczbę bajtów w buforze. Jeżeli w wyniku ich pominięcia wyjdzie poza zakres, oznacza bufor jako nieprawidłowy.
| tvb | Bufor |
| amount | Liczba bajtów do pominięcia |
| void gg_tvbuff_rewind | ( | gg_tvbuff_t * | tvb, |
| size_t | amount | ||
| ) |
Cofa się o określoną liczbę bajtów w buforze. Jeżeli cofnie przed pierwszy znak, oznacza bufor jako nieprawidłowy.
| tvb | Bufor |
| amount | Liczba bajtów do cofnięcia |
| int gg_tvbuff_match | ( | gg_tvbuff_t * | tvb, |
| uint8_t | value | ||
| ) |
Sprawdza, czy pod aktualną pozycją w buforze występuje podana wartość. Jeżeli tak, przesuwa aktualną pozycję do przodu.
| tvb | Bufor. |
| value | Wartość do sprawdzenia |
| uint8_t gg_tvbuff_read_uint8 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 8-bitową.
| tvb | Bufor |
| uint32_t gg_tvbuff_read_uint32 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 32-bitową.
| tvb | Bufor |
| uint64_t gg_tvbuff_read_uint64 | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora liczbę 64-bitową.
| tvb | Bufor |
| uint64_t gg_tvbuff_read_packed_uint | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora skompresowaną liczbę całkowitą. Liczba taka może być zapisana w buforze na 1-9 bajtach, w zależności od jej wartości.
Skompresowana liczba jest zapisywana od najmłodszego bajtu do najstarszego niezerowego. W każdym bajcie zapisuje się bit sterujący (równy 0, jeżeli jest to ostatni bajt do przeczytania, lub 1 w p.p.) oraz 7 kolejnych bitów z kompresowanej liczby.
Przykładowo, liczby mniejsze od 128 (1000.0000b) są zapisywane dokładnie tak, jak uint8_t; a np. 12345 (0011.0000.0011.1001b) zostanie zapisana jako 0x60B9 (0110.0000.1011.1001b).
| tvb | Bufor. |
| const char* gg_tvbuff_read_buff | ( | gg_tvbuff_t * | tvb, |
| size_t | length | ||
| ) |
Odczytuje z bufora podciąg bez kopiowania danych.
| tvb | Bufor źródłowy |
| length | Ilość bajtów do odczytania |
| void gg_tvbuff_read_buff_cpy | ( | gg_tvbuff_t * | tvb, |
| char * | buffer, | ||
| size_t | length | ||
| ) |
Odczytuje z bufora podciąg kopiując go do nowego obszaru pamięci.
| tvb | Bufor źródłowy |
| buffer | Bufor docelowy |
| length | Ilość bajtów do odczytania |
| const char* gg_tvbuff_read_str | ( | gg_tvbuff_t * | tvb, |
| size_t * | length | ||
| ) |
Odczytuje z bufora ciąg tekstowy (mogący zawierać dowolne znaki, również \0) bez kopiowania danych.
| tvb | Bufor źródłowy |
| length | Zmienna, do której zostanie zapisana długość odczytanego ciągu |
| void gg_tvbuff_read_str_dup | ( | gg_tvbuff_t * | tvb, |
| char ** | dst | ||
| ) |
Odczytuje z bufora ciąg tekstowy (mogący zawierać dowolne znaki, również \0) kopiując go do nowego obszaru pamięci. Zwrócony ciąg będzie zawsze zakończony znakiem \0.
| tvb | Bufor źródłowy |
| dst | Zmienna, do której zostanie zapisany wskaźnik na odczytany ciąg. Po użyciu, blok ten powinien zostać zwolniony za pomocą free() |
| uin_t gg_tvbuff_read_uin | ( | gg_tvbuff_t * | tvb | ) |
Odczytuje z bufora identyfikator użytkownika.
| tvb | Bufor |
| void gg_tvbuff_expected_uint8 | ( | gg_tvbuff_t * | tvb, |
| uint8_t | value | ||
| ) |
Odczytuje z bufora liczbę 8-bitową i porównuje z podaną. Jeżeli te się różnią, zostaje wygenerowane ostrzeżenie.
| tvb | Bufor |
| value | Oczekiwana wartość |
| void gg_tvbuff_expected_uint32 | ( | gg_tvbuff_t * | tvb, |
| uint32_t | value | ||
| ) |
Odczytuje z bufora liczbę 32-bitową i porównuje z podaną. Jeżeli te się różnią, zostaje wygenerowane ostrzeżenie.
| tvb | Bufor |
| value | Oczekiwana wartość |
| void gg_tvbuff_expected_eob | ( | const gg_tvbuff_t * | tvb | ) |
Oczekuje końca bufora. Jeżeli w buforze są jeszcze dane do przeczytania, generuje ostrzeżenie.
| tvb | Bufor. |
1.8.6