From ddd6e0f25a8a1aa0ad77aaeeab8757f1350c6ae5 Mon Sep 17 00:00:00 2001
From: Abivarman <abivarman.kandiah@etu.hesge.ch>
Date: Thu, 24 Feb 2022 11:25:36 +0100
Subject: [PATCH] add Vector map

---
 header/vectors.h   |  1 +
 src/test_vectors.c | 12 +++++++++++-
 src/vectors.c      |  8 ++++++++
 3 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/header/vectors.h b/header/vectors.h
index 629f278..44ddb85 100644
--- a/header/vectors.h
+++ b/header/vectors.h
@@ -30,5 +30,6 @@ void vector_insert(vector vec, type element, int index);
 void vector_empty(vector vec);
 void vector_free(vector vec);
 void vector_print(vector vec, void (*print)(type));
+void vector_map(vector vec, type (*f)(type));
 
 #endif
\ No newline at end of file
diff --git a/src/test_vectors.c b/src/test_vectors.c
index 96177cc..bc8f372 100644
--- a/src/test_vectors.c
+++ b/src/test_vectors.c
@@ -11,6 +11,7 @@
 #include "../header/vectors.h"
 
 void print_type(type val);
+int times_two(type a);
 
 int main()
 {	
@@ -57,8 +58,12 @@ int main()
 		vector_push(test, i);
 	}
 	vector_print(test, &print_type);
-
+	printf("\n");
 	
+	//Test Vector map
+	vector_map(test, &times_two);
+	vector_print(test, &print_type);
+
 	//Test Vector Free
 	vector_free(test);
 
@@ -68,4 +73,9 @@ int main()
 void print_type(type val)
 {
 	printf("%d \n", val);
+}
+
+int times_two(type a) 
+{
+    return 2 * a;
 }
\ No newline at end of file
diff --git a/src/vectors.c b/src/vectors.c
index d732979..d5dad3f 100644
--- a/src/vectors.c
+++ b/src/vectors.c
@@ -135,4 +135,12 @@ void vector_print(vector vec, void (*print)(type))
 	{
 		print(vec->content[i]);
 	}
+}
+
+void vector_map(vector vec, type (*f)(type))
+{
+	for (int i = 0; i < vec->length; i++)
+	{
+		vec->content[i] = f(vec->content[i]);
+	}
 }
\ No newline at end of file
-- 
GitLab