From 1a25b87350964e940400b912cabd67df6f781c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hauke=20Kr=C3=BCger?= Date: Mon, 19 Aug 2024 18:39:23 +0200 Subject: [PATCH] Fixed set_property from flutter - native and http in case we define an offset --- .../backend/ayf_backend_adapter_native.dart | 3 +- .../properties/ayf_properties_to_string.dart | 66 ++++++++++--------- 2 files changed, 38 insertions(+), 31 deletions(-) diff --git a/flutter/ayf_ffihost/lib/backend/ayf_backend_adapter_native.dart b/flutter/ayf_ffihost/lib/backend/ayf_backend_adapter_native.dart index 1e1e1510..b66b3689 100644 --- a/flutter/ayf_ffihost/lib/backend/ayf_backend_adapter_native.dart +++ b/flutter/ayf_ffihost/lib/backend/ayf_backend_adapter_native.dart @@ -1109,7 +1109,8 @@ class AudYoFloBackendAdapterNative extends AudYoFloBackendAdapterIf sizeOf(); targetPtr = Pointer.fromAddress(address); - int numLocal = sel.numEntries; + int numLocal = + (sel.numEntries - offset); // Corrected by HK if (num > 0) { numLocal = min(num, numLocal); } diff --git a/flutter/ayf_pack/lib/properties/ayf_properties_to_string.dart b/flutter/ayf_pack/lib/properties/ayf_properties_to_string.dart index 2414b01b..a0300776 100644 --- a/flutter/ayf_pack/lib/properties/ayf_properties_to_string.dart +++ b/flutter/ayf_pack/lib/properties/ayf_properties_to_string.dart @@ -19,24 +19,29 @@ class AudYoFloPropertyContentToString { } static String convertPropSelectionListToString( - AudYoFloPropertySelectionListBackend prop, bool contentOnly) { + AudYoFloPropertySelectionListBackend prop, bool contentOnly, + {int offset = 0, int num = -1}) { String retVal = ''; bool multiCont = false; if (prop.selection is AudYoFloBitFieldBackend) { AudYoFloBitFieldBackend sel = prop.selection as AudYoFloBitFieldBackend; - multiCont = (sel.numEntries > 1); + int numLocal = (sel.numEntries - offset); + if (num > 0) { + numLocal = min(numLocal, num); + } + multiCont = (numLocal > 1); if (multiCont) { retVal += '['; } String oneEntry = ''; - for (var idx = 0; idx < sel.numEntries; idx++) { - if(idx > 0) { - retVal += ","; - } + for (var idx = 0; idx < numLocal; idx++) { + if (idx > 0) { + retVal += ","; + } for (var idxi = 0; idxi < sel.compileNum32BitBitfield; idxi++) { - // For multi selections, consider the offset!! - int idxO = idx * sel.compileNum32BitBitfield + idxi; + int idxL = idx + offset; + int idxO = idxL * sel.compileNum32BitBitfield + idxi; if ((sel.bitfield![idxO] != 0) || (idxi == sel.compileNum32BitBitfield - 1)) { // Make sure you see 8 digits per token!! @@ -47,10 +52,10 @@ class AudYoFloPropertyContentToString { oneEntry += tok; } } - - oneEntry = '0x' + oneEntry; - retVal += oneEntry; - oneEntry = ''; + + oneEntry = '0x' + oneEntry; + retVal += oneEntry; + oneEntry = ''; } if (multiCont) { retVal += ']'; @@ -115,7 +120,8 @@ class AudYoFloPropertyContentToString { return retVal; } - static String? convertPropMultiContentLst(dynamic lst, {int offset = 0, int num = -1, int precision = 4}) { + static String? convertPropMultiContentLst(dynamic lst, + {int offset = 0, int num = -1, int precision = 4}) { String retVal = ''; bool multiCont = false; if (lst is List) { @@ -125,26 +131,25 @@ class AudYoFloPropertyContentToString { retVal = '['; } - int numCopy = lst.length - offset; - if(num >= 0) - { + int numCopy = lst.length - offset; + if (num >= 0) { numCopy = min(numCopy, num); } - if (lst is Float64List) { - for (var i=0;i