Khangai Robot Play - Naive  01
THe naive play of the Khangai Robot
array.h
Go to the documentation of this file.
1 /*
2  * array.h
3  *
4  * Created : 23/2/2019
5  * Author : n-is
6  * email : 073bex422.nischal@pcampus.edu.np
7  */
8 
9 #ifndef _ARRAY_CONTAINER_H_
10 #define _ARRAY_CONTAINER_H_
11 
12 #include "stm32f4xx.h"
13 
14 template <typename T, size_t N>
15 size_t arrSize(const T (&arr)[N])
16 {
17  return N;
18 }
19 
20 template <size_t N>
21 void arrPrint(const float (&arr)[N])
22 {
23  printf("[ ");
24  for (size_t i = 0; i < N; ++i) {
25  printf("%ld ", (int32_t)(arr[i]*1000.0));
26  }
27  printf("]");
28 }
29 
30 template <size_t N>
31 void arrPrint(const uint8_t (&arr)[N])
32 {
33  printf("[ ");
34  for (size_t i = 0; i < N; ++i) {
35  printf("%d ", (uint8_t)(arr[i]));
36  }
37  printf("]");
38 }
39 
40 template <size_t N>
41 void arrMult(float (&arr)[N], float num)
42 {
43  for (size_t i = 0; i < N; ++i) {
44  arr[i] *= num;
45  }
46 }
47 
48 template<typename T, size_t N>
49 void arrFill(T (&arr)[N], T num)
50 {
51  for (size_t i = 0; i < N; ++i) {
52  arr[i] = num;
53  }
54 }
55 
56 // Only works with datatypes with defined == operator. Doesn't with float/double.
57 // Returns the first index of the element
58 template <typename T, size_t N>
59 int arrIndex(T (&arr)[N], T elem)
60 {
61  for (size_t i = 0; i < N; ++i) {
62  if (arr[i] == elem) {
63  return (int)i;
64  }
65  }
66  return -1;
67 }
68 
69 template <typename T, size_t N>
70 void arrCopy(T (&dest)[N], const T (&src)[N])
71 {
72  for (size_t i = 0; i < N; ++i) {
73  dest[i] = src[i];
74  }
75 }
76 
77 template <typename T, size_t N, size_t M>
78 void arrCopy(T (&dest)[N][M], const T (&src)[N][M])
79 {
80  for (size_t i = 0; i < N; ++i) {
81  for (size_t j = 0; j < M; ++j) {
82  dest[i][j] = src[i][j];
83  }
84  }
85 }
86 
87 #endif // !_ARRAY_CONTAINER_H_
void arrPrint(const float(&arr)[N])
Definition: array.h:21
void arrFill(T(&arr)[N], T num)
Definition: array.h:49
void arrMult(float(&arr)[N], float num)
Definition: array.h:41
int arrIndex(T(&arr)[N], T elem)
Definition: array.h:59
void arrCopy(T(&dest)[N], const T(&src)[N])
Definition: array.h:70
size_t arrSize(const T(&arr)[N])
Definition: array.h:15