ランキングに戻る

tboox/tbox

Ctboox.top

🎁 A glib-like multi-platform c library

streamcoroutinesalgorithmcross-platformiteratornetworkjsonxmlplistcontainertboxxmake
スター成長
スター
5.1k
フォーク
754
週間成長
Issue
37
2k4k
2013年10月2018年1月2022年4月2026年7月
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 (xmake)

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

Build (xmake.sh)

$ ./configure
$ make

Example

#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;
}

Technical Support

You can also consider sponsoring us to get technical support services, [Become a sponsor]

Contacts

関連リポジトリ
video-dev/hls.js

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.

TypeScriptnpmOtherhlshtml5
hlsjs.video-dev.org/demo
16.8k2.7k
winterbe/java8-tutorial

Modern Java - A Guide to Java 8

JavaMavenMIT Licensejava-8tutorial
winterbe.com
16.7k4k
BrainJS/brain.js

🤖 GPU accelerated Neural networks in JavaScript for Browsers and Node.js

TypeScriptnpmMIT Licenseneural-networkbrain
brain.js.org
14.9k1.1k
zeromq/libzmq

ZeroMQ core engine in C++, implements ZMTP/3.1

C++Mozilla Public License 2.0zeromqzmq
zeromq.org
10.9k2.5k
node-fetch/node-fetch

A light-weight module that brings the Fetch API to Node.js

JavaScriptnpmMIT Licensefetchhttp
8.9k1.1k
dyc87112/SpringCloud-Learning

Spring Cloud基础教程,持续连载更新中

JavaMavenspring-cloudspring-boot
blog.didispace.com
7.4k2.9k
BililiveRecorder/BililiveRecorder

录播姬 | mikufans 生放送录制

C#GNU General Public License v3.0bilibilibilibili-live
rec.danmuji.org
4.7k393
jimmywarting/StreamSaver.js

StreamSaver writes stream to the filesystem directly asynchronous

JavaScriptnpmMIT Licensestreamservice-worker
jimmywarting.github.io/StreamSaver.js/example.html
4.4k441
svix/svix-webhooks

The open source and enterprise-ready webhooks service 🦀

Rustcrates.ioMIT Licensewebhooksrust
svix.com
3.3k262
timerring/bilive

极快的B站直播录制、自动切片、自动渲染弹幕以及字幕并投稿至B站,综合多种模态模型,兼容超低配置机器。Extremely fast live recording, automatic slicing, rendering, uploading and Integrating MLLMs. Compatible with low configurations machines.

PythonPyPIApache License 2.0bilibilibilive
bilive.timerring.com
3.3k258
nwtgck/piping-server

Infinitely transfer between every device over pure HTTP with pipes or browsers

TypeScriptnpmMIT Licensetransferdata-transfer
3.2k167
pedroSG94/RootEncoder

RootEncoder for Android (rtmp-rtsp-stream-client-java) is a stream encoder to push video/audio to media servers using protocols RTMP, RTSP, SRT and UDP with all code written in Java/Kotlin

KotlinApache License 2.0rtmpandroid
3k926