COMP: fix some compile issues with insert
This commit is contained in:
parent
7f21ee17a9
commit
50da032847
|
@ -140,6 +140,11 @@ extern int putenv (char *__string) __THROW;
|
|||
namespace KWSYS_NAMESPACE
|
||||
{
|
||||
|
||||
class SystemToolsTranslationMap :
|
||||
public kwsys_stl::map<kwsys_stl::string,kwsys_stl::string>
|
||||
{
|
||||
};
|
||||
|
||||
double
|
||||
SystemTools::GetTime(void)
|
||||
{
|
||||
|
@ -1137,7 +1142,8 @@ bool SystemTools::RemoveADirectory(const char* source)
|
|||
* the system search path. Returns the full path to the file if it is
|
||||
* found. Otherwise, the empty string is returned.
|
||||
*/
|
||||
kwsys_stl::string SystemTools::FindFile(const char* name,
|
||||
kwsys_stl::string SystemTools
|
||||
::FindFile(const char* name,
|
||||
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
||||
{
|
||||
// Add the system search path to our path first
|
||||
|
@ -1242,7 +1248,8 @@ kwsys_stl::string SystemTools::FindProgram(
|
|||
* the system search path. Returns the full path to the library if it is
|
||||
* found. Otherwise, the empty string is returned.
|
||||
*/
|
||||
kwsys_stl::string SystemTools::FindLibrary(const char* name,
|
||||
kwsys_stl::string SystemTools
|
||||
::FindLibrary(const char* name,
|
||||
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
||||
{
|
||||
// See if the executable exists as written.
|
||||
|
@ -1462,27 +1469,26 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative)
|
|||
return SystemTools::CollapseFullPath(in_relative, 0);
|
||||
}
|
||||
|
||||
kwsys_stl::map<kwsys_stl::string,kwsys_stl::string> SystemTools::TranslationMap;
|
||||
|
||||
void SystemTools::AddTranslationPath(const char * a, const char * b)
|
||||
{
|
||||
kwsys_stl::string path_a = a;
|
||||
kwsys_stl::string path_b = b;
|
||||
SystemTools::ConvertToUnixSlashes(path_a);
|
||||
SystemTools::ConvertToUnixSlashes(path_b);
|
||||
// First check this is a directory path, since we don't want the table to grow
|
||||
// too fat
|
||||
// First check this is a directory path, since we don't want the table to
|
||||
// grow too fat
|
||||
if( SystemTools::FileIsDirectory( path_a.c_str() ) )
|
||||
{
|
||||
// Make sure the path is a full path and does not contain no '..'
|
||||
if( SystemTools::FileIsFullPath(path_b.c_str()) && path_b.find("..") == kwsys_stl::string::npos )
|
||||
if( SystemTools::FileIsFullPath(path_b.c_str()) && path_b.find("..")
|
||||
== kwsys_stl::string::npos )
|
||||
{
|
||||
// Before inserting make sure path ends with '/'
|
||||
path_a += '/'; path_b += '/';
|
||||
if( !(path_a == path_b) )
|
||||
{
|
||||
TranslationMap.insert(
|
||||
kwsys_stl::pair<kwsys_stl::string,kwsys_stl::string>(path_a, path_b));
|
||||
SystemTools::TranslationMap->insert(
|
||||
SystemToolsTranslationMap::value_type(path_a, path_b));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1499,8 +1505,8 @@ void SystemTools::CheckTranslationPath(kwsys_stl::string & path)
|
|||
// In case a file was specified we still have to go through this:
|
||||
// Now convert any path found in the table back to the one desired:
|
||||
kwsys_stl::map<kwsys_stl::string,kwsys_stl::string>::const_iterator it;
|
||||
for(it = TranslationMap.begin();
|
||||
it != TranslationMap.end();
|
||||
for(it = SystemTools::TranslationMap->begin();
|
||||
it != SystemTools::TranslationMap->end();
|
||||
++it )
|
||||
{
|
||||
// We need to check of the path is a substring of the other path
|
||||
|
@ -2004,6 +2010,46 @@ bool SystemTools::SetPermissions(const char* file, mode_t mode)
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// These must NOT be initialized. Default initialization to zero is
|
||||
// necessary.
|
||||
unsigned int SystemToolsManagerCount;
|
||||
SystemToolsTranslationMap *SystemTools::TranslationMap;
|
||||
|
||||
// SystemToolsManager manages the SystemTools singleton.
|
||||
// SystemToolsManager should be included in any translation unit
|
||||
// that will use SystemTools or that implements the singleton
|
||||
// pattern. It makes sure that the SystemTools singleton is created
|
||||
// before and destroyed after all other singletons in CMake.
|
||||
|
||||
SystemToolsManager::SystemToolsManager()
|
||||
{
|
||||
if(++SystemToolsManagerCount == 1)
|
||||
{
|
||||
SystemTools::ClassInitialize();
|
||||
}
|
||||
}
|
||||
|
||||
SystemToolsManager::~SystemToolsManager()
|
||||
{
|
||||
if(--SystemToolsManagerCount == 0)
|
||||
{
|
||||
SystemTools::ClassFinalize();
|
||||
}
|
||||
}
|
||||
|
||||
void SystemTools::ClassInitialize()
|
||||
{
|
||||
SystemTools::TranslationMap = new SystemToolsTranslationMap;
|
||||
}
|
||||
|
||||
void SystemTools::ClassFinalize()
|
||||
{
|
||||
delete SystemTools::TranslationMap;
|
||||
}
|
||||
|
||||
|
||||
} // namespace KWSYS_NAMESPACE
|
||||
|
||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||
|
@ -2033,3 +2079,4 @@ namespace KWSYS_NAMESPACE
|
|||
void SystemTools::EnableMSVCDebugHook() {}
|
||||
} // namespace KWSYS_NAMESPACE
|
||||
#endif
|
||||
|
||||
|
|
|
@ -36,6 +36,9 @@ typedef unsigned short mode_t;
|
|||
namespace @KWSYS_NAMESPACE@
|
||||
{
|
||||
|
||||
class SystemToolsManager;
|
||||
class SystemToolsTranslationMap;
|
||||
|
||||
/** \class SystemTools
|
||||
* \brief A collection of useful platform-independent system functions.
|
||||
*/
|
||||
|
@ -330,13 +333,37 @@ protected:
|
|||
static kwsys_stl::string ConvertToWindowsOutputPath(const char*);
|
||||
|
||||
private:
|
||||
/**
|
||||
* Allocate the std::map that serve as the Path Translation table.
|
||||
*/
|
||||
static void ClassInitialize();
|
||||
|
||||
/**
|
||||
* Deallocate the std::map that serve as the Path Translation table.
|
||||
*/
|
||||
static void ClassFinalize();
|
||||
|
||||
/**
|
||||
* Path translation table from dir to refdir
|
||||
* Each time 'dir' will be found it will be replace by 'refdir'
|
||||
*/
|
||||
static kwsys_stl::map<kwsys_stl::string,kwsys_stl::string> TranslationMap;
|
||||
static SystemToolsTranslationMap *TranslationMap;
|
||||
|
||||
friend class SystemToolsManager;
|
||||
};
|
||||
|
||||
class @KWSYS_NAMESPACE@_EXPORT SystemToolsManager
|
||||
{
|
||||
public:
|
||||
SystemToolsManager();
|
||||
~SystemToolsManager();
|
||||
};
|
||||
|
||||
// This instance will show up in any translation unit that uses
|
||||
// SystemTools. It will make sure SystemTools is initialized
|
||||
// before it is used and is the last static object destroyed.
|
||||
static SystemToolsManager SystemToolsManagerInstance;
|
||||
|
||||
} // namespace @KWSYS_NAMESPACE@
|
||||
|
||||
/* Undefine temporary macros. */
|
||||
|
|
Loading…
Reference in New Issue