diff --git a/frameworks/core/interfaces/native/utility/converter.h b/frameworks/core/interfaces/native/utility/converter.h index be78a2a889b07ece43fd9ced85d0e28c28252f4b..b460ec22649fab7818db9dc3d5c250f745f5cff3 100644 --- a/frameworks/core/interfaces/native/utility/converter.h +++ b/frameworks/core/interfaces/native/utility/converter.h @@ -235,6 +235,16 @@ namespace Converter { return std::move(opt); } + template + std::optional OptConvertPtr(const From* value) + { + std::optional opt; + if (value) { + AssignTo(opt, *value); + } + return std::move(opt); + } + template To ConvertOrDefault(const From& value, To defaultValue) { @@ -469,9 +479,9 @@ namespace Converter { template<> ButtonInfo Convert(const Ark_AlertDialogButtonOptions& src); template<> ButtonInfo Convert(const Ark_PickerDialogButtonStyle& src); template<> CalcDimension Convert(const Ark_Length& src); + template<> CalcDimension Convert(const Ark_LengthMetrics& src); template<> CalcDimension Convert(const Ark_Number& src); template<> CalcDimension Convert(const Ark_String& src); - template<> CalcDimension Convert(const Ark_LengthMetrics& src); template<> CalcLength Convert(const Ark_Length& src); template<> CalcLength Convert(const Ark_LengthMetrics& src); template<> CaretStyle Convert(const Ark_CaretStyle& src); @@ -514,6 +524,12 @@ namespace Converter { template<> ListItemGroupIndex Convert(const Ark_VisibleListContentInfo& src); template<> ListItemIndex Convert(const Ark_VisibleListContentInfo& src); template<> MenuOptionsParam Convert(const Ark_TextMenuItem& src); + template<> NG::NavToolbarItemStatus Convert(const Opt_ToolbarItemStatus& src); + template<> NG::NavigationBackgroundOptions Convert(const Ark_MoreButtonOptions& src); + template<> NG::NavigationBackgroundOptions Convert(const Ark_NavigationTitleOptions& src); + template<> NG::NavigationBackgroundOptions Convert(const Ark_NavigationToolbarOptions& src); + template<> NG::NavigationBarOptions Convert(const Ark_NavigationTitleOptions& src); + template<> NG::NavigationBarOptions Convert(const Ark_NavigationToolbarOptions& src); template<> NavigationOptions Convert(const Ark_NavigationOptions& src); template<> NestedScrollOptions Convert(const Ark_NestedScrollOptions& src); template<> OHOS::Ace::TextMetrics Convert(const Ark_TextMetrics& src); @@ -546,7 +562,6 @@ namespace Converter { template<> RefPtr Convert(const Ark_PathShape& src); template<> RefPtr Convert(const Ark_RectShape& src); template<> RefPtr Convert(const Ark_TransitionEffect& src); - template<> ScrollFrameResult Convert(const Ark_ScrollResult& src); template<> RefPtr Convert(const Ark_Circle& src); template<> RefPtr Convert(const Ark_Curve& src); template<> RefPtr Convert(const Ark_ICurve& src); @@ -563,6 +578,7 @@ namespace Converter { template<> RefPtr Convert(const Ark_Rect& src); template<> RefPtr Convert(const Ark_RoundRect& src); template<> ScaleOpt Convert(const Ark_ScaleOptions& src); + template<> ScrollFrameResult Convert(const Ark_ScrollResult& src); template<> SelectionOptions Convert(const Ark_SelectionOptions& options); template<> Shadow Convert(const Ark_Int32& src); template<> Shadow Convert(const Ark_ShadowOptions& src); @@ -581,14 +597,6 @@ namespace Converter { template<> TextRange Convert(const Ark_TextRange& src); template<> TranslateOptions Convert(const Ark_TranslateOptions& src); template<> bool Convert(const Ark_EdgeEffectOptions& src); - template<> uint32_t Convert(const Ark_LayoutSafeAreaEdge& src); - template<> uint32_t Convert(const Ark_LayoutSafeAreaType& src); - template<> NG::NavigationBackgroundOptions Convert(const Ark_MoreButtonOptions& src); - template<> NG::NavigationBackgroundOptions Convert(const Ark_NavigationTitleOptions& src); - template<> NG::NavigationBackgroundOptions Convert(const Ark_NavigationToolbarOptions& src); - template<> NG::NavigationBarOptions Convert(const Ark_NavigationTitleOptions& src); - template<> NG::NavigationBarOptions Convert(const Ark_NavigationToolbarOptions& src); - template<> NG::NavToolbarItemStatus Convert(const Opt_ToolbarItemStatus& src); template<> float Convert(const Ark_Float32& src); template<> std::map Convert(const Map_String_String& src); template<> std::pair Convert(const Ark_Tuple_ResourceColor_Number& src); @@ -601,12 +609,14 @@ namespace Converter { template<> std::tuple Convert(const Ark_String& src); template<> std::u16string Convert(const Ark_String& src); template<> std::vector Convert(const Array_ImageAnalyzerType& src); + template<> std::vector Convert(const Array_NavigationMenuItem& src); + template<> std::vector Convert(const Array_ToolbarItem& src); template<> std::vector Convert(const Ark_ShadowOptions& src); template<> std::vector Convert(const Ark_Buffer& src); - template<> std::vector Convert(const Array_LayoutSafeAreaType& src); template<> std::vector Convert(const Array_LayoutSafeAreaEdge& src); - template<> std::vector Convert(const Array_NavigationMenuItem& src); - template<> std::vector Convert(const Array_ToolbarItem& src); + template<> std::vector Convert(const Array_LayoutSafeAreaType& src); + template<> uint32_t Convert(const Ark_LayoutSafeAreaEdge& src); + template<> uint32_t Convert(const Ark_LayoutSafeAreaType& src); // SORTED_SECTION: No multiline declarations, please! template<> void AssignCast(std::optional& dst, const Ark_ResolutionQuality& src); @@ -681,6 +691,7 @@ namespace Converter { template<> void AssignCast(std::optional& dst, const Ark_TextContentStyle& src); template<> void AssignCast(std::optional& dst, const Ark_TextInputStyle& src); template<> void AssignCast(std::optional& dst, const Ark_KeyboardAppearance& src); + template<> void AssignCast(std::optional& dst, const Ark_LaunchMode& src); template<> void AssignCast(std::optional& dst, const Ark_LayoutStyle& src); template<> void AssignCast(std::optional& dst, const Ark_LineBreakStrategy& src); template<> void AssignCast(std::optional& dst, const Ark_LineCapStyle& src); @@ -694,12 +705,12 @@ namespace Converter { template<> void AssignCast(std::optional& dst, const Ark_MixedMode& src); template<> void AssignCast(std::optional& dst, const Ark_ModalTransition& src); template<> void AssignCast(std::optional& dst, const Ark_ModifierKey& src); + template<> void AssignCast(std::optional& dst, const Opt_NavigationAnimatedTransition& src); template<> void AssignCast(std::optional& dst, const Ark_NavDestinationMode& src); template<> void AssignCast(std::optional& dst, const Ark_NavRouteMode& src); + template<> void AssignCast(std::optional& dst, const Ark_NavigationOptions& src); template<> void AssignCast(std::optional& dst, const Ark_NavigationTitleOptions& src); template<> void AssignCast(std::optional& dst, const Ark_WebNavigationType& src); - template<> void AssignCast(std::optional& dst, const Ark_LaunchMode& src); - template<> void AssignCast(std::optional& dst, const Ark_NavigationOptions& src); template<> void AssignCast(std::optional& dst, const Ark_NestedScrollMode& src); template<> void AssignCast(std::optional& dst, const Ark_EffectDirection& src); template<> void AssignCast(std::optional& dst, const Ark_EffectFillStyle& src); @@ -787,7 +798,6 @@ namespace Converter { template<> void AssignCast(std::optional& dst, const Ark_UniformDataType& src); template<> void AssignCast(std::optional& dst, const Ark_Resource& src); template<> void AssignCast(std::optional& dst, const Ark_Number& src); - template<> void AssignCast(std::optional& dst, const Opt_NavigationAnimatedTransition& src); template<> void AssignCast( std::optional& dst, const Ark_RenderProcessNotRespondingReason& src); diff --git a/frameworks/core/interfaces/native/utility/converter_union.h b/frameworks/core/interfaces/native/utility/converter_union.h index d2bbbed06e388224a4e77027c101095c82d74cb3..38545dcda36b1e0e1f16d62444b475d237fe8703 100644 --- a/frameworks/core/interfaces/native/utility/converter_union.h +++ b/frameworks/core/interfaces/native/utility/converter_union.h @@ -316,6 +316,16 @@ void VisitUnion(const T& src, Fs... funcs) detail::UnionVisitor>::Visit(src, detail::Overloaded{funcs...}); } +template +void VisitUnionPtr(const T* src, Fs... funcs) +{ + if (src) { + detail::UnionVisitor>::Visit(*src, detail::Overloaded{funcs...}); + } else { + detail::Overloaded{funcs...}(); + } +} + template void VisitUnion(const T& src, Fs... funcs) {