// StringSet C++ class
#include "burner.h"

int __cdecl StringSet::Add(TCHAR* szFormat,...)
{
	TCHAR szAdd[256];
	int nAddLen = 0;
	TCHAR* NewMem;
	va_list Arg;

	va_start(Arg, szFormat);
    vsprintf(szAdd, szFormat, Arg);

	nAddLen = _tcslen(szAdd);			// find out the length of the new text
	NewMem = (TCHAR*)realloc(szText, (nLen + nAddLen + 1) * sizeof(TCHAR));
	if (NewMem) {
		szText = NewMem;
		// copy the new text to the end
		_tcsncpy(szText + nLen, szAdd, nAddLen);
		nLen += nAddLen;
		szText[nLen] = 0;				// zero-terminate
	}

	va_end(Arg);

	return 0;
}

int StringSet::Reset()
{
	// Reset the text
	nLen = 0;
	szText= (TCHAR*)realloc(szText, sizeof(TCHAR));
	if (szText == NULL) {
		return 1;
	}
	szText[0] = 0;

	return 0;
}

StringSet::StringSet()
{
	szText = NULL;
	nLen = 0;
	Reset();							// reset string to nothing
}

StringSet::~StringSet()
{
	realloc(szText, 0);					// Free BZip text
}
