1#pragma once
2
3/*
4 * Convert PwValue to a C type
5 */
6
7#include <pw_types.h>
8#include <pw_status.h>
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14[[nodiscard]] bool pw_as_bool(PwValuePtr value, bool* result);
15
16#define pw_as_char(value, result) _pw_as_char ((value), (result), false)
17#define pw_as_uchar(value, result) _pw_as_uchar ((value), (result), false)
18#define pw_as_short(value, result) _pw_as_short ((value), (result), false)
19#define pw_as_ushort(value, result) _pw_as_ushort ((value), (result), false)
20#define pw_as_int(value, result) _pw_as_int ((value), (result), false)
21#define pw_as_unsigned(value, result) _pw_as_unsigned ((value), (result), false)
22#define pw_as_long(value, result) _pw_as_long ((value), (result), false)
23#define pw_as_ulong(value, result) _pw_as_ulong ((value), (result), false)
24#define pw_as_longlong(value, result) _pw_as_longlong ((value), (result), false)
25#define pw_as_ulonglong(value, result) _pw_as_ulonglong((value), (result), false)
26#define pw_as_int8(value, result) _pw_as_int8 ((value), (result), false)
27#define pw_as_uint8(value, result) _pw_as_uint8 ((value), (result), false)
28#define pw_as_int16(value, result) _pw_as_int16 ((value), (result), false)
29#define pw_as_uint16(value, result) _pw_as_uint16 ((value), (result), false)
30#define pw_as_int32(value, result) _pw_as_int32 ((value), (result), false)
31#define pw_as_uint32(value, result) _pw_as_uint32 ((value), (result), false)
32#define pw_as_int64(value, result) _pw_as_int64 ((value), (result), false)
33#define pw_as_uint64(value, result) _pw_as_uint64 ((value), (result), false)
34#define pw_as_float(value, result) _pw_as_float ((value), (result), false)
35#define pw_as_double(value, result) _pw_as_double ((value), (result), false)
36#define pw_as_size_t(value, result) _pw_as_size_t ((value), (result), false)
37#define pw_as_ssize_t(value, result) _pw_as_ssize_t ((value), (result), false)
38#define pw_as_ptrdiff_t(value, result) _pw_as_ptrdiff_t((value), (result), false)
39#define pw_as_uintptr_t(value, result) _pw_as_uintptr_t((value), (result), false)
40
41#define pw_as_char_with_overflow(value, result) _pw_as_char ((value), (result), true)
42#define pw_as_uchar_with_overflow(value, result) _pw_as_uchar ((value), (result), true)
43#define pw_as_short_with_overflow(value, result) _pw_as_short ((value), (result), true)
44#define pw_as_ushort_with_overflow(value, result) _pw_as_ushort ((value), (result), true)
45#define pw_as_int_with_overflow(value, result) _pw_as_int ((value), (result), true)
46#define pw_as_unsigned_with_overflow(value, result) _pw_as_unsigned ((value), (result), true)
47#define pw_as_long_with_overflow(value, result) _pw_as_long ((value), (result), true)
48#define pw_as_ulong_with_overflow(value, result) _pw_as_ulong ((value), (result), true)
49#define pw_as_longlong_with_overflow(value, result) _pw_as_longlong ((value), (result), true)
50#define pw_as_ulonglong_with_overflow(value, result) _pw_as_ulonglong((value), (result), true)
51#define pw_as_int8_with_overflow(value, result) _pw_as_int8 ((value), (result), true)
52#define pw_as_uint8_with_overflow(value, result) _pw_as_uint8 ((value), (result), true)
53#define pw_as_int16_with_overflow(value, result) _pw_as_int16 ((value), (result), true)
54#define pw_as_uint16_with_overflow(value, result) _pw_as_uint16 ((value), (result), true)
55#define pw_as_int32_with_overflow(value, result) _pw_as_int32 ((value), (result), true)
56#define pw_as_uint32_with_overflow(value, result) _pw_as_uint32 ((value), (result), true)
57#define pw_as_int64_with_overflow(value, result) _pw_as_int64 ((value), (result), true)
58#define pw_as_uint64_with_overflow(value, result) _pw_as_uint64 ((value), (result), true)
59#define pw_as_float_with_overflow(value, result) _pw_as_float ((value), (result), true)
60#define pw_as_double_with_overflow(value, result) _pw_as_double ((value), (result), true)
61#define pw_as_size_t_with_overflow(value, result) _pw_as_size_t ((value), (result), true)
62#define pw_as_ssize_t_with_overflow(value, result) _pw_as_ssize_t ((value), (result), true)
63#define pw_as_ptrdiff_t_with_overflow(value, result) _pw_as_ptrdiff_t((value), (result), true)
64#define pw_as_uintptr_t_with_overflow(value, result) _pw_as_uintptr_t((value), (result), true)
65
66[[nodiscard]] bool _pw_as_char (PwValuePtr value, char* result, bool allow_overflow);
67[[nodiscard]] bool _pw_as_uchar (PwValuePtr value, unsigned char* result, bool allow_overflow);
68[[nodiscard]] bool _pw_as_short (PwValuePtr value, short* result, bool allow_overflow);
69[[nodiscard]] bool _pw_as_ushort (PwValuePtr value, unsigned short* result, bool allow_overflow);
70[[nodiscard]] bool _pw_as_int (PwValuePtr value, int* result, bool allow_overflow);
71[[nodiscard]] bool _pw_as_unsigned (PwValuePtr value, unsigned* result, bool allow_overflow);
72[[nodiscard]] bool _pw_as_long (PwValuePtr value, long* result, bool allow_overflow);
73[[nodiscard]] bool _pw_as_ulong (PwValuePtr value, unsigned long* result, bool allow_overflow);
74[[nodiscard]] bool _pw_as_longlong (PwValuePtr value, long long* result, bool allow_overflow);
75[[nodiscard]] bool _pw_as_ulonglong(PwValuePtr value, unsigned long long* result, bool allow_overflow);
76[[nodiscard]] bool _pw_as_int8 (PwValuePtr value, int8_t* result, bool allow_overflow);
77[[nodiscard]] bool _pw_as_uint8 (PwValuePtr value, uint8_t* result, bool allow_overflow);
78[[nodiscard]] bool _pw_as_int16 (PwValuePtr value, int16_t* result, bool allow_overflow);
79[[nodiscard]] bool _pw_as_uint16 (PwValuePtr value, uint16_t* result, bool allow_overflow);
80[[nodiscard]] bool _pw_as_int32 (PwValuePtr value, int32_t* result, bool allow_overflow);
81[[nodiscard]] bool _pw_as_uint32 (PwValuePtr value, uint32_t* result, bool allow_overflow);
82[[nodiscard]] bool _pw_as_int64 (PwValuePtr value, int64_t* result, bool allow_overflow);
83[[nodiscard]] bool _pw_as_uint64 (PwValuePtr value, uint64_t* result, bool allow_overflow);
84[[nodiscard]] bool _pw_as_float (PwValuePtr value, float* result, bool allow_overflow);
85[[nodiscard]] bool _pw_as_double (PwValuePtr value, double* result, bool allow_overflow);
86[[nodiscard]] bool _pw_as_size_t (PwValuePtr value, size_t* result, bool allow_overflow);
87[[nodiscard]] bool _pw_as_ssize_t (PwValuePtr value, ssize_t* result, bool allow_overflow);
88[[nodiscard]] bool _pw_as_ptrdiff_t(PwValuePtr value, ptrdiff_t* result, bool allow_overflow);
89[[nodiscard]] bool _pw_as_uintptr_t(PwValuePtr value, uintptr_t* result, bool allow_overflow);
90
91#ifdef __cplusplus
92}
93#endif