ChangeSorter.cpp #1

  • //
  • guest/
  • samwise/
  • p4hl/
  • src/
  • dlls/
  • ChangeSorter.cpp
  • View
  • Commits
  • Open Download .zip Download (1 KB)
// ChangeSorter.cpp: implementation of the ChangeSorter class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "ChangeSorter.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ChangeSorter::ChangeSorter()
{
	head = NULL;
}

ChangeSorter::~ChangeSorter()
{
	if (head != NULL) delete head;
}

void ChangeSorter::AddChange(StrBuf input)
{
	if (head == NULL)
	{
		head = new ChangeNode(input);
		return;
	} 
	if (input == head->change) {
		return;
	}
	ChangeNode* newnode = new ChangeNode(input);
	if (newnode->value == head->value) {
		return;
	}
	if (newnode->value < head->value)
	{
		newnode->next = head;
		head = newnode;
		return;
	}
	ChangeNode* prev = head;
	ChangeNode* working = head->next;
	while (working != NULL)
	{
		if (working->value == newnode->value) {
			return;
		}
		if (working->value > newnode->value)
		{
			newnode->next = working;
			prev->next = newnode;
			return;
		}
		prev = prev->next;
		working = working->next;
	}
	prev->next = newnode;
	return;
}

int ChangeSorter::GetPos(StrBuf input)
{
	if (head == NULL) return 0;
	int val = atoi((const char*) input.Text());
	ChangeNode* working = head;
	int counter = 1;
	while (val > working->value)
	{
		if (working->next == NULL) break;
		working = working->next;
		counter++;
	}
	if (val == working->value) return counter;
	return 0;
}
# Change User Description Committed
#2 937 Sam Stafford Renaming my guest directory to the more conventional
sam_stafford.
#1 936 Sam Stafford Adding P4HL to the public depot.
 See relnotes.txt for
installation instructions; all relevant files are under
p4hl/dist.

Source code is under p4hl/src in the form of a VC++ project.