• 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 
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