TBOX is a multi-platform c library for unix, windows, mac, ios, android, etc. It's made available under the Apache License 2.0.
TBOX includes asio, stream, network, container, algorithm, object, memory, database, string, charset, math, libc, libm, utils and other library modules.
The stream io library
supports file, data, http and socket source
supports the stream filter for gzip charset and .. implements the multi-stream transfer using asio
The asynchronous io library
supports reactor and proactor mode
using epoll, poll, select, kqueue and iocp os system api
The database library
supports mysql and sqlite3 database and enumerates data using the iterator mode
The xml parser library
supports DOM and SAX mode and supports xpath.
The serialization and deserialization library. supports xml, json, bplist, xplist, binary formats
The memory library
implements some memory pools for optimizating memory. supports fast memory error detecting. it can detect the following types of bugs for the debug mode: # out-of-bounds accesses to heap and globals # use-after-free # double-free, invalid free # memory leaks
The container library
implements hash table, single list, double list, vector, stack, queue and min/max heap. supports iterator mode for algorithm.
The algorithm library
using the iterator mode
implements find, binary find and reverse find algorithm. implements sort, bubble sort, quick sort, heap sort and insert sort algorithm. implements count, walk items, reverse walk items, for_all and rfor_all.
The network library
implements dns(cached), ssl(openssl and polarssl), http and cookies
supports asynchronous io mode for dns, ssl and http using the asio and stream library
The platform library
implements timer, faster and lower precision timer
implements atomic and atomic64 operation
implements spinlock, mutex, event, semaphore, thread and thread pool
implements file, socket operation
The charset library
supports utf8, utf16, gbk, gb2312, uc2 and uc4
supports big endian and little endian mode
The zip library
supports gzip, zlibraw, zlib formats using the zlib library if exists
implements lzsw, lz77 and rlc algorithm
The utils library
implements base32, base64, md5 and sha algorithm
implements assert and trace output for the debug mode
The math library
implements random generator
implements fast fixed-point calculation, supports 6-bits, 16-bits, 30-bits fixed-point number
The libc library
implements lightweight libc library interfaces, the interface name contains tb_xxx prefix for avoiding conflict. implements strixxx strrxxx wcsixxx wcsrxxx interface extension. optimizates some frequently-used interface, .e.g. memset, memcpy, strcpy ... implements memset_u16, memset_u32, memset_u64 extension interfaces.
The libm library
implements lightweight libm library interfaces, the interface name contains tb_xxx prefix for avoiding conflict. supports float and double type.