array_utils.c 964 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include "array_utils.h"
  2. void reverse_array(int length, uint8_t arr[length]) {
  3. uint8_t tmp;
  4. for(int low = 0, high = length - 1; low < high; low++, high--) {
  5. tmp = arr[low];
  6. arr[low] = arr[high];
  7. arr[high] = tmp;
  8. }
  9. }
  10. bool shift_array_to_left(int length, uint8_t arr[length], uint8_t from_index, uint8_t offset) {
  11. if(from_index >= length) return false;
  12. for(uint8_t i = from_index; i < length; i++) {
  13. arr[i] = i < length - offset ? arr[i + offset] : 0;
  14. }
  15. return true;
  16. }
  17. void get_column_from_array(
  18. int rows,
  19. int cols,
  20. uint8_t arr[rows][cols],
  21. uint8_t column_index,
  22. uint8_t* out) {
  23. for(uint8_t i = 0; i < rows; i++) {
  24. out[i] = arr[i][column_index];
  25. }
  26. }
  27. void set_column_to_array(
  28. int rows,
  29. int cols,
  30. uint8_t arr[rows][cols],
  31. uint8_t column_index,
  32. uint8_t* src) {
  33. for(uint8_t i = 0; i < rows; i++) {
  34. arr[i][column_index] = src[i];
  35. }
  36. }