From 10bf9f11fdbb16de66504a33b324c60649c28827 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Thu, 27 Apr 2023 09:47:48 -0700 Subject: [PATCH] Add C# bindings for Errata API (#1259) Summary: Pull Request resolved: https://github.com/facebook/yoga/pull/1259 Wires C ABI to C# bindings using `System.Runtime.InteropServices`. Note that we don't have a working C# build right now, but there is [effort to address that](https://github.com/facebook/yoga/pull/1207) which may get some more effort before the Yoga release, so this keeps the bindings up to date. Reviewed By: yungsters Differential Revision: D45297676 fbshipit-source-id: 10cfb71a6220e4c7a6fc15032cd74033d4472f4b --- csharp/Facebook.Yoga/Native.cs | 6 ++++++ csharp/Facebook.Yoga/YogaConfig.cs | 21 +++++++++++++++++++-- 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/csharp/Facebook.Yoga/Native.cs b/csharp/Facebook.Yoga/Native.cs index 1bdc24f0..f22e5888 100644 --- a/csharp/Facebook.Yoga/Native.cs +++ b/csharp/Facebook.Yoga/Native.cs @@ -73,6 +73,12 @@ namespace Facebook.Yoga [DllImport(DllName, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] public static extern bool YGConfigGetUseLegacyStretchBehaviour(YGConfigHandle config); + [DllImport(DllName, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] + public static extern void YGConfigSetErrata(YGConfigHandle config, YogaErrata errata); + + [DllImport(DllName, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] + public static extern YogaErrata YGConfigGetErrata(YGConfigHandle config); + [DllImport(DllName, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)] public static extern void YGConfigSetPointScaleFactor( YGConfigHandle config, diff --git a/csharp/Facebook.Yoga/YogaConfig.cs b/csharp/Facebook.Yoga/YogaConfig.cs index 8424401f..c4162d31 100644 --- a/csharp/Facebook.Yoga/YogaConfig.cs +++ b/csharp/Facebook.Yoga/YogaConfig.cs @@ -117,8 +117,12 @@ namespace Facebook.Yoga } } - public bool UseLegacyStretchBehaviour - { + [ObsoleteAttribute("\"UseLegacyStretchBehaviour\" will be removed in the next release. " + + "Usage should be replaced with \"Errata\" set to \"YogaErrata.All\" to opt out of all " + + "future breaking conformance fixes, or \"YogaErrata.StretchFlexBasis\" toopt out of " + + "the specific conformance fix previously disabled by \"UseLegacyStretchBehaviour\".", + true /*error*/)] + public bool UseLegacyStretchBehaviour { get { return Native.YGConfigGetUseLegacyStretchBehaviour(_ygConfig); @@ -130,6 +134,19 @@ namespace Facebook.Yoga } } + public YogaErrata Errata + { + get + { + return Native.YGConfigGetErrata(_ygConfig); + } + + set + { + Native.YGConfigSetErrata(_ygConfig, value); + } + } + public float PointScaleFactor { set