1 /* 2 * Copyright (c) 2023-2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15 16 #ifndef UNIFIED_META_H 17 #define UNIFIED_META_H 18 19 #include <array> 20 #include <cstdint> 21 #include <map> 22 #include <memory> 23 #include <string> 24 #include <unordered_map> 25 #include <variant> 26 #include <vector> 27 #include "visibility.h" 28 #include "pixel_map.h" 29 #include "string_ex.h" 30 #include "want.h" 31 #include "unified_key.h" 32 33 namespace OHOS { 34 namespace UDMF { 35 constexpr const char* UNIFORM_DATA_TYPE = "uniformDataType"; 36 constexpr const char* CONTENT = "textContent"; 37 constexpr const char* ABSTRACT = "abstract"; 38 constexpr const char* URL = "url"; 39 constexpr const char* DESCRIPTION = "description"; 40 constexpr const char* HTML_CONTENT = "htmlContent"; 41 constexpr const char* PLAIN_CONTENT = "plainContent"; 42 constexpr const char* APP_ID = "appId"; 43 constexpr const char* APP_NAME = "appName"; 44 constexpr const char* APP_ICON_ID = "appIconId"; 45 constexpr const char* APP_LABEL_ID = "appLabelId"; 46 constexpr const char* BUNDLE_NAME = "bundleName"; 47 constexpr const char* ABILITY_NAME = "abilityName"; 48 constexpr const char* FILE_URI_PARAM = "oriUri"; 49 constexpr const char* FILE_TYPE = "fileType"; 50 constexpr const char* PIXEL_MAP = "pixelMap"; 51 constexpr const char* ARRAY_BUFFER = "arrayBuffer"; 52 constexpr const char* ARRAY_BUFFER_LENGTH = "arrayBufferLen"; 53 constexpr const char *FORMID = "formId"; 54 constexpr const char *FORMNAME = "formName"; 55 constexpr const char *MODULE = "module"; 56 constexpr const char *ORI_URI = "oriUri"; 57 constexpr const char *REMOTE_URI = "remoteUri"; 58 constexpr const char *DETAILS = "details"; 59 constexpr const char *VALUE_TYPE = "VALUE_TYPE"; 60 constexpr const char *THUMB_DATA = "thumbData"; 61 constexpr const char *THUMB_DATA_LENGTH = "thumbDataLen"; 62 constexpr const char *TITLE = "title"; 63 constexpr const char* APP_ICON = "appIcon"; 64 constexpr const char* APP_ICON_LENGTH = "appIconLen"; 65 constexpr const char* LINK_URL = "linkUrl"; 66 constexpr const char* APPLICATION_DEFINED_RECORD_MARK = "applicationDefinedRecordMark"; 67 constexpr const char* GENERAL_FILE_URI = "general.file-uri"; 68 69 enum UDType : int32_t { 70 ENTITY = 0, 71 OBJECT, 72 COMPOSITE_OBJECT, 73 TEXT, 74 PLAIN_TEXT, 75 HTML, 76 HYPERLINK, 77 XML, 78 SOURCE_CODE, 79 SCRIPT, 80 SHELL_SCRIPT, 81 CSH_SCRIPT, 82 PERL_SCRIPT, 83 PHP_SCRIPT, 84 PYTHON_SCRIPT, 85 RUBY_SCRIPT, 86 TYPE_SCRIPT, 87 JAVA_SCRIPT, 88 C_HEADER, 89 C_SOURCE, 90 C_PLUS_PLUS_HEADER, 91 C_PLUS_PLUS_SOURCE, 92 JAVA_SOURCE, 93 EBOOK, 94 EPUB, 95 AZW, 96 AZW3, 97 KFX, 98 MOBI, 99 MEDIA, 100 IMAGE, 101 JPEG, 102 PNG, 103 RAW_IMAGE, 104 TIFF, 105 BMP, 106 ICO, 107 PHOTOSHOP_IMAGE, 108 AI_IMAGE, 109 WORD_DOC, 110 EXCEL, 111 PPT, 112 PDF, 113 POSTSCRIPT, 114 ENCAPSULATED_POSTSCRIPT, 115 VIDEO, 116 AVI, 117 MPEG, 118 MPEG4, 119 VIDEO_3GPP, 120 VIDEO_3GPP2, 121 WINDOWS_MEDIA_WM, 122 WINDOWS_MEDIA_WMV, 123 WINDOWS_MEDIA_WMP, 124 AUDIO, 125 AAC, 126 AIFF, 127 ALAC, 128 FLAC, 129 MP3, 130 OGG, 131 PCM, 132 WINDOWS_MEDIA_WMA, 133 WAVEFORM_AUDIO, 134 WINDOWS_MEDIA_WMX, 135 WINDOWS_MEDIA_WVX, 136 WINDOWS_MEDIA_WAX, 137 FILE, 138 DIRECTORY, 139 FOLDER, 140 SYMLINK, 141 ARCHIVE, 142 BZ2_ARCHIVE, 143 DISK_IMAGE, 144 TAR_ARCHIVE, 145 ZIP_ARCHIVE, 146 JAVA_ARCHIVE, 147 GNU_TAR_ARCHIVE, 148 GNU_ZIP_ARCHIVE, 149 GNU_ZIP_TAR_ARCHIVE, 150 CALENDAR, 151 CONTACT, 152 DATABASE, 153 MESSAGE, 154 VCARD, 155 NAVIGATION, 156 LOCATION, 157 SYSTEM_DEFINED_FORM, 158 SYSTEM_DEFINED_RECORD, 159 SYSTEM_DEFINED_APP_ITEM, 160 SYSTEM_DEFINED_PIXEL_MAP, 161 OPENHARMONY_ATOMIC_SERVICE, 162 APPLICATION_DEFINED_RECORD, 163 OPENHARMONY_PACKAGE, 164 OPENHARMONY_HAP, 165 SMIL, 166 MARKDOWN, 167 FAX, 168 JFX_FAX, 169 EFX_FAX, 170 XBITMAP_IMAGE, 171 TGA_IMAGE, 172 SGI_IMAGE, 173 OPENEXR_IMAGE, 174 FLASHPIX_IMAGE, 175 REALMEDIA, 176 AU_AUDIO, 177 AIFC_AUDIO, 178 SD2_AUDIO, 179 REALAUDIO, 180 OPENXML, 181 WORDPROCESSINGML_DOCUMENT, 182 SPREADSHEETML_SHEET, 183 PRESENTATIONML_PRESENTATION, 184 OPENDOCUMENT, 185 OPENDOCUMENT_TEXT, 186 OPENDOCUMENT_SPREADSHEET, 187 OPENDOCUMENT_PRESENTATION, 188 OPENDOCUMENT_GRAPHICS, 189 OPENDOCUMENT_FORMULA, 190 STUFFIT_ARCHIVE, 191 VCS, 192 ICS, 193 EXECUTABLE, 194 PORTABLE_EXECUTABLE, 195 SUN_JAVA_CLASS, 196 FONT, 197 TRUETYPE_FONT, 198 TRUETYPE_COLLECTION_FONT, 199 OPENTYPE_FONT, 200 POSTSCRIPT_FONT, 201 POSTSCRIPT_PFB_FONT, 202 POSTSCRIPT_PFA_FONT, 203 OPENHARMONY_HDOC, 204 OPENHARMONY_HINOTE, 205 OPENHARMONY_STYLED_STRING, 206 OPENHARMONY_WANT, 207 OFD, 208 OPG, 209 TEX, 210 CSS, 211 VOB, 212 DIF_VIDEO, 213 DV_VIDEO, 214 FLC_ANIMATION, 215 MNG, 216 MPEGURL_VIDEO, 217 TS, 218 AMR, 219 AMR_WB, 220 GMS, 221 IMY, 222 KAR, 223 MPEGURL_AUDIO, 224 MPEG_4_AUDIO, 225 MIDI_AUDIO, 226 MP2, 227 MPEG_AUDIO, 228 MXMF, 229 OTA, 230 PLS, 231 RTTTL, 232 PSID, 233 ULAW_AUDIO, 234 XMF, 235 GIF, 236 DJVU_IMAGE, 237 JNG_IMAGE, 238 PCX_IMAGE, 239 PBM_IMAGE, 240 PGM_IMAGE, 241 PNM_IMAGE, 242 PPM_IMAGE, 243 RGB_IMAGE, 244 SVG_IMAGE, 245 WBMP_IMAGE, 246 XPIXMP_IMAGE, 247 XWINDOWDUMP_IMAGE, 248 HEIF, 249 HEIC, 250 VIRTUAL_CD, 251 BOO_SOURCE, 252 D_SOURCE, 253 HTML_COMPONENT, 254 PASCAL_SOURCE, 255 HASKELL_SCRIPT, 256 LITERATE_HASKELL_SCRIPT, 257 TCL_SCRIPT, 258 ASC_TEXT, 259 PORTABLE_OBJECT, 260 RICH_TEXT, 261 DELIMITED_VALUES_TEXT, 262 COMMA_SEPARATED_VALUES_TEXT, 263 DIFF, 264 SETEXT, 265 GCD, 266 TAB_SEPARATED_VALUES_TEXT, 267 P7R, 268 PEM, 269 CHESS_PGN, 270 LHA_ARCHIVE, 271 LZH_ARCHIVE, 272 LZX_ARCHIVE, 273 TAZ_ARCHIVE, 274 SHAR_ARCHIVE, 275 CPIO_ARCHIVE, 276 WEB_ARCHIVE, 277 USTAR, 278 MATHML, 279 XHTML, 280 RSS, 281 RDF, 282 IGES, 283 CAD, 284 OCTET_STREAM, 285 ISO, 286 MESH_MODEL, 287 CERTIFICATE, 288 C_OBJECT, 289 DVI, 290 CER_CERTIFICATE, 291 CRT_CERTIFICATE, 292 CRL_CERTIFICATE, 293 PRN, 294 OPENDOCUMENT_CHART, 295 OPENDOCUMENT_TEXT_MASTER, 296 OPENDOCUMENT_TEXT_WEB, 297 OPENDOCUMENT_DATABASE, 298 OPENDOCUMENT_IMAGE, 299 OPENDOCUMENT_FORMULA_TEMPLATE, 300 OPENDOCUMENT_CHART_TEMPLATE, 301 OPENDOCUMENT_PRESENTATION_TEMPLATE, 302 OPENDOCUMENT_IMAGE_TEMPLATE, 303 OPENDOCUMENT_GRAPHICS_TEMPLATE, 304 OPENDOCUMENT_SPREADSHEET_TEMPLATE, 305 OPENDOCUMENT_TEXT_TEMPLATE, 306 WORD_DOT, 307 POWERPOINT_PPS, 308 POWERPOINT_POT, 309 EXCEL_XLT, 310 VISIO_VSD, 311 DRAWINGML_VISIO, 312 DRAWINGML_TEMPLATE, 313 DRAWINGML_VISIO_MACROENABLED, 314 DRAWINGML_TEMPLATE_MACROENABLED, 315 WORDPROCESSINGML_TEMPLATE, 316 PRESENTATIONML_TEMPLATE, 317 PRESENTATIONML_SLIDESHOW, 318 SPREADSHEETML_TEMPLATE, 319 WORDPROCESSINGML_DOCUMENT_MACROENABLED, 320 WORDPROCESSINGML_TEMPLATE_MACROENABLED, 321 SPREADSHEETML_TEMPLATE_MACROENABLED, 322 SPREADSHEETML_ADDIN_MACROENABLED, 323 SPREADSHEETML_BINARY_MACROENABLED, 324 SPREADSHEETML_SHEET_MACROENABLED, 325 PRESENTATIONALML_ADDIN_MACROENABLED, 326 PRESENTATIONALML_PRESENTATION_MACROENABLED, 327 PRESENTATIONALML_SLIDESHOW_MACROENABLED, 328 PRESENTATIONALML_TEMPLATE_MACROENABLED, 329 OPENOFFICE, 330 OPENOFFICE_CALC, 331 OPENOFFICE_DRAW, 332 OPENOFFICE_WRITER_GLOBAL, 333 OPENOFFICE_IMPRESS, 334 OPENOFFICE_MATH, 335 OPENOFFICE_WRITER, 336 OPENOFFICE_CALC_TEMPLATE, 337 OPENOFFICE_DRAW_TEMPLATE, 338 OPENOFFICE_IMPRESS_TEMPLATE, 339 OPENOFFICE_WRITER_TEMPLATE, 340 STAROFFICE, 341 STAROFFICE_DRAW, 342 STAROFFICE_CALC, 343 STAROFFICE_IMPRESS, 344 STAROFFICE_WRITER, 345 STAROFFICE_CHART, 346 STAROFFICE_MAIL, 347 STAROFFICE_WRITER_GLOBAL, 348 STAROFFICE_MATH, 349 STAROFFICE_TEMPLATE, 350 TUG_BIB, 351 TUG_CLS, 352 TUG_STY, 353 TUG_TEX, 354 LATEX, 355 ADVANCED_SYSTEMS_FORMAT, 356 ADVANCED_STREAM_REDIRECTOR, 357 MATROSKA_VIDEO, 358 MATROSKA_AUDIO, 359 SGI_MOVIE, 360 APPLE_M4V, 361 WEBM, 362 QUICKTIME_MOVIE, 363 CORELDRAW_CDR, 364 CORELDRAW_CDT, 365 CORELDRAW_CPT, 366 CORELDRAW_PAT, 367 MICROSOFT_CUR, 368 SUN_RASTER, 369 GOOGLE_WEBP, 370 KOAN_AUDIO, 371 QT_MOC, 372 GHOSTSCRIPT_FONT, 373 X_PCF_FONT, 374 WINDOWS_MEDIA_WMD, 375 WINDOWS_MEDIA_WMZ, 376 WINDOWS_INSTALLER, 377 PUBLISHER_PUB, 378 WINDOWS_MEDIA_PLAYLIST, 379 ACCESS_MDB, 380 STEREOLITHOGRAPHY, 381 APPLE_MEDIA_PLAYLIST, 382 ABISOURCE_WORD, 383 ADOBE_FRAMEMAKER, 384 WOLFRAM_CDF, 385 CINDERELLA_CDY, 386 ADOBE_DCR, 387 ADOBE_DIR, 388 ADOBE_DXR, 389 GNUMERIC_SPREADSHEET, 390 HDFGROUP_HDF, 391 BINHEX_ARCHIVE, 392 MICROSOFT_HTA, 393 INTERNET_INS, 394 INTERNET_ISP, 395 TROFF, 396 ADOBE_MIF, 397 FREEMIND, 398 YAMAHA_SMAF, 399 MATHEMATICA_NOTEBOOK, 400 XIPH_OGG, 401 PROXY_AUTOCONFIG, 402 PKCS_12, 403 PGP_SIGNATURE, 404 QUICKTIME_LINK, 405 RAR_ARCHIVE, 406 SEVEN_ZIP_ARCHIVE, 407 RED_BEAN_SGF, 408 SIT_ARCHIVE, 409 FUTURESPLASH, 410 FLASH, 411 TEXINFO, 412 TORRENT, 413 DOOM, 414 APPLE_WEBARCHIVE, 415 ANDROID_WEBARCHIVE, 416 GIMP_XCF, 417 EDRWMAX, 418 EDRWMIND, 419 CNKI_CAJ, 420 DBASE_DBF, 421 AUTODESK_DWG, 422 AUTODESK_DXF, 423 AUTODESK_DWS, 424 AUTODESK_DWT, 425 AUTODESK_DWF, 426 AUTODESK_DWFX, 427 AUTODESK_SHP, 428 AUTODESK_SHX, 429 AUTODESK_SLIDE_LIB, 430 AUTODESK_LINE, 431 AUTODESK_PLOTTER, 432 HP_GRAPHICS_LANG, 433 MICROSOFT_METAFILE, 434 ACIS_SAT, 435 AVIF_IMAGE, 436 MICROSOFT_DDS, 437 IFF_ILBM, 438 CR2_RAW_IMAGE, 439 CR3_RAW_IMAGE, 440 CRW_RAW_IMAGE, 441 DNG_RAW_IMAGE, 442 ARW_RAW_IMAGE, 443 NEF_RAW_IMAGE, 444 MINDMANAGER_MMAP, 445 MICROSOFT_EMAIL, 446 MICROSOFT_MESSAGE, 447 MICROSOFT_PST, 448 KINGSOFT_OFFICE, 449 KINGSOFT_WRITER_WPS, 450 KINGSOFT_WRITER_WPT, 451 KINGSOFT_PRESENTATION_DPS, 452 KINGSOFT_PRESENTATION_TEMPLATE, 453 KINGSOFT_SPREADSHEETS_ET, 454 KINGSOFT_SPREADSHEETS_TEMPLATE, 455 MICROSOFT_INI, 456 JSON, 457 YAML, 458 LOG, 459 URI, 460 FILE_URI, 461 TEXT_LST, 462 ANDROID_APK, 463 BZ_ARCHIVE, 464 TBZ_ARCHIVE, 465 TBZ2_ARCHIVE, 466 XZ_ARCHIVE, 467 TXZ_ARCHIVE, 468 XAR_ARCHIVE, 469 CAB_ARCHIVE, 470 RPM_ARCHIVE, 471 TPZ_ARCHIVE, 472 LZA_ARCHIVE, 473 ARJ_ARCHIVE, 474 ZIPX_ARCHIVE, 475 LZMA_ARCHIVE, 476 LZMA86_ARCHIVE, 477 XPI_ARCHIVE, 478 HFS_DISK_IMAGE, 479 IMG_DISK_IMAGE, 480 ISZ_DISK_IMAGE, 481 WIM_DISK_IMAGE, 482 SWM_DISK_IMAGE, 483 KINGSOFT_SPREADSHEETS_ETX, 484 KINGSOFT_SPREADSHEETS_ETTX, 485 EXCEL_DIF, 486 OPENHARMONY_APP, 487 HMOS_WIFI, 488 TEL, 489 ETS, 490 JSON5, 491 APE_AUDIO, 492 OPUS_AUDIO, 493 CONF, 494 MICROSOFT_DOS_BATCH, 495 MICROSOFT_VBSCRIPT, 496 ION, 497 MICROSOFT_REGISTRY, 498 MICROSOFT_CATALOG, 499 MICROSOFT_POWERSHELL_SCRIPT, 500 W3_WOFF, 501 SQLITE_DATABASE, 502 MICROSOFT_SYS, 503 MICROSOFT_INF, 504 MICROSOFT_PDB, 505 MICROSOFT_TLB, 506 MICROSOFT_SCCD, 507 ADOBE_F4V, 508 MP2T, 509 YOUTUBE_VIDEO, 510 WEBEX_VIDEO, 511 MPEG2, 512 MPEG1, 513 REALMEDIA_VBR, 514 REAL_REALVIDEO, 515 DIVX_VIDEO, 516 CSIRO_ANNODEX, 517 OGV, 518 LSF_VIDEO, 519 H264_VIDEO, 520 JPEG2000, 521 RAF_RAW_IMAGE, 522 NRW_RAW_IMAGE, 523 RW2_RAW_IMAGE, 524 PEF_RAW_IMAGE, 525 SRW_RAW_IMAGE, 526 ERF_RAW_IMAGE, 527 ORF_RAW_IMAGE, 528 IEF_IMAGE, 529 ART_IMAGE, 530 CONTENT_FORM, 531 M4P_AUDIO, 532 AC3_AUDIO, 533 OPENHARMONY_HSP, 534 OPENHARMONY_HAR, 535 OPENHARMONY_GOPAINT, 536 OPENHARMONY_GOBRUSH, 537 OPENHARMONY_GOBRUSHES, 538 OPENHARMONY_GOCOLOR, 539 UD_BUTT 540 }; 541 542 struct UtdType { 543 int32_t UtdEnum; 544 const char *UtdEnumName; 545 const char *UtdId; 546 }; 547 548 namespace UtdUtils { 549 bool API_EXPORT IsValidUtdId(const std::string &utdId); 550 int32_t API_EXPORT GetUtdEnumFromUtdId(const std::string &utdId); 551 std::string API_EXPORT GetUtdIdFromUtdEnum(int32_t utdType); 552 std::vector<UtdType> API_EXPORT GetUtdTypes(); 553 } // namespace UtdUtils 554 555 /* 556 * UnifiedData variant definitions. 557 */ 558 using UDVariant = std::variant<int32_t, int64_t, bool, double, std::string, std::vector<uint8_t>>; 559 using UDDetails = std::map<std::string, UDVariant>; 560 /* 561 * UnifiedData Intention. 562 */ 563 enum Intention : int32_t { 564 UD_INTENTION_BASE = 0, 565 UD_INTENTION_DRAG, 566 UD_INTENTION_DATA_HUB, 567 UD_INTENTION_BUTT, 568 }; 569 570 static const std::unordered_map<int32_t, std::string> UD_INTENTION_MAP { 571 { UD_INTENTION_DRAG, "drag" }, 572 { UD_INTENTION_DATA_HUB, "DataHub" }, 573 }; 574 575 static const std::unordered_map<int32_t, std::string> UD_SYSTEM_INTENTION_MAP { 576 { UD_INTENTION_DRAG, "Drag" }, 577 }; 578 579 static const std::unordered_map<int32_t, std::string> JS_UD_INTENTION_NAME_MAP { 580 { UD_INTENTION_DATA_HUB, "DATA_HUB" }, 581 { UD_INTENTION_DRAG, "DRAG" }, 582 }; 583 584 enum ShareOptions : int32_t { 585 IN_APP, 586 CROSS_APP, 587 CROSS_DEVICE, 588 SHARE_OPTIONS_BUTT, 589 }; 590 591 struct AppShareOption { 592 int32_t enumNum; 593 const char *enumStr; 594 }; 595 596 namespace ShareOptionsUtil { 597 bool API_EXPORT IsValid(int32_t shareOption); 598 int32_t API_EXPORT GetEnumNum(const std::string &shareOption); 599 std::string API_EXPORT GetEnumStr(int32_t shareOption); 600 } // namespace ShareOptionsUtil 601 602 class UnifiedDataUtils { 603 public: 604 static bool API_EXPORT IsValidType(int32_t value); 605 static bool API_EXPORT IsValidIntention(int32_t value); 606 static size_t GetVariantSize(UDVariant &variant); 607 static size_t GetDetailsSize(UDDetails &details); 608 static bool API_EXPORT IsPersist(const Intention &intention); 609 static bool API_EXPORT IsPersist(const std::string &intention); 610 static Intention API_EXPORT GetIntentionByString(const std::string &intention); 611 static bool API_EXPORT IsValidOptions(UnifiedKey &key, const std::string &intention); 612 static bool API_EXPORT IsValidOptions(UnifiedKey &key, const std::string &intention, 613 const std::string &validIntention); 614 }; 615 616 struct Object; 617 using ValueType = std::variant<std::monostate, int32_t, int64_t, double, bool, std::string, std::vector<uint8_t>, 618 std::shared_ptr<OHOS::AAFwk::Want>, std::shared_ptr<OHOS::Media::PixelMap>, std::shared_ptr<Object>, nullptr_t>; 619 620 struct Object { 621 template<typename T> GetValueObject622 bool API_EXPORT GetValue(const std::string &key, T &value) 623 { 624 auto it = value_.find(key); 625 if (it != value_.end() && std::holds_alternative<T>(it->second)) { 626 value = std::get<T>(it->second); 627 return true; 628 } 629 return false; 630 } 631 632 std::map<std::string, ValueType> value_; 633 }; 634 635 namespace ObjectUtils { 636 std::shared_ptr<Object> API_EXPORT ConvertToObject(UDDetails &details); 637 UDDetails API_EXPORT ConvertToUDDetails(std::shared_ptr<Object> object); 638 639 int64_t GetValueSize(const ValueType &value, bool isCalValueType); 640 int64_t GetObjectValueSize(const std::shared_ptr<Object> object, bool isCalValueType); 641 int64_t GetAllObjectSize(const std::shared_ptr<Object> object); 642 void API_EXPORT ProcessFileUriType(UDType &utdType, ValueType &value); 643 644 template<typename T, typename... Types> ConvertVariant(T && input,std::variant<Types...> & output)645 bool ConvertVariant(T &&input, std::variant<Types...> &output) 646 { 647 bool converted = false; 648 std::visit( 649 [&output, &converted](auto &&val) { 650 using BasicType = std::decay_t<decltype(val)>; 651 if constexpr ((std::is_same_v<BasicType, Types> || ...)) { 652 output = std::variant<Types...>(std::move(val)); 653 converted = true; 654 } 655 }, 656 input); 657 return converted; 658 } 659 } // namespace ObjectUtils 660 } // namespace UDMF 661 } // namespace OHOS 662 #endif // UNIFIED_META_H 663