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

#include "intcnt.h"
#include "utils.h"

int intcnt::add(int value)
{
	/* search */
	for(int loop=0; loop<n; loop++)
	{
		/* found? increase counter */
		if (values[loop] == value)
		{
			cnts[loop]++;
			return loop;
		}
	}

	/* not found, add */
	n++;
	values = (int *)myrealloc(values, n * sizeof(int), "values");
	cnts = (int *)myrealloc(cnts, n * sizeof(int), "cnt");

	values[n-1] = value;
	cnts[n-1] = 1;

	return n-1;
}

/* this is a slow and inefficient sorting routine, but
 * I'm in a hurry now. feel free to replace
 */
void intcnt::sort(void)
{
	for(int loop=0; loop<n-1; loop++)
	{
		for(int loop2=loop + 1; loop2<n; loop2++)
		{
			if (values[loop2] < values[loop])
			{
				int dummy = values[loop2];
				values[loop2] = values[loop];
				values[loop] = dummy;

				dummy = cnts[loop2];
				cnts[loop2] = cnts[loop];
				cnts[loop] = dummy;
			}
		}
	}
}

int intcnt::getcntfromvalue(int value)
{
	for(int loop=0; loop<n; loop++)
	{
		if (values[loop] == value)
			return cnts[loop];
	}

	return -1;
}

int intcnt::getn(void)
{
	return n;
}

int intcnt::getvalue(int index)
{
	return values[index];
}

int intcnt::getcnt(int index)
{
	return cnts[index];
}


syntax highlighted by Code2HTML, v. 0.9.1