Index: src/libchcore/DataBuffer.cpp
===================================================================
diff -u -rfdf4929dc7df1376ed439b7271765f1a4ca31de6 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/DataBuffer.cpp	(.../DataBuffer.cpp)	(revision fdf4929dc7df1376ed439b7271765f1a4ca31de6)
+++ src/libchcore/DataBuffer.cpp	(.../DataBuffer.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -20,6 +20,8 @@
 #include "DataBuffer.h"
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TBasePathData.cpp
===================================================================
diff -u -rd88274a4bbfd4ef005d44c4d179b7596cb627486 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TBasePathData.cpp	(.../TBasePathData.cpp)	(revision d88274a4bbfd4ef005d44c4d179b7596cb627486)
+++ src/libchcore/TBasePathData.cpp	(.../TBasePathData.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -24,6 +24,8 @@
 #include "TBasePathData.h"
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TBinarySerializer.cpp
===================================================================
diff -u -r5fd6beaad9f1eccb664b997d151acb59961e4827 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TBinarySerializer.cpp	(.../TBinarySerializer.cpp)	(revision 5fd6beaad9f1eccb664b997d151acb59961e4827)
+++ src/libchcore/TBinarySerializer.cpp	(.../TBinarySerializer.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -27,6 +27,7 @@
 
 #include "TPath.h"
 #include "ErrorCodes.h"
+#include "TCoreException.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TCoreException.cpp
===================================================================
diff -u -rbd68bb3d3fa04643e0826554bdb26e714642b940 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TCoreException.cpp	(.../TCoreException.cpp)	(revision bd68bb3d3fa04643e0826554bdb26e714642b940)
+++ src/libchcore/TCoreException.cpp	(.../TCoreException.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -33,13 +33,8 @@
 /// @param[in] pszFunction -       function name in which the problem occured.
 // ============================================================================
 TCoreException::TCoreException(EGeneralErrors eErrorCode, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction) :
-	m_eErrorCode(eErrorCode),
-	m_pszFile(pszFile),
-	m_stLineNumber(stLineNumber),
-	m_pszFunction(pszFunction)
+	TBaseException(eErrorCode, _T(""), pszFile, stLineNumber, pszFunction)
 {
-	ATLTRACE(_T("*** Core Exception is being thrown:\n\tError code: %ld\n\tFile: %s\n\tLine number: %ld\n\tFunction: %s\n"), eErrorCode, pszFile, stLineNumber, pszFunction);
-	//BOOST_ASSERT(false);  // disabled assertion; causes hangs (probably) due to the message loop being processed while showing assert dialog
 }
 
 // ============================================================================
@@ -54,29 +49,11 @@
 /// @param[in] pszFunction -       function name in which the problem occured.
 // ============================================================================
 TCoreException::TCoreException(EGeneralErrors eErrorCode, std::exception& stdException, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction) :
-	std::exception(stdException),
-	m_eErrorCode(eErrorCode),
-	m_pszFile(pszFile),
-	m_stLineNumber(stLineNumber),
-	m_pszFunction(pszFunction)
+	TBaseException(eErrorCode, stdException.what(), pszFile, stLineNumber, pszFunction)
 {
 }
 
 // ============================================================================
-/// chcore::TCoreException::GetErrorInfo
-/// @date 2011/07/18
-///
-/// @brief     Retrieves formatted exception information.
-/// @param[in] pszBuffer - buffer for formatted string
-/// @param[in] stMaxBuffer - max size of buffer
-// ============================================================================
-void TCoreException::GetErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const
-{
-	_snwprintf_s(pszBuffer, stMaxBuffer, _TRUNCATE, _T("Error code: %ld\r\nFile: %s\r\nFunction: %s\r\nLine no: %lu"), m_eErrorCode, m_pszFile, m_pszFunction, m_stLineNumber);
-	pszBuffer[stMaxBuffer - 1] = _T('\0');
-}
-
-// ============================================================================
 /// chcore::TCoreWin32Exception::TCoreWin32Exception
 /// @date 2011/07/18
 ///
@@ -88,7 +65,7 @@
 /// @param[in] pszFunction - function throwing the exception
 // ============================================================================
 TCoreWin32Exception::TCoreWin32Exception(EGeneralErrors eErrorCode, DWORD dwWin32Exception, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction) :
-	TCoreException(eErrorCode, pszFile, stLineNumber, pszFunction),
+	TBaseException(eErrorCode, _T(""), pszFile, stLineNumber, pszFunction),
 	m_dwWin32ErrorCode(dwWin32Exception)
 {
 }
@@ -103,6 +80,12 @@
 // ============================================================================
 void TCoreWin32Exception::GetErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const
 {
+	_snwprintf_s(pszBuffer, stMaxBuffer, _TRUNCATE, _T("Error code: %ld (win32 error code: %lu)"), m_eErrorCode, m_dwWin32ErrorCode);
+	pszBuffer[stMaxBuffer - 1] = _T('\0');
+}
+
+void TCoreWin32Exception::GetDetailedErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const
+{
 	_snwprintf_s(pszBuffer, stMaxBuffer, _TRUNCATE, _T("Error code: %ld\r\nWin32 error code: %lu\r\nFile: %s\r\nFunction: %s\r\nLine no: %lu"), m_eErrorCode, m_dwWin32ErrorCode, m_pszFile, m_pszFunction, m_stLineNumber);
 	pszBuffer[stMaxBuffer - 1] = _T('\0');
 }
Index: src/libchcore/TCoreException.h
===================================================================
diff -u -rab32897e61cc637a1e28d9dc3f0489b8d16a429c -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TCoreException.h	(.../TCoreException.h)	(revision ab32897e61cc637a1e28d9dc3f0489b8d16a429c)
+++ src/libchcore/TCoreException.h	(.../TCoreException.h)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -21,6 +21,7 @@
 
 #include "libchcore.h"
 #include "ErrorCodes.h"
+#include "TBaseException.h"
 
 BEGIN_CHCORE_NAMESPACE
 
@@ -34,56 +35,32 @@
 #define THROW_CORE_EXCEPTION_WIN32(error_code, win32_error_code)\
 	throw TCoreWin32Exception(error_code, win32_error_code, __FILEW__, __LINE__, __FUNCTIONW__)
 
-class LIBCHCORE_API TCoreException : public virtual std::exception
+class LIBCHCORE_API TCoreException : public TBaseException
 {
 public:
 	TCoreException(EGeneralErrors eErrorCode, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction);
 	TCoreException(EGeneralErrors eErrorCode, std::exception& stdException, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction);
 
-	// error information
-	EGeneralErrors GetErrorCode() const { return m_eErrorCode; }
-
-	// location info
-	const wchar_t* GetSourceFile() const { return m_pszFile; }
-	size_t GetSourceLineNumber() const { return m_stLineNumber; }
-	const wchar_t* GetFunctionName() const { return m_pszFunction; }
-
-	void GetErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const;
-
 private:
 	TCoreException();
-
-protected:
-	// what happened?
-	EGeneralErrors m_eErrorCode;
-
-	// where it happened?
-	const wchar_t* m_pszFile;
-	const wchar_t* m_pszFunction;
-	size_t m_stLineNumber;
 };
 
-class LIBCHCORE_API TCoreWin32Exception : public TCoreException
+class LIBCHCORE_API TCoreWin32Exception : public TBaseException
 {
 public:
 	TCoreWin32Exception(EGeneralErrors eErrorCode, DWORD dwWin32Exception, const tchar_t* pszFile, size_t stLineNumber, const tchar_t* pszFunction);
 
 	DWORD GetWin32ErrorCode() const { return m_dwWin32ErrorCode; }
 
-	void GetErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const;
+	virtual void GetErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const;
+	virtual void GetDetailedErrorInfo(wchar_t* pszBuffer, size_t stMaxBuffer) const;
 
 private:
 	TCoreWin32Exception();
 
 protected:
 	// what happened?
-	EGeneralErrors m_eErrorCode;
 	DWORD m_dwWin32ErrorCode;
-
-	// where it happened?
-	const wchar_t* m_pszFile;
-	const wchar_t* m_pszFunction;
-	size_t m_stLineNumber;
 };
 
 END_CHCORE_NAMESPACE
Index: src/libchcore/TDataBuffer.cpp
===================================================================
diff -u -r2cc200f4b40dedfdebafab18bf07c733be47da8a -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TDataBuffer.cpp	(.../TDataBuffer.cpp)	(revision 2cc200f4b40dedfdebafab18bf07c733be47da8a)
+++ src/libchcore/TDataBuffer.cpp	(.../TDataBuffer.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -23,6 +23,8 @@
 #include "stdafx.h"
 #include "TDataBuffer.h"
 #include <boost/bind.hpp>
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TDateTime.cpp
===================================================================
diff -u -rbe30619d750d8663d54cf02e7d4bde2ed2dd8d05 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TDateTime.cpp	(.../TDateTime.cpp)	(revision be30619d750d8663d54cf02e7d4bde2ed2dd8d05)
+++ src/libchcore/TDateTime.cpp	(.../TDateTime.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -24,6 +24,8 @@
 #include "TDateTime.h"
 #include "SerializationHelpers.h"
 #include "TBinarySerializer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TFileInfo.cpp
===================================================================
diff -u -r25b3c85ea493809ee084271d5101a015d349da95 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TFileInfo.cpp	(.../TFileInfo.cpp)	(revision 25b3c85ea493809ee084271d5101a015d349da95)
+++ src/libchcore/TFileInfo.cpp	(.../TFileInfo.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -22,6 +22,8 @@
 #include "TFileInfo.h"
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TLocalFilesystem.cpp
===================================================================
diff -u -rfdf4929dc7df1376ed439b7271765f1a4ca31de6 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TLocalFilesystem.cpp	(.../TLocalFilesystem.cpp)	(revision fdf4929dc7df1376ed439b7271765f1a4ca31de6)
+++ src/libchcore/TLocalFilesystem.cpp	(.../TLocalFilesystem.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -34,6 +34,8 @@
 #include <winioctl.h>
 #pragma warning(pop)
 #include "TDataBuffer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TPath.cpp
===================================================================
diff -u -r4c09a2d7ab35a30114ff2b7c4db12bc413bf538c -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TPath.cpp	(.../TPath.cpp)	(revision 4c09a2d7ab35a30114ff2b7c4db12bc413bf538c)
+++ src/libchcore/TPath.cpp	(.../TPath.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -28,6 +28,8 @@
 #include <cctype>
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSharedMemory.cpp
===================================================================
diff -u -re9926b6e83984d0f30bf2008b93874c7c483d95c -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSharedMemory.cpp	(.../TSharedMemory.cpp)	(revision e9926b6e83984d0f30bf2008b93874c7c483d95c)
+++ src/libchcore/TSharedMemory.cpp	(.../TSharedMemory.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -24,6 +24,7 @@
 #include "TSharedMemory.h"
 #include <boost/cast.hpp>
 #include "ErrorCodes.h"
+#include "TCoreException.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TString.cpp
===================================================================
diff -u -rbc92f84c651802e7c804bc53d8898953275ac58a -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TString.cpp	(.../TString.cpp)	(revision bc92f84c651802e7c804bc53d8898953275ac58a)
+++ src/libchcore/TString.cpp	(.../TString.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -28,6 +28,9 @@
 	#include <boost/algorithm/string.hpp>
 #pragma warning(pop)
 #include "TStringArray.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
+#include "TStringException.h"
 
 /// Rounding up value to the nearest chunk multiplicity
 #define ROUNDUP(val,chunk) ((val + chunk - 1) & ~(chunk-1))
@@ -135,10 +138,22 @@
 	SetString(pszStr);
 }
 
-TString::TString(const wchar_t* pszStart, const wchar_t* pszEnd) :
+TString::TString(const wchar_t* pszStart, const wchar_t* pszEnd, size_t stMaxStringSize) :
 	m_pszStringData(NULL)
 {
-	SetString(pszStart, pszEnd - pszStart);
+	// we support either both arguments != NULL or both == NULL
+	if(pszEnd != NULL && pszStart == NULL || pszEnd == NULL && pszStart != NULL)
+		THROW_STRING_EXCEPTION(eErr_InvalidArgument, _T("End of string specified while start is NULL"));
+
+	// sanity check
+	if(pszEnd < pszStart)
+		THROW_STRING_EXCEPTION(eErr_InvalidArgument, _T("Paradox: string begins after its end"));
+
+	size_t stCount = pszEnd - pszStart;
+	if(stCount > stMaxStringSize)
+		THROW_STRING_EXCEPTION(eErr_InvalidArgument, _T("Exceeded maximum expected string size"));
+
+	SetString(pszStart, stCount);
 }
 
 TString::TString(const wchar_t* pszStart, size_t stCount) :
@@ -507,15 +522,12 @@
  */
 int_t TString::Compare(const wchar_t* psz) const
 {
-	if(psz == m_pszStringData)
-		return 0;
+	const wchar_t* pszInternal = m_pszStringData != NULL ? m_pszStringData : _T("");
+
+	if(psz == NULL)
+		return pszInternal[0] == _T('\0') ? 1 : -1;
 	else
-	{
-		if(psz == NULL || m_pszStringData == NULL)
-			return m_pszStringData == NULL ? -1 : 1;
-		else
-			return wcscmp(m_pszStringData, psz);
-	}
+		return wcscmp(pszInternal, psz);
 }
 
 /** Compares a TString with the given TString object. Comparison is case sensitive.
@@ -524,15 +536,7 @@
  */
 int_t TString::Compare(const TString& str) const
 {
-	if(str.m_pszStringData == m_pszStringData)
-		return 0;
-	else
-	{
-		if(str.m_pszStringData == NULL || m_pszStringData == NULL)
-			return m_pszStringData == NULL ? -1 : 1;
-		else
-			return wcscmp(m_pszStringData, str.m_pszStringData);
-	}
+	return Compare(str.m_pszStringData);
 }
 
 /** Compares a TString with the given unicode TString. Comparison is case insensitive.
@@ -541,15 +545,12 @@
  */
 int_t TString::CompareNoCase(const wchar_t* psz) const
 {
-	if(psz == m_pszStringData)
-		return 0;
+	const wchar_t* pszInternal = m_pszStringData != NULL ? m_pszStringData : _T("");
+
+	if(psz == NULL)
+		return pszInternal[0] == _T('\0') ? 1 : -1;
 	else
-	{
-		if(psz == NULL || m_pszStringData == NULL)
-			return m_pszStringData == NULL ? -1 : 1;
-		else
-			return _wcsicmp(m_pszStringData, psz);
-	}
+		return _wcsicmp(pszInternal, psz);
 }
 
 /** Compares a TString with the given TString object. Comparison is case insensitive.
@@ -558,15 +559,7 @@
  */
 int_t TString::CompareNoCase(const TString& str) const
 {
-	if(str.m_pszStringData == m_pszStringData)
-		return 0;
-	else
-	{
-		if(str.m_pszStringData == NULL || m_pszStringData == NULL)
-			return m_pszStringData == NULL ? -1 : 1;
-		else
-			return _wcsicmp(m_pszStringData, str.m_pszStringData);
-	}
+	return CompareNoCase(str.m_pszStringData);
 }
 
 bool TString::StartsWith(const wchar_t* pszText) const
@@ -785,8 +778,13 @@
  */
 void TString::SetString(const wchar_t* pszStr)
 {
-	if(!pszStr)
-		SetString(_T(""));
+	if(!pszStr || pszStr[0] == _T('\0'))
+	{
+		// set empty string in internal data, but only if we already have something allocated
+		// otherwise we already have an "empty" string
+		if(m_pszStringData)
+			SetString(_T(""));
+	}
 	else
 	{
 		size_t stStringLen = wcslen(pszStr);
@@ -808,7 +806,7 @@
 		size_t stMaxBufSize = GetCurrentBufferSize();
 		BOOST_ASSERT(stCount + 1 <= stMaxBufSize);
 		if(stCount + 1 > stMaxBufSize)
-			THROW_CORE_EXCEPTION(eErr_InternalProblem);
+			THROW_STRING_EXCEPTION(eErr_InternalProblem, _T(""));
 
 		wcsncpy_s(m_pszStringData, stMaxBufSize, pszStart, stCount);
 		m_pszStringData[stCount] = _T('\0');
Index: src/libchcore/TString.h
===================================================================
diff -u -r8f43f71595b37201dd3aad1ca0c0e7690d10279e -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TString.h	(.../TString.h)	(revision 8f43f71595b37201dd3aad1ca0c0e7690d10279e)
+++ src/libchcore/TString.h	(.../TString.h)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -30,22 +30,6 @@
 
 class TStringArray;
 
-//////////////////////////////////////////////////////////////
-// EnsureExclusiveOwnership flags
-/// Standard - makes a copy of an underlying object if reference count >1
-#define MWF_COPY	0x00000000
-/// Causes the internal TString buffer to be deleted
-#define MWF_DELETE	0x00000001
-/// Causes new buffer to be allocated with a specified size (empty one)
-#define MWF_NEW		0x00000002
-
-/** \brief Partial delete.
- *
- *  If the object has to be allocated then it's done *without* allocating the internal buffer.
- *  Else the buffer is Left as is.
- */
-#define MWF_PARTIALDEL	0x00000003
-
 // structure containing all string data
 namespace details {
 
@@ -110,13 +94,14 @@
 {
 public:
 	static size_t npos;
+	static const size_t DefaultMaxStringSize = 65536;
 
 public:
 /** \name Construction/destruction */
 /*@{*/
 	TString();						///< Standard constructor
 	TString(const wchar_t* pszStr);	///< Constructor that takes const wchar_t* as an initial TString
-	TString(const wchar_t* pszStart, const wchar_t* pszEnd);
+	TString(const wchar_t* pszStart, const wchar_t* pszEnd, size_t stMaxStringSize = DefaultMaxStringSize);
 	TString(const wchar_t* pszStart, size_t stCount);
 	TString(const TString& str);	///< Standard copy constructor
 	
Index: src/libchcore/TStringArray.cpp
===================================================================
diff -u -rde5a63babb2991c808333230014a4f2e6cc8b7b2 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TStringArray.cpp	(.../TStringArray.cpp)	(revision de5a63babb2991c808333230014a4f2e6cc8b7b2)
+++ src/libchcore/TStringArray.cpp	(.../TStringArray.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -24,6 +24,8 @@
 #include "TStringArray.h"
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskArray.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskArray.cpp	(.../TSubTaskArray.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TSubTaskArray.cpp	(.../TSubTaskArray.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -33,6 +33,8 @@
 #include "SerializationHelpers.h"
 #include "TBinarySerializer.h"
 #include "TTaskStatsSnapshot.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskBase.cpp
===================================================================
diff -u -rd88274a4bbfd4ef005d44c4d179b7596cb627486 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskBase.cpp	(.../TSubTaskBase.cpp)	(revision d88274a4bbfd4ef005d44c4d179b7596cb627486)
+++ src/libchcore/TSubTaskBase.cpp	(.../TSubTaskBase.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -29,6 +29,8 @@
 #include "TTaskConfiguration.h"
 #include <boost/lexical_cast.hpp>
 #include "TFileInfo.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskCopyMove.cpp
===================================================================
diff -u -rfdf4929dc7df1376ed439b7271765f1a4ca31de6 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskCopyMove.cpp	(.../TSubTaskCopyMove.cpp)	(revision fdf4929dc7df1376ed439b7271765f1a4ca31de6)
+++ src/libchcore/TSubTaskCopyMove.cpp	(.../TSubTaskCopyMove.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -40,6 +40,8 @@
 #include "SerializationHelpers.h"
 #include "TBinarySerializer.h"
 #include "TDataBuffer.h"
+#include "ErrorCodes.h"
+#include "TCoreException.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskDelete.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskDelete.cpp	(.../TSubTaskDelete.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TSubTaskDelete.cpp	(.../TSubTaskDelete.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -36,6 +36,8 @@
 #include "TBinarySerializer.h"
 #include "TTaskLocalStats.h"
 #include "DataBuffer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskFastMove.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskFastMove.cpp	(.../TSubTaskFastMove.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TSubTaskFastMove.cpp	(.../TSubTaskFastMove.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -37,6 +37,8 @@
 #include "SerializationHelpers.h"
 #include "TBinarySerializer.h"
 #include "DataBuffer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskScanDirectory.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskScanDirectory.cpp	(.../TSubTaskScanDirectory.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TSubTaskScanDirectory.cpp	(.../TSubTaskScanDirectory.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -37,6 +37,8 @@
 #include "SerializationHelpers.h"
 #include "TBinarySerializer.h"
 #include "DataBuffer.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TSubTaskStatsInfo.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TSubTaskStatsInfo.cpp	(.../TSubTaskStatsInfo.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TSubTaskStatsInfo.cpp	(.../TSubTaskStatsInfo.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -25,6 +25,8 @@
 #include <boost\numeric\conversion\cast.hpp>
 #include "DataBuffer.h"
 #include "TSubTaskStatsSnapshot.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TTask.cpp
===================================================================
diff -u -r1e687d59f0e622a610cbf97cf79febd12641d159 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TTask.cpp	(.../TTask.cpp)	(revision 1e687d59f0e622a610cbf97cf79febd12641d159)
+++ src/libchcore/TTask.cpp	(.../TTask.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -32,6 +32,8 @@
 #include "TFileInfo.h"
 #include "TSubTaskArray.h"
 #include "TTaskStatsSnapshot.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TTaskConfigTracker.cpp
===================================================================
diff -u -rfdf4929dc7df1376ed439b7271765f1a4ca31de6 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TTaskConfigTracker.cpp	(.../TTaskConfigTracker.cpp)	(revision fdf4929dc7df1376ed439b7271765f1a4ca31de6)
+++ src/libchcore/TTaskConfigTracker.cpp	(.../TTaskConfigTracker.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -22,6 +22,8 @@
 // ============================================================================
 #include "stdafx.h"
 #include "TTaskConfigTracker.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TTaskDefinition.cpp
===================================================================
diff -u -r890855d4d56369c673534cf81491ce467709d838 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TTaskDefinition.cpp	(.../TTaskDefinition.cpp)	(revision 890855d4d56369c673534cf81491ce467709d838)
+++ src/libchcore/TTaskDefinition.cpp	(.../TTaskDefinition.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -27,6 +27,8 @@
 #include <boost/uuid/random_generator.hpp>
 #include <boost/lexical_cast.hpp>
 #include "TTaskDefinition.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 #define CURRENT_TASK_VERSION (((unsigned long long)PRODUCT_VERSION1) << 48 | ((unsigned long long)PRODUCT_VERSION2) << 32 | ((unsigned long long)PRODUCT_VERSION3) << 16 | ((unsigned long long)PRODUCT_VERSION4))
 
Index: src/libchcore/TTaskManager.cpp
===================================================================
diff -u -r12a1725bfd04b0f55fd0fda302975fdcd4174943 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TTaskManager.cpp	(.../TTaskManager.cpp)	(revision 12a1725bfd04b0f55fd0fda302975fdcd4174943)
+++ src/libchcore/TTaskManager.cpp	(.../TTaskManager.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -26,6 +26,8 @@
 #include <boost/numeric/conversion/cast.hpp>
 #include "TTaskStatsSnapshot.h"
 #include "TTaskManagerStatsSnapshot.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TTaskOperationPlan.cpp
===================================================================
diff -u -rbe30619d750d8663d54cf02e7d4bde2ed2dd8d05 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TTaskOperationPlan.cpp	(.../TTaskOperationPlan.cpp)	(revision be30619d750d8663d54cf02e7d4bde2ed2dd8d05)
+++ src/libchcore/TTaskOperationPlan.cpp	(.../TTaskOperationPlan.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -24,6 +24,8 @@
 #include "TTaskOperationPlan.h"
 #include "TBinarySerializer.h"
 #include "SerializationHelpers.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/TWorkerThreadController.cpp
===================================================================
diff -u -r155f42138cfc19074a976e43c5b26b3ffb91e4df -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/TWorkerThreadController.cpp	(.../TWorkerThreadController.cpp)	(revision 155f42138cfc19074a976e43c5b26b3ffb91e4df)
+++ src/libchcore/TWorkerThreadController.cpp	(.../TWorkerThreadController.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -22,6 +22,8 @@
 // ============================================================================
 #include "stdafx.h"
 #include "TWorkerThreadController.h"
+#include "TCoreException.h"
+#include "ErrorCodes.h"
 
 BEGIN_CHCORE_NAMESPACE
 
Index: src/libchcore/Tests/TDataBufferManagerTest.cpp
===================================================================
diff -u -r2cc200f4b40dedfdebafab18bf07c733be47da8a -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/Tests/TDataBufferManagerTest.cpp	(.../TDataBufferManagerTest.cpp)	(revision 2cc200f4b40dedfdebafab18bf07c733be47da8a)
+++ src/libchcore/Tests/TDataBufferManagerTest.cpp	(.../TDataBufferManagerTest.cpp)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -2,6 +2,7 @@
 #include "gtest/gtest.h"
 #include "gmock/gmock.h"
 #include "../TDataBuffer.h"
+#include "../TCoreException.h"
 
 // fixtures
 class BasicBufferFixture : public ::testing::Test
Index: src/libchcore/libchcore.vc90.vcproj
===================================================================
diff -u -r2e23b5892ef4d4bb1ee2c6cde893004a71a11510 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/libchcore.vc90.vcproj	(.../libchcore.vc90.vcproj)	(revision 2e23b5892ef4d4bb1ee2c6cde893004a71a11510)
+++ src/libchcore/libchcore.vc90.vcproj	(.../libchcore.vc90.vcproj)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -900,6 +900,14 @@
 					>
 				</File>
 				<File
+					RelativePath=".\TBaseException.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\TBaseException.h"
+					>
+				</File>
+				<File
 					RelativePath=".\TBinarySerializer.cpp"
 					>
 				</File>
@@ -976,6 +984,14 @@
 					>
 				</File>
 				<File
+					RelativePath=".\TStringException.cpp"
+					>
+				</File>
+				<File
+					RelativePath=".\TStringException.h"
+					>
+				</File>
+				<File
 					RelativePath=".\TStringSet.cpp"
 					>
 				</File>
@@ -1286,6 +1302,10 @@
 					/>
 				</FileConfiguration>
 			</File>
+			<File
+				RelativePath=".\Tests\TestsTString.cpp"
+				>
+			</File>
 		</Filter>
 	</Files>
 	<Globals>
Index: src/libchcore/stdafx.h
===================================================================
diff -u -ra9a77aad7abd7e77f0b5b516178ff6d1ceaae528 -r548382442cbf7bed7f744b279ce3f66b54992724
--- src/libchcore/stdafx.h	(.../stdafx.h)	(revision a9a77aad7abd7e77f0b5b516178ff6d1ceaae528)
+++ src/libchcore/stdafx.h	(.../stdafx.h)	(revision 548382442cbf7bed7f744b279ce3f66b54992724)
@@ -21,6 +21,3 @@
 #include <vector>
 
 #include "../libicpf/gen_types.h"
-
-#include "ErrorCodes.h"
-#include "TCoreException.h"