Safe API Framework
Layered API framework for safety-related applications (ERTMS RBC reference targeting CENELEC EN 50128 SIL 4)
Loading...
Searching...
No Matches
sapi_cast.h
Go to the documentation of this file.
1
32#ifndef SAFEAPI_COMMON_CAST_H
33#define SAFEAPI_COMMON_CAST_H
34
37
38#ifdef __cplusplus
39extern "C" {
40#endif
41
51sapi_status_t sapi_cast_i8_to_i16(int8_t in, int16_t *out);
52
62sapi_status_t sapi_cast_i8_to_i32(int8_t in, int32_t *out);
63
73sapi_status_t sapi_cast_i8_to_i64(int8_t in, int64_t *out);
74
84sapi_status_t sapi_cast_i8_to_u8(int8_t in, uint8_t *out);
85
95sapi_status_t sapi_cast_i8_to_u16(int8_t in, uint16_t *out);
96
106sapi_status_t sapi_cast_i8_to_u32(int8_t in, uint32_t *out);
107
117sapi_status_t sapi_cast_i8_to_u64(int8_t in, uint64_t *out);
118
128sapi_status_t sapi_cast_i8_to_size(int8_t in, size_t *out);
129
139sapi_status_t sapi_cast_i16_to_i8(int16_t in, int8_t *out);
140
150sapi_status_t sapi_cast_i16_to_i32(int16_t in, int32_t *out);
151
161sapi_status_t sapi_cast_i16_to_i64(int16_t in, int64_t *out);
162
172sapi_status_t sapi_cast_i16_to_u8(int16_t in, uint8_t *out);
173
183sapi_status_t sapi_cast_i16_to_u16(int16_t in, uint16_t *out);
184
194sapi_status_t sapi_cast_i16_to_u32(int16_t in, uint32_t *out);
195
205sapi_status_t sapi_cast_i16_to_u64(int16_t in, uint64_t *out);
206
216sapi_status_t sapi_cast_i16_to_size(int16_t in, size_t *out);
217
227sapi_status_t sapi_cast_i32_to_i8(int32_t in, int8_t *out);
228
238sapi_status_t sapi_cast_i32_to_i16(int32_t in, int16_t *out);
239
249sapi_status_t sapi_cast_i32_to_i64(int32_t in, int64_t *out);
250
260sapi_status_t sapi_cast_i32_to_u8(int32_t in, uint8_t *out);
261
271sapi_status_t sapi_cast_i32_to_u16(int32_t in, uint16_t *out);
272
282sapi_status_t sapi_cast_i32_to_u32(int32_t in, uint32_t *out);
283
293sapi_status_t sapi_cast_i32_to_u64(int32_t in, uint64_t *out);
294
304sapi_status_t sapi_cast_i32_to_size(int32_t in, size_t *out);
305
315sapi_status_t sapi_cast_i64_to_i8(int64_t in, int8_t *out);
316
326sapi_status_t sapi_cast_i64_to_i16(int64_t in, int16_t *out);
327
337sapi_status_t sapi_cast_i64_to_i32(int64_t in, int32_t *out);
338
348sapi_status_t sapi_cast_i64_to_u8(int64_t in, uint8_t *out);
349
359sapi_status_t sapi_cast_i64_to_u16(int64_t in, uint16_t *out);
360
370sapi_status_t sapi_cast_i64_to_u32(int64_t in, uint32_t *out);
371
381sapi_status_t sapi_cast_i64_to_u64(int64_t in, uint64_t *out);
382
392sapi_status_t sapi_cast_i64_to_size(int64_t in, size_t *out);
393
403sapi_status_t sapi_cast_u8_to_i8(uint8_t in, int8_t *out);
404
414sapi_status_t sapi_cast_u8_to_i16(uint8_t in, int16_t *out);
415
425sapi_status_t sapi_cast_u8_to_i32(uint8_t in, int32_t *out);
426
436sapi_status_t sapi_cast_u8_to_i64(uint8_t in, int64_t *out);
437
447sapi_status_t sapi_cast_u8_to_u16(uint8_t in, uint16_t *out);
448
458sapi_status_t sapi_cast_u8_to_u32(uint8_t in, uint32_t *out);
459
469sapi_status_t sapi_cast_u8_to_u64(uint8_t in, uint64_t *out);
470
480sapi_status_t sapi_cast_u8_to_size(uint8_t in, size_t *out);
481
491sapi_status_t sapi_cast_u16_to_i8(uint16_t in, int8_t *out);
492
502sapi_status_t sapi_cast_u16_to_i16(uint16_t in, int16_t *out);
503
513sapi_status_t sapi_cast_u16_to_i32(uint16_t in, int32_t *out);
514
524sapi_status_t sapi_cast_u16_to_i64(uint16_t in, int64_t *out);
525
535sapi_status_t sapi_cast_u16_to_u8(uint16_t in, uint8_t *out);
536
546sapi_status_t sapi_cast_u16_to_u32(uint16_t in, uint32_t *out);
547
557sapi_status_t sapi_cast_u16_to_u64(uint16_t in, uint64_t *out);
558
568sapi_status_t sapi_cast_u16_to_size(uint16_t in, size_t *out);
569
579sapi_status_t sapi_cast_u32_to_i8(uint32_t in, int8_t *out);
580
590sapi_status_t sapi_cast_u32_to_i16(uint32_t in, int16_t *out);
591
601sapi_status_t sapi_cast_u32_to_i32(uint32_t in, int32_t *out);
602
612sapi_status_t sapi_cast_u32_to_i64(uint32_t in, int64_t *out);
613
623sapi_status_t sapi_cast_u32_to_u8(uint32_t in, uint8_t *out);
624
634sapi_status_t sapi_cast_u32_to_u16(uint32_t in, uint16_t *out);
635
645sapi_status_t sapi_cast_u32_to_u64(uint32_t in, uint64_t *out);
646
656sapi_status_t sapi_cast_u32_to_size(uint32_t in, size_t *out);
657
667sapi_status_t sapi_cast_u64_to_i8(uint64_t in, int8_t *out);
668
678sapi_status_t sapi_cast_u64_to_i16(uint64_t in, int16_t *out);
679
689sapi_status_t sapi_cast_u64_to_i32(uint64_t in, int32_t *out);
690
700sapi_status_t sapi_cast_u64_to_i64(uint64_t in, int64_t *out);
701
711sapi_status_t sapi_cast_u64_to_u8(uint64_t in, uint8_t *out);
712
722sapi_status_t sapi_cast_u64_to_u16(uint64_t in, uint16_t *out);
723
733sapi_status_t sapi_cast_u64_to_u32(uint64_t in, uint32_t *out);
734
744sapi_status_t sapi_cast_u64_to_size(uint64_t in, size_t *out);
745
755sapi_status_t sapi_cast_size_to_i8(size_t in, int8_t *out);
756
766sapi_status_t sapi_cast_size_to_i16(size_t in, int16_t *out);
767
777sapi_status_t sapi_cast_size_to_i32(size_t in, int32_t *out);
778
788sapi_status_t sapi_cast_size_to_i64(size_t in, int64_t *out);
789
799sapi_status_t sapi_cast_size_to_u8(size_t in, uint8_t *out);
800
810sapi_status_t sapi_cast_size_to_u16(size_t in, uint16_t *out);
811
821sapi_status_t sapi_cast_size_to_u32(size_t in, uint32_t *out);
822
832sapi_status_t sapi_cast_size_to_u64(size_t in, uint64_t *out);
833
843sapi_status_t sapi_cast_checked_add_u32(uint32_t a, uint32_t b, uint32_t *out);
844
854sapi_status_t sapi_cast_checked_sub_u32(uint32_t a, uint32_t b, uint32_t *out);
855
865sapi_status_t sapi_cast_checked_mul_u32(uint32_t a, uint32_t b, uint32_t *out);
866
876sapi_status_t sapi_cast_checked_add_size(size_t a, size_t b, size_t *out);
877
887sapi_status_t sapi_cast_checked_sub_size(size_t a, size_t b, size_t *out);
888
898sapi_status_t sapi_cast_checked_mul_size(size_t a, size_t b, size_t *out);
899
911sapi_status_t sapi_cast_bounds_check(size_t index, size_t count);
912
913#ifdef __cplusplus
914}
915#endif
916
917#endif /* SAFEAPI_COMMON_CAST_H */
918 /* CAST */
sapi_status_t sapi_cast_u8_to_u32(uint8_t in, uint32_t *out)
Checked cast from uint8_t to uint32_t.
Definition sapi_cast.c:590
sapi_status_t sapi_cast_i16_to_u32(int16_t in, uint32_t *out)
Checked cast from int16_t to uint32_t.
Definition sapi_cast.c:197
sapi_status_t sapi_cast_i8_to_size(int8_t in, size_t *out)
Checked cast from int8_t to size_t.
Definition sapi_cast.c:103
sapi_status_t sapi_cast_u8_to_i8(uint8_t in, int8_t *out)
Checked cast from uint8_t to int8_t.
Definition sapi_cast.c:535
sapi_status_t sapi_cast_i16_to_size(int16_t in, size_t *out)
Checked cast from int16_t to size_t.
Definition sapi_cast.c:227
sapi_status_t sapi_cast_u32_to_size(uint32_t in, size_t *out)
Checked cast from uint32_t to size_t.
Definition sapi_cast.c:828
sapi_status_t sapi_cast_i16_to_u64(int16_t in, uint64_t *out)
Checked cast from int16_t to uint64_t.
Definition sapi_cast.c:212
sapi_status_t sapi_cast_u64_to_u8(uint64_t in, uint8_t *out)
Checked cast from uint64_t to uint8_t.
Definition sapi_cast.c:907
sapi_status_t sapi_cast_checked_sub_u32(uint32_t a, uint32_t b, uint32_t *out)
Checked subtraction: *out = a - b, only if b <= a (no underflow).
Definition sapi_cast.c:1115
sapi_status_t sapi_cast_checked_mul_size(size_t a, size_t b, size_t *out)
Checked multiplication: *out = a * b, only if the result fits size_t.
Definition sapi_cast.c:1183
sapi_status_t sapi_cast_size_to_u8(size_t in, uint8_t *out)
Checked cast from size_t to uint8_t.
Definition sapi_cast.c:1035
sapi_status_t sapi_cast_u8_to_i32(uint8_t in, int32_t *out)
Checked cast from uint8_t to int32_t.
Definition sapi_cast.c:560
sapi_status_t sapi_cast_size_to_u32(size_t in, uint32_t *out)
Checked cast from size_t to uint32_t.
Definition sapi_cast.c:1067
sapi_status_t sapi_cast_bounds_check(size_t index, size_t count)
Checked array/index bounds check: is index a valid index into an array of count elements?
Definition sapi_cast.c:1199
sapi_status_t sapi_cast_size_to_i8(size_t in, int8_t *out)
Checked cast from size_t to int8_t.
Definition sapi_cast.c:971
sapi_status_t sapi_cast_i64_to_u32(int64_t in, uint32_t *out)
Checked cast from int64_t to uint32_t.
Definition sapi_cast.c:480
sapi_status_t sapi_cast_u32_to_i16(uint32_t in, int16_t *out)
Checked cast from uint32_t to int16_t.
Definition sapi_cast.c:748
sapi_status_t sapi_cast_u16_to_u64(uint16_t in, uint64_t *out)
Checked cast from uint16_t to uint64_t.
Definition sapi_cast.c:704
sapi_status_t sapi_cast_u8_to_size(uint8_t in, size_t *out)
Checked cast from uint8_t to size_t.
Definition sapi_cast.c:610
sapi_status_t sapi_cast_u64_to_i16(uint64_t in, int16_t *out)
Checked cast from uint64_t to int16_t.
Definition sapi_cast.c:862
sapi_status_t sapi_cast_i32_to_u16(int32_t in, uint16_t *out)
Checked cast from int32_t to uint16_t.
Definition sapi_cast.c:315
sapi_status_t sapi_cast_u8_to_u16(uint8_t in, uint16_t *out)
Checked cast from uint8_t to uint16_t.
Definition sapi_cast.c:580
sapi_status_t sapi_cast_u32_to_i64(uint32_t in, int64_t *out)
Checked cast from uint32_t to int64_t.
Definition sapi_cast.c:778
sapi_status_t sapi_cast_u16_to_size(uint16_t in, size_t *out)
Checked cast from uint16_t to size_t.
Definition sapi_cast.c:714
sapi_status_t sapi_cast_i16_to_i64(int16_t in, int64_t *out)
Checked cast from int16_t to int64_t.
Definition sapi_cast.c:153
sapi_status_t sapi_cast_u64_to_u16(uint64_t in, uint16_t *out)
Checked cast from uint64_t to uint16_t.
Definition sapi_cast.c:922
sapi_status_t sapi_cast_u8_to_i16(uint8_t in, int16_t *out)
Checked cast from uint8_t to int16_t.
Definition sapi_cast.c:550
sapi_status_t sapi_cast_i8_to_i32(int8_t in, int32_t *out)
Checked cast from int8_t to int32_t.
Definition sapi_cast.c:23
sapi_status_t sapi_cast_size_to_i16(size_t in, int16_t *out)
Checked cast from size_t to int16_t.
Definition sapi_cast.c:987
sapi_status_t sapi_cast_u64_to_i64(uint64_t in, int64_t *out)
Checked cast from uint64_t to int64_t.
Definition sapi_cast.c:892
sapi_status_t sapi_cast_i64_to_i16(int64_t in, int16_t *out)
Checked cast from int64_t to int16_t.
Definition sapi_cast.c:404
sapi_status_t sapi_cast_i8_to_i16(int8_t in, int16_t *out)
Checked cast from int8_t to int16_t.
Definition sapi_cast.c:13
sapi_status_t sapi_cast_i32_to_u8(int32_t in, uint8_t *out)
Checked cast from int32_t to uint8_t.
Definition sapi_cast.c:296
sapi_status_t sapi_cast_size_to_u16(size_t in, uint16_t *out)
Checked cast from size_t to uint16_t.
Definition sapi_cast.c:1051
sapi_status_t sapi_cast_u8_to_u64(uint8_t in, uint64_t *out)
Checked cast from uint8_t to uint64_t.
Definition sapi_cast.c:600
sapi_status_t sapi_cast_u32_to_i8(uint32_t in, int8_t *out)
Checked cast from uint32_t to int8_t.
Definition sapi_cast.c:733
sapi_status_t sapi_cast_size_to_u64(size_t in, uint64_t *out)
Checked cast from size_t to uint64_t.
Definition sapi_cast.c:1083
sapi_status_t sapi_cast_u16_to_u32(uint16_t in, uint32_t *out)
Checked cast from uint16_t to uint32_t.
Definition sapi_cast.c:694
sapi_status_t sapi_cast_i64_to_i8(int64_t in, int8_t *out)
Checked cast from int64_t to int8_t.
Definition sapi_cast.c:385
sapi_status_t sapi_cast_u64_to_size(uint64_t in, size_t *out)
Checked cast from uint64_t to size_t.
Definition sapi_cast.c:952
sapi_status_t sapi_cast_u16_to_i32(uint16_t in, int32_t *out)
Checked cast from uint16_t to int32_t.
Definition sapi_cast.c:659
sapi_status_t sapi_cast_u32_to_i32(uint32_t in, int32_t *out)
Checked cast from uint32_t to int32_t.
Definition sapi_cast.c:763
sapi_status_t sapi_cast_i8_to_u16(int8_t in, uint16_t *out)
Checked cast from int8_t to uint16_t.
Definition sapi_cast.c:58
sapi_status_t sapi_cast_u32_to_u8(uint32_t in, uint8_t *out)
Checked cast from uint32_t to uint8_t.
Definition sapi_cast.c:788
sapi_status_t sapi_cast_checked_add_size(size_t a, size_t b, size_t *out)
Checked addition: *out = a + b, only if the result fits size_t.
Definition sapi_cast.c:1148
sapi_status_t sapi_cast_u16_to_i64(uint16_t in, int64_t *out)
Checked cast from uint16_t to int64_t.
Definition sapi_cast.c:669
sapi_status_t sapi_cast_i16_to_u16(int16_t in, uint16_t *out)
Checked cast from int16_t to uint16_t.
Definition sapi_cast.c:182
sapi_status_t sapi_cast_u16_to_u8(uint16_t in, uint8_t *out)
Checked cast from uint16_t to uint8_t.
Definition sapi_cast.c:679
sapi_status_t sapi_cast_u32_to_u16(uint32_t in, uint16_t *out)
Checked cast from uint32_t to uint16_t.
Definition sapi_cast.c:803
sapi_status_t sapi_cast_i64_to_u64(int64_t in, uint64_t *out)
Checked cast from int64_t to uint64_t.
Definition sapi_cast.c:499
sapi_status_t sapi_cast_i32_to_i16(int32_t in, int16_t *out)
Checked cast from int32_t to int16_t.
Definition sapi_cast.c:267
sapi_status_t sapi_cast_u64_to_u32(uint64_t in, uint32_t *out)
Checked cast from uint64_t to uint32_t.
Definition sapi_cast.c:937
sapi_status_t sapi_cast_i64_to_u16(int64_t in, uint16_t *out)
Checked cast from int64_t to uint16_t.
Definition sapi_cast.c:461
sapi_status_t sapi_cast_i8_to_u32(int8_t in, uint32_t *out)
Checked cast from int8_t to uint32_t.
Definition sapi_cast.c:73
sapi_status_t sapi_cast_i64_to_i32(int64_t in, int32_t *out)
Checked cast from int64_t to int32_t.
Definition sapi_cast.c:423
sapi_status_t sapi_cast_size_to_i32(size_t in, int32_t *out)
Checked cast from size_t to int32_t.
Definition sapi_cast.c:1003
sapi_status_t sapi_cast_i16_to_u8(int16_t in, uint8_t *out)
Checked cast from int16_t to uint8_t.
Definition sapi_cast.c:163
sapi_status_t sapi_cast_i32_to_i64(int32_t in, int64_t *out)
Checked cast from int32_t to int64_t.
Definition sapi_cast.c:286
sapi_status_t sapi_cast_i16_to_i8(int16_t in, int8_t *out)
Checked cast from int16_t to int8_t.
Definition sapi_cast.c:124
sapi_status_t sapi_cast_u16_to_i8(uint16_t in, int8_t *out)
Checked cast from uint16_t to int8_t.
Definition sapi_cast.c:629
sapi_status_t sapi_cast_i32_to_u64(int32_t in, uint64_t *out)
Checked cast from int32_t to uint64_t.
Definition sapi_cast.c:349
sapi_status_t sapi_cast_u8_to_i64(uint8_t in, int64_t *out)
Checked cast from uint8_t to int64_t.
Definition sapi_cast.c:570
sapi_status_t sapi_cast_size_to_i64(size_t in, int64_t *out)
Checked cast from size_t to int64_t.
Definition sapi_cast.c:1019
sapi_status_t sapi_cast_i8_to_u64(int8_t in, uint64_t *out)
Checked cast from int8_t to uint64_t.
Definition sapi_cast.c:88
sapi_status_t sapi_cast_i8_to_i64(int8_t in, int64_t *out)
Checked cast from int8_t to int64_t.
Definition sapi_cast.c:33
sapi_status_t sapi_cast_u64_to_i8(uint64_t in, int8_t *out)
Checked cast from uint64_t to int8_t.
Definition sapi_cast.c:847
sapi_status_t sapi_cast_i64_to_size(int64_t in, size_t *out)
Checked cast from int64_t to size_t.
Definition sapi_cast.c:514
sapi_status_t sapi_cast_checked_add_u32(uint32_t a, uint32_t b, uint32_t *out)
Checked addition: *out = a + b, only if the result fits uint32_t.
Definition sapi_cast.c:1094
sapi_status_t sapi_cast_checked_mul_u32(uint32_t a, uint32_t b, uint32_t *out)
Checked multiplication: *out = a * b, only if the result fits uint32_t.
Definition sapi_cast.c:1131
sapi_status_t sapi_cast_i32_to_size(int32_t in, size_t *out)
Checked cast from int32_t to size_t.
Definition sapi_cast.c:364
sapi_status_t sapi_cast_u16_to_i16(uint16_t in, int16_t *out)
Checked cast from uint16_t to int16_t.
Definition sapi_cast.c:644
sapi_status_t sapi_cast_u32_to_u64(uint32_t in, uint64_t *out)
Checked cast from uint32_t to uint64_t.
Definition sapi_cast.c:818
sapi_status_t sapi_cast_u64_to_i32(uint64_t in, int32_t *out)
Checked cast from uint64_t to int32_t.
Definition sapi_cast.c:877
sapi_status_t sapi_cast_i64_to_u8(int64_t in, uint8_t *out)
Checked cast from int64_t to uint8_t.
Definition sapi_cast.c:442
sapi_status_t sapi_cast_i32_to_u32(int32_t in, uint32_t *out)
Checked cast from int32_t to uint32_t.
Definition sapi_cast.c:334
sapi_status_t sapi_cast_i16_to_i32(int16_t in, int32_t *out)
Checked cast from int16_t to int32_t.
Definition sapi_cast.c:143
sapi_status_t sapi_cast_i32_to_i8(int32_t in, int8_t *out)
Checked cast from int32_t to int8_t.
Definition sapi_cast.c:248
sapi_status_t sapi_cast_checked_sub_size(size_t a, size_t b, size_t *out)
Checked subtraction: *out = a - b, only if b <= a (no underflow).
Definition sapi_cast.c:1167
sapi_status_t sapi_cast_i8_to_u8(int8_t in, uint8_t *out)
Checked cast from int8_t to uint8_t.
Definition sapi_cast.c:43
sapi_status_t
Common result/status codes.
Definition sapi_status.h:27
Common status/error codes returned by every Safe API Framework function. Shared across all OS Abstrac...
Common fixed-width types and the caller-owned-storage handle pattern used by every OAL service (see A...