]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
de1c301e | 2 | |
dccca82b LP |
3 | #include <errno.h> |
4 | ||
5 | #include "sd-bus.h" | |
6 | ||
de1c301e LP |
7 | #include "bus-type.h" |
8 | ||
9 | bool bus_type_is_valid(char c) { | |
10 | static const char valid[] = { | |
11 | SD_BUS_TYPE_BYTE, | |
12 | SD_BUS_TYPE_BOOLEAN, | |
13 | SD_BUS_TYPE_INT16, | |
14 | SD_BUS_TYPE_UINT16, | |
15 | SD_BUS_TYPE_INT32, | |
16 | SD_BUS_TYPE_UINT32, | |
17 | SD_BUS_TYPE_INT64, | |
18 | SD_BUS_TYPE_UINT64, | |
19 | SD_BUS_TYPE_DOUBLE, | |
20 | SD_BUS_TYPE_STRING, | |
21 | SD_BUS_TYPE_OBJECT_PATH, | |
22 | SD_BUS_TYPE_SIGNATURE, | |
23 | SD_BUS_TYPE_ARRAY, | |
24 | SD_BUS_TYPE_VARIANT, | |
25 | SD_BUS_TYPE_STRUCT, | |
26 | SD_BUS_TYPE_DICT_ENTRY, | |
27 | SD_BUS_TYPE_UNIX_FD | |
28 | }; | |
29 | ||
30 | return !!memchr(valid, c, sizeof(valid)); | |
31 | } | |
32 | ||
33 | bool bus_type_is_valid_in_signature(char c) { | |
34 | static const char valid[] = { | |
35 | SD_BUS_TYPE_BYTE, | |
36 | SD_BUS_TYPE_BOOLEAN, | |
37 | SD_BUS_TYPE_INT16, | |
38 | SD_BUS_TYPE_UINT16, | |
39 | SD_BUS_TYPE_INT32, | |
40 | SD_BUS_TYPE_UINT32, | |
41 | SD_BUS_TYPE_INT64, | |
42 | SD_BUS_TYPE_UINT64, | |
43 | SD_BUS_TYPE_DOUBLE, | |
44 | SD_BUS_TYPE_STRING, | |
45 | SD_BUS_TYPE_OBJECT_PATH, | |
46 | SD_BUS_TYPE_SIGNATURE, | |
47 | SD_BUS_TYPE_ARRAY, | |
48 | SD_BUS_TYPE_VARIANT, | |
49 | SD_BUS_TYPE_STRUCT_BEGIN, | |
50 | SD_BUS_TYPE_STRUCT_END, | |
51 | SD_BUS_TYPE_DICT_ENTRY_BEGIN, | |
52 | SD_BUS_TYPE_DICT_ENTRY_END, | |
53 | SD_BUS_TYPE_UNIX_FD | |
54 | }; | |
55 | ||
56 | return !!memchr(valid, c, sizeof(valid)); | |
57 | } | |
58 | ||
59 | bool bus_type_is_basic(char c) { | |
60 | static const char valid[] = { | |
61 | SD_BUS_TYPE_BYTE, | |
62 | SD_BUS_TYPE_BOOLEAN, | |
63 | SD_BUS_TYPE_INT16, | |
64 | SD_BUS_TYPE_UINT16, | |
65 | SD_BUS_TYPE_INT32, | |
66 | SD_BUS_TYPE_UINT32, | |
67 | SD_BUS_TYPE_INT64, | |
68 | SD_BUS_TYPE_UINT64, | |
69 | SD_BUS_TYPE_DOUBLE, | |
70 | SD_BUS_TYPE_STRING, | |
71 | SD_BUS_TYPE_OBJECT_PATH, | |
72 | SD_BUS_TYPE_SIGNATURE, | |
73 | SD_BUS_TYPE_UNIX_FD | |
74 | }; | |
75 | ||
76 | return !!memchr(valid, c, sizeof(valid)); | |
77 | } | |
78 | ||
b3af9646 LP |
79 | bool bus_type_is_trivial(char c) { |
80 | static const char valid[] = { | |
81 | SD_BUS_TYPE_BYTE, | |
82 | SD_BUS_TYPE_BOOLEAN, | |
83 | SD_BUS_TYPE_INT16, | |
84 | SD_BUS_TYPE_UINT16, | |
85 | SD_BUS_TYPE_INT32, | |
86 | SD_BUS_TYPE_UINT32, | |
87 | SD_BUS_TYPE_INT64, | |
88 | SD_BUS_TYPE_UINT64, | |
89 | SD_BUS_TYPE_DOUBLE | |
90 | }; | |
91 | ||
92 | return !!memchr(valid, c, sizeof(valid)); | |
93 | } | |
94 | ||
de1c301e LP |
95 | bool bus_type_is_container(char c) { |
96 | static const char valid[] = { | |
97 | SD_BUS_TYPE_ARRAY, | |
98 | SD_BUS_TYPE_VARIANT, | |
99 | SD_BUS_TYPE_STRUCT, | |
100 | SD_BUS_TYPE_DICT_ENTRY | |
101 | }; | |
102 | ||
103 | return !!memchr(valid, c, sizeof(valid)); | |
104 | } | |
105 | ||
106 | int bus_type_get_alignment(char c) { | |
107 | ||
108 | switch (c) { | |
109 | case SD_BUS_TYPE_BYTE: | |
110 | case SD_BUS_TYPE_SIGNATURE: | |
111 | case SD_BUS_TYPE_VARIANT: | |
112 | return 1; | |
113 | ||
114 | case SD_BUS_TYPE_INT16: | |
115 | case SD_BUS_TYPE_UINT16: | |
116 | return 2; | |
117 | ||
118 | case SD_BUS_TYPE_BOOLEAN: | |
119 | case SD_BUS_TYPE_INT32: | |
120 | case SD_BUS_TYPE_UINT32: | |
121 | case SD_BUS_TYPE_STRING: | |
122 | case SD_BUS_TYPE_OBJECT_PATH: | |
123 | case SD_BUS_TYPE_ARRAY: | |
124 | case SD_BUS_TYPE_UNIX_FD: | |
125 | return 4; | |
126 | ||
127 | case SD_BUS_TYPE_INT64: | |
128 | case SD_BUS_TYPE_UINT64: | |
129 | case SD_BUS_TYPE_DOUBLE: | |
130 | case SD_BUS_TYPE_STRUCT: | |
131 | case SD_BUS_TYPE_STRUCT_BEGIN: | |
132 | case SD_BUS_TYPE_DICT_ENTRY: | |
133 | case SD_BUS_TYPE_DICT_ENTRY_BEGIN: | |
134 | return 8; | |
135 | } | |
136 | ||
137 | return -EINVAL; | |
138 | } | |
139 | ||
140 | int bus_type_get_size(char c) { | |
141 | ||
142 | switch (c) { | |
143 | case SD_BUS_TYPE_BYTE: | |
144 | return 1; | |
145 | ||
146 | case SD_BUS_TYPE_INT16: | |
147 | case SD_BUS_TYPE_UINT16: | |
148 | return 2; | |
149 | ||
150 | case SD_BUS_TYPE_BOOLEAN: | |
151 | case SD_BUS_TYPE_INT32: | |
152 | case SD_BUS_TYPE_UINT32: | |
153 | case SD_BUS_TYPE_UNIX_FD: | |
154 | return 4; | |
155 | ||
156 | case SD_BUS_TYPE_INT64: | |
157 | case SD_BUS_TYPE_UINT64: | |
158 | case SD_BUS_TYPE_DOUBLE: | |
159 | return 8; | |
160 | } | |
161 | ||
162 | return -EINVAL; | |
163 | } |