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