Uma biblioteca C multiplataforma semelhante a lib
Apoiando o projeto
Apoie este projeto tornando-se um patrocinador. Seu logotipo aparecerá aqui com um link para seu site. [Torne-se um patrocinador]
Introdução (中文)
TBOX é uma biblioteca C de plataforma cruzada, simples de usar, mas poderosa por natureza.
O projeto se concentra em facilitar o desenvolvimento em C e oferece diversos módulos (por exemplo, stream, corrotina, regex, contêiner, algoritmo ...), para que qualquer desenvolvedor possa aprendê-lo rapidamente e aproveitar o aumento de produtividade ao desenvolver em linguagem C.
Suporta as seguintes plataformas: Windows, Macosx, Linux, Android, iOS, *BSD e etc.
E fornece muitas opções de compilação usando xmake:
- Liberação: Desativa informações de depuração, asserção, verificação de memória e habilita otimização.
- Depurar: Habilite informações de depuração, asserção, verificação de memória e desabilite a otimização.
- Pequeno: Desative todos os módulos de extensão e ative a otimização de espaço.
- Micro: compilando microbiblioteca (~64K) para o sistema incorporado.
Se quiser saber mais, consulte: Documentos, Github e Gitee
Características
A biblioteca de fluxo
- Suporta arquivo, dados, http e fonte de soquete
- Suporta o filtro de fluxo para gzip, charset e...
- Implementa transferência de fluxo
- Implementa o fluxo de buffer estático para análise de dados
- Suporta corrotina e implementa operação assíncrona
A biblioteca de corrotinas
- Fornece comutação de rotina de alto desempenho
- Suporta braço, arm64, x86, x86_64..
- Fornece interfaces de canal
- Fornece interfaces de semáforo e bloqueio
- Suporta operação de soquete io e stream em corrotina
- Fornece alguns servidores io (http ..) usando corrotina
- Fornece corrotinas stackfull e stackless
- Suporta epoll, kqueue, poll, select e IOCP
- Suporte para esperar pipe, soquete e processo em corrotina e poller ao mesmo tempo
A biblioteca de banco de dados
- Suporta banco de dados mysql e sqlite3 e enumera dados usando o modo iterador
A biblioteca do analisador XML
- Suporta modo DOM e SAX e suporta xpath
A biblioteca de serialização e desserialização
- Suporta formatos xml, json, bplist, xplist e binários
A biblioteca de memória
- Implementa alguns pools de memória para otimizar a memória
- Suporta detecção rápida de erros de memória. ele pode detectar os seguintes tipos de bugs para o modo de depuração:
- acessos fora dos limites para heap e globais
- use-após-livre
- livre duplo, livre inválido
- vazamentos de memória
A biblioteca de contêineres
- Implementa tabela hash, lista única, lista dupla, vetor, pilha, fila e heap mínimo/máximo. Suporta modo iterador para algoritmo
A biblioteca de algoritmos
- Usa o modo iterador
- Implementa algoritmo de localização, localização binária e localização reversa
- Implementa algoritmo de classificação, classificação por bolha, classificação rápida, classificação por heap e classificação por inserção
- Implementa contagem, itens de caminhada, itens de caminhada reversa, for_all e rfor_all
A biblioteca da rede
- Implementa DNS (em cache)
- Implementa SSL (openssl, polarssl, mbedtls)
- Implementa http
- Implementa cookies
- Suporta ipv4, ipv6
- Suporta corrotina
A biblioteca da plataforma
- Implementa temporizador, temporizador rápido e de baixa precisão
- Implementa operação atômica e atomic64
- Implementa spinlock, mutex, evento, semáforo, thread e pool de threads
- Implementa operação de arquivo e soquete
- Implementa poller usando epoll, poll, select, kqueue ...
- Implementa interfaces de contexto de comutação para corrotina
A biblioteca de conjuntos de caracteres
- Suporta utf8, utf16, gbk, gb2312, uc2 e uc4
- Suporta modo big endian e little endian
A biblioteca zip
- Suporta formatos gzip, zlibraw, zlib usando a biblioteca zlib, se existir
- Implementa algoritmo lzsw, lz77 e rlc
A biblioteca de utilitários
- Implementa codificador e decodificador base32, base64
- Implementa saída de assert e trace para o modo de depuração
- Implementa operação de bits para análise de dados u8, u16, u32, u64
A biblioteca matemática
- Implementa gerador aleatório
- Implementa cálculo rápido de ponto fixo, suporta número de ponto fixo de 6 bits, 16 bits e 30 bits
A biblioteca libc
- Implementa interfaces leves da biblioteca libc, o nome da interface contém o prefixo
tb_xxx
para evitar conflitos - Implementa extensão de interface strixxx strrxxx wcsixxx wcsrxxx
- Otimiza algumas interfaces usadas com frequência, por exemplo, memset, memcpy, strcpy ...
- Implementa interfaces de extensão
memset_u16
, memset_u32
, memset_u64
A biblioteca libm
- Implementa interfaces leves da biblioteca libm, o nome da interface contém o prefixo
tb_xxx
para evitar conflitos - Suporta float e tipo duplo
A biblioteca regex
- Suporta correspondência e substituição
- Suporta modo global/multilinha/sem caixa
- Usa módulos pcre, pcre2 e posix regex
A biblioteca hash
- Implementa algoritmo de hash crc32, adler32, md5 e sha1
- Implementa alguns algoritmos de hash de string (.por exemplo, bkdr, fnv32, fnv64, sdbm, djb2, rshash, aphash ...)
- Implementa gerador uuid
Projetos
Alguns projetos usando tbox:
- gbox
- vm86
- xmake
- itrace
- mais
Construir (xmake)
Instale o xmake primeiro: 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
Construir (xmake.sh)
Exemplo
#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 ;
}
Suporte Técnico
Você também pode considerar nos patrocinar para obter serviços de suporte técnico, [Torne-se um patrocinador]
Contatos
- E-mail: [email protected]
- Página inicial: tboox.org
- Comunidade:/r/tboox no reddit
- ChatRoom: Bate-papo no telegrama, Bate-papo no gitter
- Grupo QQ: 343118190 (completo), 662147501
- Wechat Público: tboox-os