• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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