Document of c-modernization-kit (porter) 1.0.0
Loading...
Searching...
No Matches
seqnum.c
Go to the documentation of this file.
1
13
14#include <stddef.h>
15#include <stdint.h>
16
17#include "seqnum.h"
18
26void seqnum_init(uint32_t *seq, uint32_t initial)
27{
28 if (seq == NULL)
29 {
30 return;
31 }
32 *seq = initial;
33}
34
45uint32_t seqnum_next(uint32_t *seq)
46{
47 if (seq == NULL)
48 {
49 return 0;
50 }
51 return ++(*seq);
52}
53
66int seqnum_is_newer(uint32_t a, uint32_t b)
67{
68 return (uint32_t)(a - b) < (uint32_t)(UINT32_MAX / 2U);
69}
70
80int seqnum_in_window(uint32_t seq, uint32_t base, uint16_t window_size)
81{
82 return (uint32_t)(seq - base) < (uint32_t)window_size;
83}
int seqnum_in_window(uint32_t seq, uint32_t base, uint16_t window_size)
通番 seq がウィンドウ [base, base + window_size) に含まれるか判定します。
Definition seqnum.c:80
uint32_t seqnum_next(uint32_t *seq)
通番を 1 進めて次の値を返します。
Definition seqnum.c:45
int seqnum_is_newer(uint32_t a, uint32_t b)
通番 a が通番 b より新しいかどうかを判定します。
Definition seqnum.c:66
void seqnum_init(uint32_t *seq, uint32_t initial)
通番を初期化します。
Definition seqnum.c:26
通番管理モジュールの内部ヘッダー。