1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2021-2022 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#ifndef DEFINE_MULTIMODAL_H
17c29fa5a6Sopenharmony_ci#define DEFINE_MULTIMODAL_H
18c29fa5a6Sopenharmony_ci
19c29fa5a6Sopenharmony_ci#include "mmi_log.h"
20c29fa5a6Sopenharmony_ci
21c29fa5a6Sopenharmony_cinamespace OHOS {
22c29fa5a6Sopenharmony_cinamespace MMI {
23c29fa5a6Sopenharmony_ci#ifndef RET_OK
24c29fa5a6Sopenharmony_ci    #define RET_OK (0)
25c29fa5a6Sopenharmony_ci#endif
26c29fa5a6Sopenharmony_ci
27c29fa5a6Sopenharmony_ci#ifndef RET_ERR
28c29fa5a6Sopenharmony_ci    #define RET_ERR (-1)
29c29fa5a6Sopenharmony_ci#endif
30c29fa5a6Sopenharmony_ci
31c29fa5a6Sopenharmony_ciinline constexpr int32_t INVALID_FD { -1 };
32c29fa5a6Sopenharmony_ciinline constexpr int32_t INVALID_PID { -1 };
33c29fa5a6Sopenharmony_ci
34c29fa5a6Sopenharmony_ci#ifndef LINEINFO
35c29fa5a6Sopenharmony_ci#define LINEINFO __FILE__, __LINE__
36c29fa5a6Sopenharmony_ci#endif
37c29fa5a6Sopenharmony_ci
38c29fa5a6Sopenharmony_ci#ifdef DEBUG_CODE_TEST
39c29fa5a6Sopenharmony_ci#define CHKPL(cond, ...) \
40c29fa5a6Sopenharmony_ci    do { \
41c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
42c29fa5a6Sopenharmony_ci            MMI_HILOGW("%{public}s, (%{public}d), CHKPL(%{public}s) is null, do nothing", \
43c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
44c29fa5a6Sopenharmony_ci        } \
45c29fa5a6Sopenharmony_ci    } while (0)
46c29fa5a6Sopenharmony_ci
47c29fa5a6Sopenharmony_ci#define CHKPV(cond) \
48c29fa5a6Sopenharmony_ci    do { \
49c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
50c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CHKPV(%{public}s) is null", \
51c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
52c29fa5a6Sopenharmony_ci            return; \
53c29fa5a6Sopenharmony_ci        } \
54c29fa5a6Sopenharmony_ci    } while (0)
55c29fa5a6Sopenharmony_ci
56c29fa5a6Sopenharmony_ci#define CHKPF(cond) \
57c29fa5a6Sopenharmony_ci    do { \
58c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
59c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CHKPF(%{public}s) is null", \
60c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
61c29fa5a6Sopenharmony_ci            return false; \
62c29fa5a6Sopenharmony_ci        } \
63c29fa5a6Sopenharmony_ci    } while (0)
64c29fa5a6Sopenharmony_ci
65c29fa5a6Sopenharmony_ci#define CHKPS(cond) \
66c29fa5a6Sopenharmony_ci    do { \
67c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
68c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CHKPS(%{public}s) is null", \
69c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
70c29fa5a6Sopenharmony_ci            return ""; \
71c29fa5a6Sopenharmony_ci        } \
72c29fa5a6Sopenharmony_ci    } while (0)
73c29fa5a6Sopenharmony_ci
74c29fa5a6Sopenharmony_ci#define CHKPC(cond) \
75c29fa5a6Sopenharmony_ci    { \
76c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
77c29fa5a6Sopenharmony_ci            MMI_HILOGW("%{public}s, (%{public}d), CHKPC(%{public}s) is null, skip then continue", \
78c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
79c29fa5a6Sopenharmony_ci            continue; \
80c29fa5a6Sopenharmony_ci        } \
81c29fa5a6Sopenharmony_ci    }
82c29fa5a6Sopenharmony_ci
83c29fa5a6Sopenharmony_ci#define CHKPB(cond) \
84c29fa5a6Sopenharmony_ci    { \
85c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
86c29fa5a6Sopenharmony_ci            MMI_HILOGW("%{public}s, (%{public}d), CHKPB(%{public}s) is null, skip then break", \
87c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
88c29fa5a6Sopenharmony_ci            break; \
89c29fa5a6Sopenharmony_ci        } \
90c29fa5a6Sopenharmony_ci    }
91c29fa5a6Sopenharmony_ci
92c29fa5a6Sopenharmony_ci#define CHKPR(cond, r) \
93c29fa5a6Sopenharmony_ci    do { \
94c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
95c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CHKPR(%{public}s) is null, return value is %{public}d", \
96c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond, r); \
97c29fa5a6Sopenharmony_ci            return r; \
98c29fa5a6Sopenharmony_ci        } \
99c29fa5a6Sopenharmony_ci    } while (0)
100c29fa5a6Sopenharmony_ci
101c29fa5a6Sopenharmony_ci#define CHKPP(cond) \
102c29fa5a6Sopenharmony_ci    do { \
103c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
104c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CHKPP(%{public}s) is null, return value is null", \
105c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
106c29fa5a6Sopenharmony_ci            return nullptr; \
107c29fa5a6Sopenharmony_ci        } \
108c29fa5a6Sopenharmony_ci    } while (0)
109c29fa5a6Sopenharmony_ci
110c29fa5a6Sopenharmony_ci#define CHKPO(cond) \
111c29fa5a6Sopenharmony_ci    do { \
112c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
113c29fa5a6Sopenharmony_ci            MMI_HILOGW("%{public}s, (%{public}d), CHKPO(%{public}s) is null, skip then continue", \
114c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
115c29fa5a6Sopenharmony_ci            return {}; \
116c29fa5a6Sopenharmony_ci        } \
117c29fa5a6Sopenharmony_ci    } while (0)
118c29fa5a6Sopenharmony_ci
119c29fa5a6Sopenharmony_ci#define CK(cond, ec) \
120c29fa5a6Sopenharmony_ci    do { \
121c29fa5a6Sopenharmony_ci        if (!(cond)) { \
122c29fa5a6Sopenharmony_ci            MMI_HILOGE("%{public}s, (%{public}d), CK(%{public}s), errCode:%{public}d", \
123c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond, ec); \
124c29fa5a6Sopenharmony_ci        } \
125c29fa5a6Sopenharmony_ci    } while (0)
126c29fa5a6Sopenharmony_ci
127c29fa5a6Sopenharmony_ci#define CHK_PID_AND_TID() \
128c29fa5a6Sopenharmony_ci    do { \
129c29fa5a6Sopenharmony_ci        MMI_HILOGD("%{public}s, (%{public}d), pid:%{public}d threadId:%{public}" PRIu64, \
130c29fa5a6Sopenharmony_ci            __FILE__, __LINE__, GetPid(), GetThisThreadId()); \
131c29fa5a6Sopenharmony_ci    } while (0)
132c29fa5a6Sopenharmony_ci
133c29fa5a6Sopenharmony_ci#else // DEBUG_CODE_TEST
134c29fa5a6Sopenharmony_ci#define CHKPL(cond) \
135c29fa5a6Sopenharmony_ci    do { \
136c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
137c29fa5a6Sopenharmony_ci            MMI_HILOGW("CHKPL(%{public}s) is null, do nothing", #cond); \
138c29fa5a6Sopenharmony_ci        } \
139c29fa5a6Sopenharmony_ci    } while (0)
140c29fa5a6Sopenharmony_ci
141c29fa5a6Sopenharmony_ci#define CHKPV(cond) \
142c29fa5a6Sopenharmony_ci    do { \
143c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
144c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPV(%{public}s) is null", #cond); \
145c29fa5a6Sopenharmony_ci            return; \
146c29fa5a6Sopenharmony_ci        } \
147c29fa5a6Sopenharmony_ci    } while (0)
148c29fa5a6Sopenharmony_ci
149c29fa5a6Sopenharmony_ci#define CHK_INVALID_RV(cond, desc) \
150c29fa5a6Sopenharmony_ci    do { \
151c29fa5a6Sopenharmony_ci        if ((cond) < 0) { \
152c29fa5a6Sopenharmony_ci            MMI_HILOGE("(%{public}s less than 0, desc:%{public}s)", #cond, std::string(desc).c_str()); \
153c29fa5a6Sopenharmony_ci            return; \
154c29fa5a6Sopenharmony_ci        } \
155c29fa5a6Sopenharmony_ci    } while (0)
156c29fa5a6Sopenharmony_ci
157c29fa5a6Sopenharmony_ci#define CHKPF(cond) \
158c29fa5a6Sopenharmony_ci    do { \
159c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
160c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPF(%{public}s) is null", #cond); \
161c29fa5a6Sopenharmony_ci            return false; \
162c29fa5a6Sopenharmony_ci        } \
163c29fa5a6Sopenharmony_ci    } while (0)
164c29fa5a6Sopenharmony_ci
165c29fa5a6Sopenharmony_ci#define CHECKSIZE(arg0, arg1) \
166c29fa5a6Sopenharmony_ci    do { \
167c29fa5a6Sopenharmony_ci        if ((arg0) > (arg1)) { \
168c29fa5a6Sopenharmony_ci            MMI_HILOGE("arg0 value is out of arg1 size"); \
169c29fa5a6Sopenharmony_ci            return false; \
170c29fa5a6Sopenharmony_ci        } \
171c29fa5a6Sopenharmony_ci    } while (0)
172c29fa5a6Sopenharmony_ci
173c29fa5a6Sopenharmony_ci#define CHKPS(cond) \
174c29fa5a6Sopenharmony_ci    do { \
175c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
176c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPS(%{public}s) is null", #cond); \
177c29fa5a6Sopenharmony_ci            return ""; \
178c29fa5a6Sopenharmony_ci        } \
179c29fa5a6Sopenharmony_ci    } while (0)
180c29fa5a6Sopenharmony_ci
181c29fa5a6Sopenharmony_ci#define CHKPC(cond) \
182c29fa5a6Sopenharmony_ci    { \
183c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
184c29fa5a6Sopenharmony_ci            MMI_HILOGW("CHKPC(%{public}s) is null, skip then continue", #cond); \
185c29fa5a6Sopenharmony_ci            continue; \
186c29fa5a6Sopenharmony_ci        } \
187c29fa5a6Sopenharmony_ci    }
188c29fa5a6Sopenharmony_ci
189c29fa5a6Sopenharmony_ci#define CHKPB(cond) \
190c29fa5a6Sopenharmony_ci    { \
191c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
192c29fa5a6Sopenharmony_ci            MMI_HILOGW("CHKPB(%{public}s) is null, skip then break", #cond); \
193c29fa5a6Sopenharmony_ci            break; \
194c29fa5a6Sopenharmony_ci        } \
195c29fa5a6Sopenharmony_ci    }
196c29fa5a6Sopenharmony_ci
197c29fa5a6Sopenharmony_ci#define CHKPR(cond, r) \
198c29fa5a6Sopenharmony_ci    do { \
199c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
200c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPR(%{public}s) is null, return value is %{public}d", #cond, r); \
201c29fa5a6Sopenharmony_ci            return r; \
202c29fa5a6Sopenharmony_ci        } \
203c29fa5a6Sopenharmony_ci    } while (0)
204c29fa5a6Sopenharmony_ci
205c29fa5a6Sopenharmony_ci#define CHKFR(cond, r, desc) \
206c29fa5a6Sopenharmony_ci    do { \
207c29fa5a6Sopenharmony_ci        if (!(cond)) { \
208c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKFR(%{public}s) is false, hint is %{public}s", #cond, desc); \
209c29fa5a6Sopenharmony_ci            return r; \
210c29fa5a6Sopenharmony_ci        } \
211c29fa5a6Sopenharmony_ci    } while (0)
212c29fa5a6Sopenharmony_ci
213c29fa5a6Sopenharmony_ci#define CHK_KEY_ITEM(keyItem) \
214c29fa5a6Sopenharmony_ci    do { \
215c29fa5a6Sopenharmony_ci        if (!(keyItem)) { \
216c29fa5a6Sopenharmony_ci            MMI_HILOGE("The keyItem is nullopt"); \
217c29fa5a6Sopenharmony_ci            return false; \
218c29fa5a6Sopenharmony_ci        } \
219c29fa5a6Sopenharmony_ci    } while (0)
220c29fa5a6Sopenharmony_ci
221c29fa5a6Sopenharmony_ci#define CHKPRV(cond, msg) \
222c29fa5a6Sopenharmony_ci    do { \
223c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
224c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPRV(%{public}s) is null, msg %{public}s", #cond, msg); \
225c29fa5a6Sopenharmony_ci            return; \
226c29fa5a6Sopenharmony_ci        } \
227c29fa5a6Sopenharmony_ci    } while (0)
228c29fa5a6Sopenharmony_ci
229c29fa5a6Sopenharmony_ci#define CHKNOKRV(cond, msg) \
230c29fa5a6Sopenharmony_ci    do { \
231c29fa5a6Sopenharmony_ci        if ((cond) != RET_OK) { \
232c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKNOKRV(%{public}s) is not RET_OK, hint is %{public}s", #cond, msg); \
233c29fa5a6Sopenharmony_ci            return; \
234c29fa5a6Sopenharmony_ci        } \
235c29fa5a6Sopenharmony_ci    } while (0)
236c29fa5a6Sopenharmony_ci
237c29fa5a6Sopenharmony_ci#define CHKFRV(cond, msg) \
238c29fa5a6Sopenharmony_ci    do { \
239c29fa5a6Sopenharmony_ci        if (!(cond)) { \
240c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKFRV(%{public}s) is null, hint is %{public}s", #cond, msg); \
241c29fa5a6Sopenharmony_ci            return; \
242c29fa5a6Sopenharmony_ci        } \
243c29fa5a6Sopenharmony_ci    } while (0)
244c29fa5a6Sopenharmony_ci
245c29fa5a6Sopenharmony_ci#define CHKPP(cond) \
246c29fa5a6Sopenharmony_ci    do { \
247c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
248c29fa5a6Sopenharmony_ci            MMI_HILOGE("CHKPP(%{public}s) is null, return value is null", #cond); \
249c29fa5a6Sopenharmony_ci            return nullptr; \
250c29fa5a6Sopenharmony_ci        } \
251c29fa5a6Sopenharmony_ci    } while (0)
252c29fa5a6Sopenharmony_ci
253c29fa5a6Sopenharmony_ci#define CHKPO(cond) \
254c29fa5a6Sopenharmony_ci    do { \
255c29fa5a6Sopenharmony_ci        if ((cond) == nullptr) { \
256c29fa5a6Sopenharmony_ci            MMI_HILOGW("%{public}s, (%{public}d), CHKPO(%{public}s) is null, return object is null", \
257c29fa5a6Sopenharmony_ci                __FILE__, __LINE__, #cond); \
258c29fa5a6Sopenharmony_ci            return {}; \
259c29fa5a6Sopenharmony_ci        } \
260c29fa5a6Sopenharmony_ci    } while (0)
261c29fa5a6Sopenharmony_ci
262c29fa5a6Sopenharmony_ci#define CK(cond, ec) \
263c29fa5a6Sopenharmony_ci    do { \
264c29fa5a6Sopenharmony_ci        if (!(cond)) { \
265c29fa5a6Sopenharmony_ci            MMI_HILOGE("CK(%{public}s), errCode:%{public}d", #cond, ec); \
266c29fa5a6Sopenharmony_ci        } \
267c29fa5a6Sopenharmony_ci    } while (0)
268c29fa5a6Sopenharmony_ci
269c29fa5a6Sopenharmony_ci#define CHK_PID_AND_TID() \
270c29fa5a6Sopenharmony_ci    do { \
271c29fa5a6Sopenharmony_ci        MMI_HILOGD("pid:%{public}d threadId:%{public}" PRIu64, GetPid(), GetThisThreadId()); \
272c29fa5a6Sopenharmony_ci    } while (0)
273c29fa5a6Sopenharmony_ci
274c29fa5a6Sopenharmony_ci#endif
275c29fa5a6Sopenharmony_ci
276c29fa5a6Sopenharmony_ci#define DEFRET_1(data, value, ...) (value)
277c29fa5a6Sopenharmony_ci#define DEFRET(...) DEFRET_1(__VA_ARGS__, false)
278c29fa5a6Sopenharmony_ci
279c29fa5a6Sopenharmony_ci#define WRITEBOOL(parcel, data, ...) \
280c29fa5a6Sopenharmony_ci    do { \
281c29fa5a6Sopenharmony_ci        if (!(parcel).WriteBool(data)) { \
282c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteBool "#data" failed"); \
283c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
284c29fa5a6Sopenharmony_ci        } \
285c29fa5a6Sopenharmony_ci    } while (0)
286c29fa5a6Sopenharmony_ci
287c29fa5a6Sopenharmony_ci#define WRITEINT32(parcel, data, ...) \
288c29fa5a6Sopenharmony_ci    do { \
289c29fa5a6Sopenharmony_ci        if (!(parcel).WriteInt32(data)) { \
290c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteInt32 "#data" failed"); \
291c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
292c29fa5a6Sopenharmony_ci        } \
293c29fa5a6Sopenharmony_ci    } while (0)
294c29fa5a6Sopenharmony_ci
295c29fa5a6Sopenharmony_ci#define WRITEINT64(parcel, data, ...) \
296c29fa5a6Sopenharmony_ci    do { \
297c29fa5a6Sopenharmony_ci        if (!(parcel).WriteInt64(data)) { \
298c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteInt64 "#data" failed"); \
299c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
300c29fa5a6Sopenharmony_ci        } \
301c29fa5a6Sopenharmony_ci    } while (0)
302c29fa5a6Sopenharmony_ci
303c29fa5a6Sopenharmony_ci#define WRITEUINT8(parcel, data, ...) \
304c29fa5a6Sopenharmony_ci    do { \
305c29fa5a6Sopenharmony_ci        if (!(parcel).WriteUint8(data)) { \
306c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteUint8 "#data" failed"); \
307c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
308c29fa5a6Sopenharmony_ci        } \
309c29fa5a6Sopenharmony_ci    } while (0)
310c29fa5a6Sopenharmony_ci
311c29fa5a6Sopenharmony_ci#define WRITEUINT32(parcel, data, ...) \
312c29fa5a6Sopenharmony_ci    do { \
313c29fa5a6Sopenharmony_ci        if (!(parcel).WriteUint32(data)) { \
314c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteUint32 "#data" failed"); \
315c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
316c29fa5a6Sopenharmony_ci        } \
317c29fa5a6Sopenharmony_ci    } while (0)
318c29fa5a6Sopenharmony_ci
319c29fa5a6Sopenharmony_ci#define WRITEUINT64(parcel, data, ...) \
320c29fa5a6Sopenharmony_ci    do { \
321c29fa5a6Sopenharmony_ci        if (!(parcel).WriteUint64(data)) { \
322c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteUint64 "#data" failed"); \
323c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
324c29fa5a6Sopenharmony_ci        } \
325c29fa5a6Sopenharmony_ci    } while (0)
326c29fa5a6Sopenharmony_ci
327c29fa5a6Sopenharmony_ci#define WRITEDOUBLE(parcel, data, ...) \
328c29fa5a6Sopenharmony_ci    do { \
329c29fa5a6Sopenharmony_ci        if (!(parcel).WriteDouble(data)) { \
330c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteDouble "#data" failed"); \
331c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
332c29fa5a6Sopenharmony_ci        } \
333c29fa5a6Sopenharmony_ci    } while (0)
334c29fa5a6Sopenharmony_ci
335c29fa5a6Sopenharmony_ci#define WRITEFLOAT(parcel, data, ...) \
336c29fa5a6Sopenharmony_ci    do { \
337c29fa5a6Sopenharmony_ci        if (!(parcel).WriteFloat(data)) { \
338c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteFloat "#data" failed"); \
339c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
340c29fa5a6Sopenharmony_ci        } \
341c29fa5a6Sopenharmony_ci    } while (0)
342c29fa5a6Sopenharmony_ci
343c29fa5a6Sopenharmony_ci#define WRITESTRING(parcel, data, ...) \
344c29fa5a6Sopenharmony_ci    do { \
345c29fa5a6Sopenharmony_ci        if (!(parcel).WriteString(data)) { \
346c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteString "#data" failed"); \
347c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
348c29fa5a6Sopenharmony_ci        } \
349c29fa5a6Sopenharmony_ci    } while (0)
350c29fa5a6Sopenharmony_ci
351c29fa5a6Sopenharmony_ci#define WRITEBUFFER(parcel, data, length, ...) \
352c29fa5a6Sopenharmony_ci    do { \
353c29fa5a6Sopenharmony_ci        if (!(parcel).WriteBuffer((data), length)) { \
354c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteBuffer "#data" failed"); \
355c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
356c29fa5a6Sopenharmony_ci        } \
357c29fa5a6Sopenharmony_ci    } while (0)
358c29fa5a6Sopenharmony_ci
359c29fa5a6Sopenharmony_ci#define WRITEREMOTEOBJECT(parcel, data, ...) \
360c29fa5a6Sopenharmony_ci    do { \
361c29fa5a6Sopenharmony_ci        if (!(parcel).WriteRemoteObject(data)) { \
362c29fa5a6Sopenharmony_ci            MMI_HILOGE("WriteRemoteObject "#data" failed"); \
363c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
364c29fa5a6Sopenharmony_ci        } \
365c29fa5a6Sopenharmony_ci    } while (0)
366c29fa5a6Sopenharmony_ci
367c29fa5a6Sopenharmony_ci#define READBOOL(parcel, data, ...) \
368c29fa5a6Sopenharmony_ci    do { \
369c29fa5a6Sopenharmony_ci        if (!(parcel).ReadBool(data)) { \
370c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadBool "#data" failed"); \
371c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
372c29fa5a6Sopenharmony_ci        } \
373c29fa5a6Sopenharmony_ci    } while (0)
374c29fa5a6Sopenharmony_ci
375c29fa5a6Sopenharmony_ci#define READINT32(parcel, data, ...) \
376c29fa5a6Sopenharmony_ci    do { \
377c29fa5a6Sopenharmony_ci        if (!(parcel).ReadInt32(data)) { \
378c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadInt32 "#data" failed"); \
379c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
380c29fa5a6Sopenharmony_ci        } \
381c29fa5a6Sopenharmony_ci    } while (0)
382c29fa5a6Sopenharmony_ci
383c29fa5a6Sopenharmony_ci#define READINT64(parcel, data, ...) \
384c29fa5a6Sopenharmony_ci    do { \
385c29fa5a6Sopenharmony_ci        if (!(parcel).ReadInt64(data)) { \
386c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadInt64 "#data" failed"); \
387c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
388c29fa5a6Sopenharmony_ci        } \
389c29fa5a6Sopenharmony_ci    } while (0)
390c29fa5a6Sopenharmony_ci
391c29fa5a6Sopenharmony_ci#define READUINT8(parcel, data, ...) \
392c29fa5a6Sopenharmony_ci    do { \
393c29fa5a6Sopenharmony_ci        if (!(parcel).ReadUint8(data)) { \
394c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadUint8 "#data" failed"); \
395c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
396c29fa5a6Sopenharmony_ci        } \
397c29fa5a6Sopenharmony_ci    } while (0)
398c29fa5a6Sopenharmony_ci
399c29fa5a6Sopenharmony_ci#define READUINT32(parcel, data, ...) \
400c29fa5a6Sopenharmony_ci    do { \
401c29fa5a6Sopenharmony_ci        if (!(parcel).ReadUint32(data)) { \
402c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadUint32 "#data" failed"); \
403c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
404c29fa5a6Sopenharmony_ci        } \
405c29fa5a6Sopenharmony_ci    } while (0)
406c29fa5a6Sopenharmony_ci
407c29fa5a6Sopenharmony_ci#define READUINT64(parcel, data, ...) \
408c29fa5a6Sopenharmony_ci    do { \
409c29fa5a6Sopenharmony_ci        if (!(parcel).ReadUint64(data)) { \
410c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadUint64 "#data" failed"); \
411c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
412c29fa5a6Sopenharmony_ci        } \
413c29fa5a6Sopenharmony_ci    } while (0)
414c29fa5a6Sopenharmony_ci
415c29fa5a6Sopenharmony_ci#define READDOUBLE(parcel, data, ...) \
416c29fa5a6Sopenharmony_ci    do { \
417c29fa5a6Sopenharmony_ci        if (!(parcel).ReadDouble(data)) { \
418c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadDouble "#data" failed"); \
419c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
420c29fa5a6Sopenharmony_ci        } \
421c29fa5a6Sopenharmony_ci    } while (0)
422c29fa5a6Sopenharmony_ci
423c29fa5a6Sopenharmony_ci#define READFLOAT(parcel, data, ...) \
424c29fa5a6Sopenharmony_ci    do { \
425c29fa5a6Sopenharmony_ci        if (!(parcel).ReadFloat(data)) { \
426c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadFloat "#data" failed"); \
427c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
428c29fa5a6Sopenharmony_ci        } \
429c29fa5a6Sopenharmony_ci    } while (0)
430c29fa5a6Sopenharmony_ci
431c29fa5a6Sopenharmony_ci#define READSTRING(parcel, data, ...) \
432c29fa5a6Sopenharmony_ci    do { \
433c29fa5a6Sopenharmony_ci        if (!(parcel).ReadString(data)) { \
434c29fa5a6Sopenharmony_ci            MMI_HILOGE("ReadString "#data" failed"); \
435c29fa5a6Sopenharmony_ci            return DEFRET(false, ##__VA_ARGS__); \
436c29fa5a6Sopenharmony_ci        } \
437c29fa5a6Sopenharmony_ci    } while (0)
438c29fa5a6Sopenharmony_ci} // namespace MMI
439c29fa5a6Sopenharmony_ci} // namespace OHOS
440c29fa5a6Sopenharmony_ci#endif // DEFINE_MULTIMODAL_H
441