/*
 ============================================================================
 Name        : ArrayListOfDogs.c
 Author      : Matt Boutell, David Mutchler and YOUR-NAME-HERE
 Description : A simple version of a resizable array of Dogs.
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>

#include "ArrayListOfDogs.h"

// Test function for ArrayListOfDogs functions.
// It constructs an ArrayListOfDogs and adds random Dogs to the ArrayList,
// printing relevant information as it does so.
int main(void) {
	int k;
	ArrayListOfDogs* dogs;

	dogs = constructArrayListOfDogs();

	// Students: Test with loops larger than 6 once you believe your code is OK.
	for (k = 0; k < 6; ++k) {
		add(dogs, constructRandomDog());

		printf("The ArrayListOfDogs is stored at %o, with size %d and capacity %d\n",
				listStoredAt(dogs), listSize(dogs), listCapacity(dogs));

		printf("Its current contents are:\n");
		listPrintContents(dogs);
	}

	return EXIT_SUCCESS;
}

// Constructs an empty ArrayListOfDogs and returns a pointer to the allocated space.
// The initial capacity of the ArrayListOfDogs is 5.
ArrayListOfDogs* constructArrayListOfDogs() {
	// TODO: Replace this stub with correct code.
	return 0;
}

// Returns the address of the current internal array of Dogs.
unsigned int listStoredAt(ArrayListOfDogs* dogs) {
	// TODO: Replace this stub with correct code.
	return 0;
}

// Returns the current size of the ArrayList.
int listSize(ArrayListOfDogs* dogs) {
	// TODO: Replace this stub with correct code.
	return -1;
}

// Returns the current capacity of the ArrayList.
int listCapacity(ArrayListOfDogs* dogs) {
	// TODO: Replace this stub with correct code.
	return -1;
}

// Adds the given Dog to the end of the given ArrayListOfDogs.
// Doubles the ArrayListOfDogs's capacity if the ArrayListOfDogs has to grow.
void add(ArrayListOfDogs* dogs, Dog* dogToAdd) {
	// TODO: Replace this stub with correct code.
}

// Prints the current contents of the ArrayList,
// each element on a line by itself.
void listPrintContents(ArrayListOfDogs* dogs) {
	// TODO: Replace this stub with correct code.
}