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
26 void 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
66 int seqnum_is_newer(uint32_t a, uint32_t b)
67{
68 return (uint32_t)(a - b) < (uint32_t)(UINT32_MAX / 2U);
69}
70
80 int 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}
seqnum_in_window
int seqnum_in_window(uint32_t seq, uint32_t base, uint16_t window_size)
通番 seq がウィンドウ [base, base + window_size) に含まれるか判定します。
Definition seqnum.c:80
seqnum_next
uint32_t seqnum_next(uint32_t *seq)
通番を 1 進めて次の値を返します。
Definition seqnum.c:45
seqnum_is_newer
int seqnum_is_newer(uint32_t a, uint32_t b)
通番 a が通番 b より新しいかどうかを判定します。
Definition seqnum.c:66
seqnum_init
void seqnum_init(uint32_t *seq, uint32_t initial)
通番を初期化します。
Definition seqnum.c:26
seqnum.h
通番管理モジュールの内部ヘッダー。