aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Code_Composer/twine_usblib/usb_serial_buffer.c
blob: 5025bb7722d2ab9b9d71a4058187343befa0798e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * usb_serial_buffer.c
 *
 *  Created on: Sep 24, 2017
 *      Author: Roy
 */

#include <stdlib.h>
#include "usb_serial_buffer.h"

void initArray(SerialBuffer *a, size_t initialSize) {
  a->buffer = (char *)malloc(initialSize);
  a->used = 0;
  a->size = initialSize;
}

void insertArray(SerialBuffer *a, char element) {
  // a->used is the number of used entries, because a->array[a->used++] updates a->used only *after* the array has been accessed.
  // Therefore a->used can go up to a->size
  if (a->used == a->size) {
    a->size += 1;
    a->buffer = (char *)realloc(a->buffer, a->size * sizeof(char));
  }
  a->buffer[a->used++] = element;
}

void freeArray(SerialBuffer *a) {
  free(a->buffer);
  a->buffer = NULL;
  a->used = a->size = 0;
}