Кроссплатформенная библиотека C, подобная glib.
Поддержка проекта
Поддержите этот проект, став спонсором. Здесь появится ваш логотип со ссылкой на ваш сайт. [Стать спонсором]
Введение (中文)
TBOX — это кроссплатформенная библиотека C, подобная glib, которая проста в использовании, но мощна по своей природе.
Проект направлен на упрощение разработки на C и предоставляет множество модулей (например, поток, сопрограмму, регулярное выражение, контейнер, алгоритм...), так что любой разработчик может быстро освоить их и насладиться повышением производительности при разработке на языке C.
Он поддерживает следующие платформы: Windows, Macosx, Linux, Android, iOS, *BSD и т. д.
И он предоставляет множество вариантов компиляции с использованием xmake:
- Релиз: отключить отладочную информацию, утверждения, проверку памяти и включить оптимизацию.
- Отладка: включение отладочной информации, утверждений, проверки памяти и отключение оптимизации.
- Маленький: отключите все дополнительные модули и включите оптимизацию пространства.
- Микро: компиляция микробиблиотеки (~64 КБ) для системы встраивания.
Если вы хотите узнать больше, обратитесь к: Документы, Github и Gitee.
Функции
Библиотека потоков
- Поддерживает файлы, данные, http и источник сокетов.
- Поддерживает фильтр потока для gzip, кодировки и...
- Реализует потоковую передачу
- Реализует поток статического буфера для анализа данных.
- Поддерживает сопрограммы и реализует асинхронную работу.
Библиотека сопрограмм
- Обеспечивает высокопроизводительный переключатель сопрограмм.
- Поддерживает руку, руку64, x86, x86_64 ..
- Предоставляет интерфейсы каналов
- Предоставляет интерфейсы семафора и блокировки.
- Поддерживает операции сокета io и потока в сопрограмме
- Предоставляет некоторые серверы ввода-вывода (http ..) с использованием сопрограммы.
- Предоставляет стековые и бесстековые сопрограммы.
- Поддержка epoll, kqueue, poll, select и IOCP
- Поддержка одновременного ожидания канала, сокета и процесса в сопрограмме и опросчике.
Библиотека базы данных
- Поддерживает базы данных mysql и sqlite3 и перечисляет данные в режиме итератора.
Библиотека парсера xml
- Поддерживает режимы DOM и SAX и поддерживает xpath.
Библиотека сериализации и десериализации
- Поддерживает xml, json, bplist, xplist, двоичные форматы.
Библиотека памяти
- Реализует некоторые пулы памяти для оптимизации памяти.
- Поддерживает быстрое обнаружение ошибок памяти. он может обнаруживать следующие типы ошибок в режиме отладки:
- внешний доступ к куче и глобальным объектам
- использовать после бесплатного использования
- двойное бесплатное, недействительное бесплатное
- утечки памяти
Библиотека контейнеров
- Реализует хеш-таблицу, одиночный список, двойной список, вектор, стек, очередь и минимальную/максимальную кучу. Поддерживает режим итератора для алгоритма
Библиотека алгоритмов
- Использует режим итератора
- Реализует алгоритм поиска, двоичного поиска и обратного поиска.
- Реализует сортировку, пузырьковую сортировку, быструю сортировку, сортировку кучей и алгоритм сортировки вставкой.
- Реализует счетчик, элементы обхода, элементы обратного обхода, for_all и rfor_all.
Сетевая библиотека
- Реализует DNS (кэшированный)
- Реализует SSL (openssl, Polarssl, mbedtls)
- Реализует http
- Реализует файлы cookie
- Поддерживает ipv4, ipv6.
- Поддерживает сопрограмму
Библиотека платформы
- Реализует таймер, быстрый и таймер низкой точности.
- Реализует операции атомарности и атомарности64.
- Реализует спин-блокировку, мьютекс, событие, семафор, поток и пул потоков.
- Реализует работу с файлами и сокетами
- Реализует опросчик с использованием epoll, poll, select, kqueue...
- Реализует интерфейсы переключения контекста для сопрограммы
Библиотека кодировок
- Поддерживает utf8, utf16, gbk, gb2312, uc2 и uc4.
- Поддерживает режимы с прямым порядком байтов и прямым порядком байтов.
zip-библиотека
- Поддерживает форматы gzip, zlibraw, zlib с использованием библиотеки zlib, если она существует.
- Реализует алгоритмы lzsw, lz77 и rlc.
Библиотека утилит
- Реализует кодировщик и декодер Base32, Base64.
- Реализует вывод утверждений и трассировки для режима отладки.
- Реализует битовую операцию для анализа данных u8, u16, u32, u64.
Математическая библиотека
- Реализует генератор случайных чисел
- Реализует быстрый расчет с фиксированной запятой. Поддерживает 6-битные, 16-битные и 30-битные числа с фиксированной запятой.
Библиотека libc
- Реализует облегченные интерфейсы библиотеки libc, имя интерфейса содержит префикс
tb_xxx
для предотвращения конфликтов. - Реализует расширение интерфейса strixxx strrxxx wcsixxx wcsrxxx.
- Оптимизирует некоторые часто используемые интерфейсы, например memset, memcpy, strcpy...
- Реализует интерфейсы расширения
memset_u16
, memset_u32
, memset_u64
Библиотека libm
- Реализует облегченные интерфейсы библиотеки libm, имя интерфейса содержит префикс
tb_xxx
для предотвращения конфликтов. - Поддерживает тип float и double.
Библиотека регулярных выражений
- Поддерживает сопоставление и замену
- Поддерживает глобальный/многострочный/безрегистровый режим.
- Использует модули регулярных выражений pcre, pcre2 и posix.
Хэш-библиотека
- Реализует алгоритм хеширования crc32, adler32, md5 и sha1.
- Реализует некоторые алгоритмы хеширования строк (например, bkdr, fnv32, fnv64, sdbm, djb2, rshash, aphash...)
- Реализует генератор uuid
Проекты
Некоторые проекты, использующие tbox:
- gbox
- вм86
- сделать
- itrace
- более
Сборка (xmake)
Пожалуйста, сначала установите xmake: xmake
# build for the host platform
$ cd ./tbox
$ xmake
# build for the mingw platform
$ cd ./tbox
$ xmake f -p mingw --sdk=/home/mingwsdk
$ xmake
# build for the iphoneos platform
$ cd ./tbox
$ xmake f -p iphoneos
$ xmake
# build for the android platform
$ cd ./tbox
$ xmake f -p android --ndk=xxxxx
$ xmake
# build for the linux cross-platform
$ cd ./tbox
$ xmake f -p linux --sdk=/home/sdk # --bin=/home/sdk/bin
$ xmake
Сборка (xmake.sh)
Пример
#include "tbox/tbox.h"
int main ( int argc , char * * argv ) {
if (! tb_init ( tb_null , tb_null )) return 0 ;
tb_vector_ref_t vector = tb_vector_init ( 0 , tb_element_str ( tb_true ));
if ( vector ) {
tb_vector_insert_tail ( vector , "hello" );
tb_vector_insert_tail ( vector , "tbox" );
tb_for_all ( tb_char_t const * , cstr , vector ) {
tb_trace_i ( "%s" , cstr );
}
tb_vector_exit ( vector );
}
tb_exit ();
return 0 ;
}
Техническая поддержка
Вы также можете рассмотреть возможность спонсирования нас для получения услуг технической поддержки. [Стать спонсором]
Контакты
- Электронная почта: [email protected]
- Домашняя страница: tboox.org
- Сообщество: /r/tboox на Reddit
- Чат: Чат в Telegram, Чат в Gitter
- Группа QQ: 343118190(полный), 662147501
- Публичный Wechat: tboox-os