Index: src/libchcore/TPath.h
===================================================================
diff -u -N -r4c09a2d7ab35a30114ff2b7c4db12bc413bf538c -rf18d23588f370de68d37adb285dcf5e046a8d37c
--- src/libchcore/TPath.h	(.../TPath.h)	(revision 4c09a2d7ab35a30114ff2b7c4db12bc413bf538c)
+++ src/libchcore/TPath.h	(.../TPath.h)	(revision f18d23588f370de68d37adb285dcf5e046a8d37c)
@@ -24,31 +24,37 @@
 
 BEGIN_CHCORE_NAMESPACE
 
-class LIBCHCORE_API TPath
+class TSmartPath;
+class TPathContainer;
+
+namespace details
 {
-public:
-	TPath();
-	TPath(const TPath& rSrc);
-	~TPath();
+	class TPath
+	{
+	public:
+		TPath();
+		TPath(const TPath& rSrc);
+		~TPath();
 
-	long AddRef() { return ++m_lRefCount; }
-	long Release();
-	bool IsShared() const { return m_lRefCount > 1; }
+		long AddRef() { return ++m_lRefCount; }
+		long Release();
+		bool IsShared() const { return m_lRefCount > 1; }
 
-protected:
-	static TPath* New();
-	TPath* Clone();
-	static void Delete(TPath* pPath);
+	protected:
+		static TPath* New();
+		TPath* Clone();
+		static void Delete(TPath* pPath);
 
-protected:
+	protected:
 #pragma warning(push)
 #pragma warning(disable: 4251)
-	TString m_strPath;
+		TString m_strPath;
 #pragma warning(pop)
-	long m_lRefCount;
+		long m_lRefCount;
 
-	friend class TSmartPath;
-};
+		friend class TSmartPath;
+	};
+}
 
 class LIBCHCORE_API TSmartPath
 {
@@ -85,12 +91,12 @@
 	TSmartPath AppendCopy(const TSmartPath& pathToAppend, bool bEnsurePathSeparatorExists = true) const;
 	TSmartPath& Append(const TSmartPath& pathToAppend, bool bEnsurePathSeparatorExists = true);
 
-	void SplitPath(std::vector<TSmartPath>& vComponents) const;
+	void SplitPath(TPathContainer& vComponents) const;
 
-	bool Compare(const TSmartPath& rPath, bool bCaseSensitive = DefaultCaseSensitivity) const;
+	int Compare(const TSmartPath& rPath, bool bCaseSensitive = DefaultCaseSensitivity) const;
 	bool IsChildOf(const TSmartPath& rPath, bool bCaseSensitive = DefaultCaseSensitivity) const;
 
-	void MakeRelativePath(const TSmartPath& rReferenceBasePath, bool bCaseSensitive = DefaultCaseSensitivity);
+	bool MakeRelativePath(const TSmartPath& rReferenceBasePath, bool bCaseSensitive = DefaultCaseSensitivity);
 
 	void AppendIfNotExists(const wchar_t* pszPostfix, bool bCaseSensitive = DefaultCaseSensitivity);
 	void CutIfExists(const wchar_t* pszPostfix, bool bCaseSensitive = DefaultCaseSensitivity);
@@ -146,7 +152,7 @@
 	static bool IsSeparator(wchar_t wchSeparator);
 
 protected:
-	TPath* m_pPath;
+	details::TPath* m_pPath;
 };
 
 LIBCHCORE_API TSmartPath PathFromString(const wchar_t* pszPath);
@@ -162,6 +168,7 @@
 	TPathContainer& operator=(const TPathContainer& rSrcContainer);
 
 	void Add(const TSmartPath& spPath);
+	void Append(const TPathContainer& vPaths);
 	
 	const TSmartPath& GetAt(size_t stIndex) const;
 	TSmartPath& GetAt(size_t stIndex);