![]() |
GL CHOCO ENGINE
|
ジェネリック型のリングキューモジュールを提供する More...
#include <stdbool.h>#include <stddef.h>

Go to the source code of this file.
Typedefs | |
| typedef struct ring_queue | ring_queue_t |
| ring_queue_t前方宣言 | |
Enumerations | |
| enum | ring_queue_result_t { RING_QUEUE_SUCCESS = 0 , RING_QUEUE_INVALID_ARGUMENT , RING_QUEUE_NO_MEMORY , RING_QUEUE_RUNTIME_ERROR , RING_QUEUE_UNDEFINED_ERROR , RING_QUEUE_LIMIT_EXCEEDED , RING_QUEUE_DATA_CORRUPTED , RING_QUEUE_OVERFLOW , RING_QUEUE_EMPTY } |
| リングキューAPI実行結果コードリスト More... | |
Functions | |
| ring_queue_result_t | ring_queue_create (size_t max_element_count_, size_t element_size_, size_t element_align_, ring_queue_t **ring_queue_) |
| ring_queue_のメモリを確保し、容量max_element_count_で初期化する | |
| void | ring_queue_destroy (ring_queue_t **ring_queue_) |
| ring_queue_が管理しているメモリと自身のメモリを解放し、*ring_queue_=NULLにする | |
| ring_queue_result_t | ring_queue_push (ring_queue_t *ring_queue_, const void *data_, size_t element_size_, size_t element_align_) |
| ring_queue_にdata_をpushする | |
| ring_queue_result_t | ring_queue_pop (ring_queue_t *ring_queue_, void *data_, size_t element_size_, size_t element_align_) |
| ring_queue_からdata_にデータをpopする | |
| bool | ring_queue_empty (const ring_queue_t *ring_queue_) |
| リングキューが空かを判定する | |
ジェネリック型のリングキューモジュールを提供する
| typedef struct ring_queue ring_queue_t |
ring_queue_t前方宣言
| enum ring_queue_result_t |
リングキューAPI実行結果コードリスト
| ring_queue_result_t ring_queue_create | ( | size_t | max_element_count_, |
| size_t | element_size_, | ||
| size_t | element_align_, | ||
| ring_queue_t ** | ring_queue_ | ||
| ) |
ring_queue_のメモリを確保し、容量max_element_count_で初期化する
使用例:
| [in] | max_element_count_ | 要素を格納可能な最大個数 |
| [in] | element_size_ | 格納する要素のサイズ |
| [in] | element_align_ | 格納する要素のアライメント要件(2のべき乗 かつ max_align_t以下でなければいけない) |
| [out] | ring_queue_ | 初期化対象構造体インスタンスへのダブルポインタ |
| RING_QUEUE_INVALID_ARGUMENT | 以下のいずれか
|
| RING_QUEUE_OVERFLOW | 処理過程でオーバーフローが発生 |
| RING_QUEUE_NO_MEMORY | メモリ不足によりメモリ確保失敗 |
| RING_QUEUE_LIMIT_EXCEEDED | メモリ管理システムのリソースがシステム使用可能範囲上限を超過 |
| RING_QUEUE_SUCCESS | 初期化に成功し、正常終了 |
| void ring_queue_destroy | ( | ring_queue_t ** | ring_queue_ | ) |
ring_queue_が管理しているメモリと自身のメモリを解放し、*ring_queue_=NULLにする
使用例:
| ring_queue_ | メモリ破棄対象構造体インスタンスへのダブルポインタ |
| bool ring_queue_empty | ( | const ring_queue_t * | ring_queue_ | ) |
リングキューが空かを判定する
使用例:
| ring_queue_ | 判定対象リングキュー |
| ring_queue_result_t ring_queue_pop | ( | ring_queue_t * | ring_queue_, |
| void * | data_, | ||
| size_t | element_size_, | ||
| size_t | element_align_ | ||
| ) |
ring_queue_からdata_にデータをpopする
使用例:
| ring_queue_ | データをpopするリングキュー構造体インスタンスへのポインタ |
| data_ | popしたデータの格納先アドレス |
| element_size_ | 格納データサイズ(create時と異なる型ではないかをチェックするため) |
| element_align_ | 格納データアライメント要件(create時と異なる型ではないかをチェックするため) |
| RING_QUEUE_INVALID_ARGUMENT | 以下のいずれか
|
| RING_QUEUE_EMPTY | ring_queueが空 |
| RING_QUEUE_SUCCESS | データの取得に成功し、正常終了 |
| ring_queue_result_t ring_queue_push | ( | ring_queue_t * | ring_queue_, |
| const void * | data_, | ||
| size_t | element_size_, | ||
| size_t | element_align_ | ||
| ) |
ring_queue_にdata_をpushする
使用例:
| ring_queue_ | データをpushするリングキュー構造体インスタンスへのポインタ |
| data_ | 格納データへのポインタ |
| element_size_ | 格納データサイズ(create時と異なる型ではないかをチェックするため) |
| element_align_ | 格納データアライメント要件(create時と異なる型ではないかをチェックするため) |
| RING_QUEUE_INVALID_ARGUMENT | 以下のいずれか
|
| RING_QUEUE_SUCCESS | データの格納に成功し、正常終了(キューが満杯で古いデータを捨てて新しいデータを格納した場合でも成功となる) |