Glib のようなクロスプラットフォーム C ライブラリ
プロジェクトを支援する
スポンサーになってこのプロジェクトを支援してください。あなたのロゴが Web サイトへのリンクとともにここに表示されます。 【スポンサーになる】
はじめに (中文)
TBOX は、Glib のようなクロスプラットフォーム C ライブラリであり、使い方が簡単でありながら本質的に強力です。
このプロジェクトは、C 開発を容易にすることに焦点を当てており、多くのモジュール (ストリーム、コルーチン、正規表現、コンテナ、アルゴリズムなど) を提供しているため、開発者はすぐにそれを習得でき、C 言語で開発する際の生産性の向上を享受できます。
次のプラットフォームをサポートしています: Windows、Macosx、Linux、Android、iOS、*BSD など。
また、xmake を使用した多くのコンパイル オプションが提供されます。
- リリース: デバッグ情報、アサーション、メモリ チェックを無効にし、最適化を有効にします。
- デバッグ: デバッグ情報、アサーション、メモリ チェックを有効にし、最適化を無効にします。
- Small: すべての拡張モジュールを無効にし、スペースの最適化を有効にします。
- Micro: 埋め込みシステム用のマイクロ ライブラリ (~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を実装します
- Cookieを実装します
- ipv4、ipv6をサポート
- コルーチンをサポート
プラットフォームライブラリ
- タイマーを実装、高速かつ低精度のタイマー
- アトミックおよびアトミック64操作を実装します。
- スピンロック、ミューテックス、イベント、セマフォ、スレッド、スレッド プールを実装します。
- ファイル、ソケット操作を実装します。
- epoll、pol、select、kqueue ...を使用してポーラーを実装します。
- コルーチンのスイッチコンテキストインターフェイスを実装します。
文字セットライブラリ
- utf8、utf16、gbk、gb2312、uc2、uc4 をサポート
- ビッグエンディアンモードとリトルエンディアンモードをサポート
zip ライブラリ
- 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 を使用するいくつかのプロジェクト:
- ジーボックス
- vm86
- エックスメイク
- イトレース
- もっと
ビルド(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
- コミュニティ:/r/tboox on reddit
- ChatRoom:テレグラムでチャット、gitterでチャット
- QQグループ: 343118190(フル)、662147501
- Wechatパブリック: tboox-os