tbox alternatives and similar libraries
Based on the "Frameworks" category.
Alternatively, view tbox alternatives based on common mentions on social networks and blogs.
-
OpenFrameworks
openFrameworks is a community-developed cross platform toolkit for creative coding in C++. -
JUCE
JUCE is an open-source cross-platform C++ application framework for desktop and mobile applications, including VST, VST3, AU, AUv3, LV2 and AAX audio plug-ins. -
Cinder
Cinder is a community-developed, free and open source library for professional-quality creative coding in C++. -
libPhenom
DISCONTINUED. libPhenom is an eventing framework for building high performance and high scalability systems in C. [Apache2] -
ffead-cpp
Framework for Enterprise Application Development in c++, HTTP1/HTTP2/HTTP3 compliant, Supports multiple server backends -
LibU
LibU is a multiplatform utility library written in C, with APIs for handling memory allocation, networking and URI parsing, string manipulation, debugging, and logging in a very compact way, plus many other miscellaneous tasks -
Loki
Loki is a C++ library of designs, containing flexible implementations of common design patterns and idioms. -
XPLPC - Cross Platform Lite Procedure Call
Cross Platform Lite Procedure Call - Support Linux, macOS, Windows, iOS, Android, Web Assembly, Flutter, Kotlin, Python and More -
Windows Template Library
A C++ library for developing Windows applications and UI components. [Public] -
GLib
GLib provides the core application building blocks for libraries and applications written in C. [LGPL] -
ROOT
A set of OO frameworks with all the functionality needed to handle and analyze large amounts of data in a very efficient way. Used at CERN. [LGPL] -
Reason
A cross platform framework designed to bring the ease of use of Java, .Net, or Python to developers who require the performance and strength of C++. [GPL2] -
Cxxomfort
A small, header-only library that backports to C++03 some of the nifty C++11 goodies. [MIT]
SaaSHub - Software Alternatives and Reviews
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of tbox or a related project?
Popular Comparisons
README
A glib-like cross-platform C library
Supporting the project
Support this project by becoming a sponsor. Your logo will show up here with a link to your website. 🙏 [Become a sponsor]
Introduction (中文)
TBOX is a glib-like cross-platform C library that is simple to use yet powerful in nature.
The project focuses on making C development easier and provides many modules (.e.g stream, coroutine, regex, container, algorithm ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing in C language.
It supports the following platforms: Windows, Macosx, Linux, Android, iOS, *BSD and etc.
And it provides many compiling options using xmake:
- Release: Disable debug information, assertion, memory checking and enable optimization.
- Debug: Enable debug information, assertion, memory checking and disable optimization.
- Small: Disable all extensional modules and enable space optimization.
- Micro: compiling micro library (~64K) for the embed system.
If you want to know more, please refer to: Documents, Github and Gitee
Features
The stream library
- Supports file, data, http and socket source
- Supports the stream filter for gzip, charset and...
- Implements stream transfer
- Implements the static buffer stream for parsing data
- Supports coroutine and implements asynchronous operation
The coroutine library
- Provides high-performance coroutine switch
- Supports arm, arm64, x86, x86_64 ..
- Provides channel interfaces
- Provides semaphore and lock interfaces
- Supports io socket and stream operation in coroutine
- Provides some io servers (http ..) using coroutine
- Provides stackfull and stackless coroutines
- Support epoll, kqueue, poll, select and IOCP
- Support to wait pipe, socket and process in coroutine and poller at same time
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 optimizing 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
- Uses 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)
- Implements ssl(openssl, polarssl, mbedtls)
- Implements http
- Implements cookies
- Supports ipv4, ipv6
- Supports coroutine
The platform library
- Implements timer, fast and low precision timer
- Implements atomic and atomic64 operation
- Implements spinlock, mutex, event, semaphore, thread and thread pool
- Implements file, socket operation
- Implements poller using epoll, poll, select, kqueue ...
- Implements switch context interfaces for coroutine
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 encoder and decoder
- Implements assert and trace output for the debug mode
- Implements bits operation for parsing u8, u16, u32, u64 data
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
- Optimizes 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
The regex library
- Supports match and replace
- Supports global/multiline/caseless mode
- Uses pcre, pcre2 and posix regex modules
The hash library
- Implements crc32, adler32, md5 and sha1 hash algorithm
- Implements some string hash algorithms (.e.g bkdr, fnv32, fnv64, sdbm, djb2, rshash, aphash ...)
- Implements uuid generator
Projects
Some projects using tbox:
Build
Please install xmake first: 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
Example
#include "tbox/tbox.h"
int main(int argc, char** argv)
{
// init tbox
if (!tb_init(tb_null, tb_null)) return 0;
// trace
tb_trace_i("hello tbox");
// init vector
tb_vector_ref_t vector = tb_vector_init(0, tb_element_str(tb_true));
if (vector)
{
// insert item
tb_vector_insert_tail(vector, "hello");
tb_vector_insert_tail(vector, "tbox");
// dump all items
tb_for_all (tb_char_t const*, cstr, vector)
{
// trace
tb_trace_i("%s", cstr);
}
// exit vector
tb_vector_exit(vector);
}
// init stream
tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxx.com/file.txt");
if (stream)
{
// open stream
if (tb_stream_open(stream))
{
// read line
tb_long_t size = 0;
tb_char_t line[TB_STREAM_BLOCK_MAXN];
while ((size = tb_stream_bread_line(stream, line, sizeof(line))) >= 0)
{
// trace
tb_trace_i("line: %s", line);
}
}
// exit stream
tb_stream_exit(stream);
}
// wait
tb_getchar();
// exit tbox
tb_exit();
return 0;
}
Technical Support
You can also consider sponsoring us to get technical support services, [Become a sponsor]
Contacts
- Email:[email protected]
- Homepage:tboox.org
- Community:/r/tboox on reddit
- ChatRoom:Chat on telegram, Chat on gitter
- QQ Group: 343118190(full), 662147501
- Wechat Public: tboox-os
*Note that all licence references and agreements mentioned in the tbox README section above
are relevant to that project's source code only.