libgadu 1.12.2

- Strona główna
- Dodatkowe strony
- Moduły
- Struktury Danych
- Pliki

- Lista plików
- Globalne

Definicje typów | Funkcje
Dokumentacja pliku tvbuff.h

## Definicje typów
typedef struct gg_tvbuff | gg_tvbuff_t

## Funkcje
gg_tvbuff_t * | gg_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

typedef struct gg_tvbuff gg_tvbuff_t

## Dokumentacja funkcji

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

Tworzy nową instancję bufora.

Parametry

  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.

Zwraca
  Zaalokowane opakowanie bufora - musi być zwolnione przez free lub gg_tvbuff_close.

int gg_tvbuff_close | ( | gg_tvbuff_t * | tvb | ) |

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

Parametry

  tvb | Bufor.

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

int gg_tvbuff_is_valid | ( | const gg_tvbuff_t * | tvb | ) |

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

Parametry

  tvb | Bufor.

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

size_t gg_tvbuff_get_remaining | ( | const gg_tvbuff_t * | tvb | ) |

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

Parametry

  tvb | Bufor.

Zwraca
  Pozostała liczba bajtów do odczytania.

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

  tvb | Bufor.
  length | Ilość bajtów do odczytania.

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

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

  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.

Parametry

  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.

Parametry

  tvb | Bufor.
  value | Wartość do sprawdzenia

Zwraca
  Wartość różna od 0, jeżeli znaleziono podaną wartość.

uint8_t gg_tvbuff_read_uint8 | ( | gg_tvbuff_t * | tvb | ) |

Odczytuje z bufora liczbę 8-bitową.

Parametry

  tvb | Bufor

Zwraca
  Odczytana liczba

uint32_t gg_tvbuff_read_uint32 | ( | gg_tvbuff_t * | tvb | ) |

Odczytuje z bufora liczbę 32-bitową.

Parametry

  tvb | Bufor

Zwraca
  Odczytana liczba

uint64_t gg_tvbuff_read_uint64 | ( | gg_tvbuff_t * | tvb | ) |

Odczytuje z bufora liczbę 64-bitową.

Parametry

  tvb | Bufor

Zwraca
  Odczytana liczba

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

  tvb | Bufor.

Zwraca
  Odczytana liczba.

const char* gg_tvbuff_read_buff | ( | gg_tvbuff_t * | tvb,
|  | size_t | length
| ) |  |

Odczytuje z bufora podciąg bez kopiowania danych.

Parametry

  tvb | Bufor źródłowy
  length | Ilość bajtów do odczytania

Zwraca
  Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

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

  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.

Parametry

  tvb | Bufor źródłowy
  length | Zmienna, do której zostanie zapisana długość odczytanego ciągu

Zwraca
  Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

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

  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()`

Zwraca
  Wskaźnik na początek odczytanych danych, lub NULL w przypadku niepowodzenia

uin_t gg_tvbuff_read_uin | ( | gg_tvbuff_t * | tvb | ) |

Odczytuje z bufora identyfikator użytkownika.

Parametry

  tvb | Bufor

Zwraca
  Identyfikator użytkownika, lub 0 w przypadku niepowodzenia

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

  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.

Parametry

  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.

Parametry

  tvb | Bufor.