From 3d98ef994e0f971023414c3677d0451ae6ee5f0d Mon Sep 17 00:00:00 2001 From: Romain Bertozzi <romain.bertozzi@savoirfairelinux.com> Date: Wed, 29 Mar 2017 10:58:18 -0400 Subject: [PATCH] utils: add utility method for vectors and arrays MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch adds a new utility method to convert C++ data containers to Objective-C ones. Here, std::vector of std::map containers are translated to NSArray of NSDictionary. Issue: #1391 Change-Id: I61f7a57d2801949eac5685ffb0d734f26eeab87c Reviewed-by: Silbino Gonçalves Matado <silbino.gmatado@savoirfairelinux.com> --- Ring/Ring/Bridging/Utils.h | 1 + Ring/Ring/Bridging/Utils.mm | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/Ring/Ring/Bridging/Utils.h b/Ring/Ring/Bridging/Utils.h index 063752b5a..f8e2d1dee 100644 --- a/Ring/Ring/Bridging/Utils.h +++ b/Ring/Ring/Bridging/Utils.h @@ -31,5 +31,6 @@ + (NSMutableDictionary*)mapToDictionnary: (const std::map<std::string, std::string>&)map; + (std::map<std::string, std::string>)dictionnaryToMap:(NSDictionary*)dict; ++ (NSArray*)vectorOfMapsToArray:(const std::vector<std::map<std::string, std::string>>&)vectorOfMaps; @end diff --git a/Ring/Ring/Bridging/Utils.mm b/Ring/Ring/Bridging/Utils.mm index 332ff1157..bbfceaa38 100644 --- a/Ring/Ring/Bridging/Utils.mm +++ b/Ring/Ring/Bridging/Utils.mm @@ -56,4 +56,17 @@ return resMap; } ++ (NSArray*)vectorOfMapsToArray: +(const std::vector<std::map<std::string, std::string>>&)vectorOfMaps { + NSMutableArray* array = [[NSMutableArray alloc] initWithCapacity:vectorOfMaps.size()]; + + std::for_each( + vectorOfMaps.begin(), vectorOfMaps.end(), ^(std::map<std::string, std::string> map) { + NSDictionary *dictionary = [Utils mapToDictionnary:map]; + [array addObject:dictionary]; + }); + + return [NSArray arrayWithArray:array]; +} + @end -- GitLab