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