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