libgadu  1.12.2
Definicje typów | Funkcje
Dokumentacja pliku tvbuff.h
Wykres zależności załączania dla tvbuff.h:
Ten wykres pokazuje, które pliki bezpośrednio lub pośrednio załączają ten plik:

Definicje typów

typedef struct gg_tvbuff gg_tvbuff_t
 

Funkcje

gg_tvbuff_tgg_tvbuff_new (const char *buffer, size_t length)
 
int gg_tvbuff_close (gg_tvbuff_t *tvb)
 
int gg_tvbuff_is_valid (const gg_tvbuff_t *tvb)
 
size_t gg_tvbuff_get_remaining (const gg_tvbuff_t *tvb)
 
int gg_tvbuff_have_remaining (gg_tvbuff_t *tvb, size_t length)
 
void gg_tvbuff_skip (gg_tvbuff_t *tvb, size_t amount)
 
void gg_tvbuff_rewind (gg_tvbuff_t *tvb, size_t amount)
 
int gg_tvbuff_match (gg_tvbuff_t *tvb, uint8_t value)
 
uint8_t gg_tvbuff_read_uint8 (gg_tvbuff_t *tvb)
 
uint32_t gg_tvbuff_read_uint32 (gg_tvbuff_t *tvb)
 
uint64_t gg_tvbuff_read_uint64 (gg_tvbuff_t *tvb)
 
uint64_t gg_tvbuff_read_packed_uint (gg_tvbuff_t *tvb)
 
const char * gg_tvbuff_read_buff (gg_tvbuff_t *tvb, size_t length)
 
void gg_tvbuff_read_buff_cpy (gg_tvbuff_t *tvb, char *buffer, size_t length)
 
const char * gg_tvbuff_read_str (gg_tvbuff_t *tvb, size_t *length)
 
void gg_tvbuff_read_str_dup (gg_tvbuff_t *tvb, char **dst)
 
uin_t gg_tvbuff_read_uin (gg_tvbuff_t *tvb)
 
void gg_tvbuff_expected_uint8 (gg_tvbuff_t *tvb, uint8_t value)
 
void gg_tvbuff_expected_uint32 (gg_tvbuff_t *tvb, uint32_t value)
 
void gg_tvbuff_expected_eob (const gg_tvbuff_t *tvb)
 

Dokumentacja definicji typów

◆ gg_tvbuff_t

typedef struct gg_tvbuff gg_tvbuff_t

Dokumentacja funkcji

◆ gg_tvbuff_new()

gg_tvbuff_t* gg_tvbuff_new ( const char *  buffer,
size_t  length 
)

Tworzy nową instancję bufora.

Parametry
bufferBufor źródłowy; nie może być modyfikowany (w szczególności zwalniany) przez cały okres korzystania z jego opakowanej wersji.
lengthDługość bufora źródłowego.
Zwraca
Zaalokowane opakowanie bufora - musi być zwolnione przez free lub gg_tvbuff_close.

◆ gg_tvbuff_close()

int gg_tvbuff_close ( gg_tvbuff_t tvb)

Zwalnia opakowanie bufora. Przed zwolnieniem sprawdza, czy przeczytano go do końca.

Parametry
tvbBufor.
Zwraca
Wartość różna od 0, jeżeli bufor tuż przed zwolnieniem był oznaczony jako prawidłowy

◆ gg_tvbuff_is_valid()

int gg_tvbuff_is_valid ( const gg_tvbuff_t tvb)

Sprawdza, czy wszystkie odczyty z bufora były prawidłowe.

Parametry
tvbBufor.
Zwraca
Wartość różna od 0, jeżeli wszystkie odczyty były prawidłowe.

◆ gg_tvbuff_get_remaining()

size_t gg_tvbuff_get_remaining ( const gg_tvbuff_t tvb)

Zwraca pozostałą do odczytania liczbę bajtów w buforze.

Parametry
tvbBufor.
Zwraca
Pozostała liczba bajtów do odczytania.

◆ gg_tvbuff_have_remaining()

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.

Parametry
tvbBufor.
lengthIlość bajtów do odczytania.
Zwraca
Wartość różna od 0, jeżeli można odczytać podaną liczbę bajtów.

◆ gg_tvbuff_skip()

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.

Parametry
tvbBufor
amountLiczba bajtów do pominięcia

◆ gg_tvbuff_rewind()

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.

Parametry
tvbBufor
amountLiczba bajtów do cofnięcia

◆ gg_tvbuff_match()

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.

Parametry
tvbBufor.
valueWartość do sprawdzenia
Zwraca
Wartość różna od 0, jeżeli znaleziono podaną wartość.

◆ gg_tvbuff_read_uint8()

uint8_t gg_tvbuff_read_uint8 ( gg_tvbuff_t tvb)

Odczytuje z bufora liczbę 8-bitową.

Parametry
tvbBufor
Zwraca
Odczytana liczba

◆ gg_tvbuff_read_uint32()

uint32_t gg_tvbuff_read_uint32 ( gg_tvbuff_t tvb)

Odczytuje z bufora liczbę 32-bitową.

Parametry
tvbBufor
Zwraca
Odczytana liczba

◆ gg_tvbuff_read_uint64()

uint64_t gg_tvbuff_read_uint64 ( gg_tvbuff_t tvb)

Odczytuje z bufora liczbę 64-bitową.

Parametry
tvbBufor
Zwraca
Odczytana liczba

◆ gg_tvbuff_read_packed_uint()

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).

Parametry
tvbBufor.
Zwraca
Odczytana liczba.

◆ gg_tvbuff_read_buff()

const char* gg_tvbuff_read_buff ( gg_tvbuff_t tvb,
size_t  length 
)

Odczytuje z bufora podciąg bez kopiowania danych.

Parametry
tvbBufor źródłowy
lengthIlość bajtów do odczytania
Zwraca
Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

◆ gg_tvbuff_read_buff_cpy()

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.

Parametry
tvbBufor źródłowy
bufferBufor docelowy
lengthIlość bajtów do odczytania

◆ gg_tvbuff_read_str()

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.

Parametry
tvbBufor źródłowy
lengthZmienna, do której zostanie zapisana długość odczytanego ciągu
Zwraca
Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

◆ gg_tvbuff_read_str_dup()

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.

Parametry
tvbBufor źródłowy
dstZmienna, do której zostanie zapisany wskaźnik na odczytany ciąg. Po użyciu, blok ten powinien zostać zwolniony za pomocą free()
Zwraca
Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

◆ gg_tvbuff_read_uin()

uin_t gg_tvbuff_read_uin ( gg_tvbuff_t tvb)

Odczytuje z bufora identyfikator użytkownika.

Parametry
tvbBufor
Zwraca
Identyfikator użytkownika, lub 0 w przypadku niepowodzenia

◆ gg_tvbuff_expected_uint8()

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.

Parametry
tvbBufor
valueOczekiwana wartość

◆ gg_tvbuff_expected_uint32()

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.

Parametry
tvbBufor
valueOczekiwana wartość

◆ gg_tvbuff_expected_eob()

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.

Parametry
tvbBufor.