このページの内容

トピック

 XXH32ファミリー
 XXH64ファミリー
 XXH3ファミリー

マクロ

#define XXH_STATIC_LINKING_ONLY
 静的な割り当てに必要な内部状態の宣言にアクセスできるようにします。
#define XXH_IMPLEMENTATION
 内部定義にアクセスできるようにします。
#define XXH_INLINE_ALL
 実装を公開し、すべての関数を inlineとして指定します。
#define XXH_PRIVATE_API
 関数をinlineとして指定せずに、実装を公開します。
#define XXH_NAMESPACE   /* YOUR NAME HERE */
 すべてのシンボルに透過的に接頭辞を付け、名前空間を模倣します。
#define XXH_CAT(A, B)
#define XXH_NAME2(A, B)
#define XXH_IPREF(Id)
#define XXHASH_H_5627135585666179   1
#define XXH_PUBLIC_API   /* do nothing */
 グローバルシンボルを指定します。
#define XXH_PUBLIC_API   /* do nothing */
 グローバルシンボルを指定します。
#define XXH_CONSTF   /* disable */
#define XXH_PUREF
#define XXH_MALLOCF
#define XXH_VERSION_MAJOR   0
#define XXH_VERSION_MINOR   8
#define XXH_VERSION_RELEASE   4
#define XXH_VERSION_NUMBER   (XXH_VERSION_MAJOR *100*100 + XXH_VERSION_MINOR *100 + XXH_VERSION_RELEASE)
 各要素を2桁で符号化したバージョン番号。

型定義

typedef uint32_t XXH32_hash_t
 符号なし32ビット整数。

列挙型

enum  XXH_errorcode { XXH_OK = 0 , XXH_ERROR }
 ストリーミングAPIの終了コード。 詳細…

関数

unsigned XXH_versionNumber (void)
 xxHashのバージョンを取得します。
typedef uint64_t XXH64_hash_t
 符号なし64ビット整数。

詳細説明

公開されているxxHash関数の詳細を示します。

マクロ定義の説明

◆ XXH_STATIC_LINKING_ONLY

#define XXH_STATIC_LINKING_ONLY

静的な割り当てに必要な内部状態の宣言にアクセスできるようにします。

ABI変更のリスクがあるため、動的リンクとは互換性がありません。

使用例:

#define XXH_STATIC_LINKING_ONLY
#include "xxhash.h"

◆ XXH_IMPLEMENTATION

#define XXH_IMPLEMENTATION

内部定義にアクセスできるようにします。

使用例:

#define XXH_STATIC_LINKING_ONLY
#define XXH_IMPLEMENTATION
#include "xxhash.h"

◆ XXH_INLINE_ALL

#define XXH_INLINE_ALL

実装を公開し、すべての関数を inlineとして指定します。

これらのビルド用マクロを使うと、対象の翻訳単位にxxhashをインライン化できます。インライン化は、小さな入力、特に長さがコンパイル時定数で表される入力で性能を改善します:

https://fastcompression.blogspot.com/2018/03/xxhash-for-small-keys-impressive-power.html

また、xxHashのシンボルをその翻訳単位内に限定し、外部へエクスポートしません。

使用例:

#define XXH_INLINE_ALL
#include "xxhash.h"

xxhash.oを別のオブジェクトとしてコンパイルしてリンクしても役に立たないため、そのようにしないでください。

◆ XXH_NAMESPACE

#define XXH_NAMESPACE   /* YOUR NAME HERE */

すべてのシンボルに透過的に接頭辞を付け、名前空間を模倣します。

自分のライブラリにxxHash関数を組み込み、 外部公開 したい一方で、xxHashを含む可能性のある他のライブラリとのシンボル衝突を避けたい場合は、 XXH_NAMESPACE を使用できます。xxhashライブラリのすべての公開シンボルに、 XXH_NAMESPACE の値を接頭辞として自動的に付けます(そのため、空の値や数値は避けてください)。

呼び出し側のプログラムが xxhash.hをインクルードしている限り、そのプログラムを変更する必要はありません。このヘッダーが通常のシンボル名を自動的に変換します。

◆ XXH_CAT

#define XXH_CAT ( A,
B )
値:
A##B

◆ XXH_NAME2

#define XXH_NAME2 ( A,
B )
値:
XXH_CAT(A,B)

◆ XXH_IPREF

#define XXH_IPREF ( Id)
値:
XXH_NAME2(XXH_NAMESPACE, Id)
#define XXH_NAMESPACE
すべてのシンボルに透過的に接頭辞を付け、名前空間を模倣します。
定義 xxhash.h:322

型定義の説明

◆ XXH32_hash_t

typedef uint32_t XXH32_hash_t

符号なし32ビット整数。

必ずしも uint32_t として定義されるとは限りませんが、機能的には同等です。

◆ XXH64_hash_t

typedef uint64_t XXH64_hash_t

符号なし64ビット整数。

必ずしも uint64_t として定義されるとは限りませんが、機能的には同等です。

列挙型の説明

◆ XXH_errorcode

ストリーミングAPIの終了コード。

列挙子
XXH_OK 

正常

XXH_ERROR 

エラー

関数の説明

◆ XXH_versionNumber()

unsigned XXH_versionNumber ( void )

xxHashのバージョンを取得します。

戻り値はヘッダーファイルではなくライブラリに由来するため、主にxxHashを共有ライブラリとしてコンパイルした場合に役立ちます。

戻り値
XXH_VERSION_NUMBER (呼び出したライブラリの値)。

翻訳補足:コード内の原文コメント/* YOUR NAME HERE */は「ここに自分の名前を指定」、/* do nothing */は「何もしない」、/* disable */は「無効化」を意味します。コードとマクロ値は原文を保持しています。