glib와 유사한 크로스 플랫폼 C 라이브러리
프로젝트 지원
후원자가 되어 이 프로젝트를 지원하세요. 귀하의 로고가 귀하의 웹사이트 링크와 함께 여기에 표시됩니다. [후원자가 되세요]
소개(중문)
TBOX는 사용이 간편하면서도 본질적으로 강력한 glib 형태의 크로스 플랫폼 C 라이브러리입니다.
이 프로젝트는 C 개발을 더 쉽게 만드는 데 중점을 두고 있으며 많은 모듈(예: 스트림, 코루틴, 정규 표현식, 컨테이너, 알고리즘 ...)을 제공하므로 모든 개발자는 C 언어로 개발할 때 신속하게 이를 선택하고 생산성 향상을 누릴 수 있습니다.
Windows, Macosx, Linux, Android, iOS, *BSD 등의 플랫폼을 지원합니다.
그리고 xmake를 사용하여 다양한 컴파일 옵션을 제공합니다.
- 릴리스: 디버그 정보, 어설션, 메모리 검사를 비활성화하고 최적화를 활성화합니다.
- 디버그: 디버그 정보, 어설션, 메모리 검사를 활성화하고 최적화를 비활성화합니다.
- 소형: 모든 확장 모듈을 비활성화하고 공간 최적화를 활성화합니다.
- 마이크로: 임베디드 시스템을 위한 마이크로 라이브러리(~64K)를 컴파일합니다.
더 알고 싶다면 문서, Github 및 Gitee를 참조하세요.
특징
스트림 라이브러리
- 파일, 데이터, http 및 소켓 소스 지원
- gzip, charset 및...에 대한 스트림 필터를 지원합니다.
- 스트림 전송 구현
- 데이터 구문 분석을 위한 정적 버퍼 스트림 구현
- 코루틴을 지원하고 비동기 작업을 구현합니다.
코루틴 라이브러리
- 고성능 코루틴 스위치 제공
- arm, arm64, x86, x86_64 지원 ..
- 채널 인터페이스 제공
- 세마포어 및 잠금 인터페이스 제공
- 코루틴에서 io 소켓 및 스트림 작업 지원
- 코루틴을 사용하여 일부 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 구현
- 쿠키 구현
- IPv4, IPv6 지원
- 코루틴 지원
플랫폼 라이브러리
- 타이머, 빠르고 낮은 정밀도 타이머 구현
- Atomic 및 Atomic64 작업을 구현합니다.
- 스핀록, 뮤텍스, 이벤트, 세마포어, 스레드 및 스레드 풀 구현
- 파일, 소켓 작업 구현
- epoll, poll, select, kqueue를 사용하여 폴러를 구현합니다.
- 코루틴에 대한 스위치 컨텍스트 인터페이스를 구현합니다.
문자셋 라이브러리
- utf8, utf16, gbk, gb2312, uc2 및 uc4 지원
- 빅 엔디안 및 리틀 엔디안 모드 지원
우편 라이브러리
- 존재하는 경우 zlib 라이브러리를 사용하여 gzip, zlibraw, 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를 사용하는 일부 프로젝트:
빌드(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
- 커뮤니티: reddit의 /r/tboox
- ChatRoom: 텔레그램 채팅, Gitter 채팅
- QQ 그룹: 343118190(전체), 662147501
- 위챗 공개: tboox-os