/****************************************************************************************

		NameUtilities.h

		Copyright: (c) 2001 Eovia Corp. All rights reserved.

		Author:	Greg
		Date:	9/14/99

		Revision History

		when		who			what & why
		==========	==========	======================================================

*****************************************************************************************/

#include "MCString.h"

struct I3DShScene;

void GetUniqueTreeNameByBaseName(
		I3DShScene* 		inSceneContext, 
		TMCString& 			inBaseName, 
		TMCString& 			outUniqueName);

void GetUniqueMasterObjectNameByBaseName(
		I3DShScene* 		inSceneContext, 
		TMCString& 			inBaseName, 
		TMCString& 			outUniqueName);

void GetUniqueMasterShaderNameByBaseName(
		I3DShScene* 		inSceneContext, 
		TMCString& 			inBaseName, 
		TMCString& 			outUniqueName);

void GetUniqueName(
		TMCClassArray<TMCDynamicString>&	inNameContext, 
		TMCString& 			inBaseName, 
		TMCString& 			outUniqueName,
		const int32			maxLenght);

	//There is an example of HashTable for TMCString* in NativeFileFormat extension
	//to create quickly a unique name.

void MakeNumberedName(const TMCString& unnumberedName, const int32 number, TMCString& outName);

int32 GetNumber(const TMCString& name);

void GetUnnumberedName(const TMCString& name,TMCString& outname);

	//To have unique name with number between parenthesis

void MakeNumberedNameWithParenthesis(const TMCString& unnumberedName, const int32 number, TMCString& outName);

	//The number can be with our without parenthesis

int32 GetNumberWithParenthesis(const TMCString& name);

void GetUnnumberedNameWithParenthesis(const TMCString& name,TMCString& outname);
