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
|
namespace KWSYS_NAMESPACE
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class SystemToolsTranslationMap :
|
||||||
|
public kwsys_stl::map<kwsys_stl::string,kwsys_stl::string>
|
||||||
|
{
|
||||||
|
};
|
||||||
|
|
||||||
double
|
double
|
||||||
SystemTools::GetTime(void)
|
SystemTools::GetTime(void)
|
||||||
{
|
{
|
||||||
|
@ -1137,8 +1142,9 @@ bool SystemTools::RemoveADirectory(const char* source)
|
||||||
* the system search path. Returns the full path to the file if it is
|
* the system search path. Returns the full path to the file if it is
|
||||||
* found. Otherwise, the empty string is returned.
|
* found. Otherwise, the empty string is returned.
|
||||||
*/
|
*/
|
||||||
kwsys_stl::string SystemTools::FindFile(const char* name,
|
kwsys_stl::string SystemTools
|
||||||
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
::FindFile(const char* name,
|
||||||
|
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
||||||
{
|
{
|
||||||
// Add the system search path to our path first
|
// Add the system search path to our path first
|
||||||
kwsys_stl::vector<kwsys_stl::string> path;
|
kwsys_stl::vector<kwsys_stl::string> path;
|
||||||
|
@ -1242,8 +1248,9 @@ kwsys_stl::string SystemTools::FindProgram(
|
||||||
* the system search path. Returns the full path to the library if it is
|
* the system search path. Returns the full path to the library if it is
|
||||||
* found. Otherwise, the empty string is returned.
|
* found. Otherwise, the empty string is returned.
|
||||||
*/
|
*/
|
||||||
kwsys_stl::string SystemTools::FindLibrary(const char* name,
|
kwsys_stl::string SystemTools
|
||||||
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
::FindLibrary(const char* name,
|
||||||
|
const kwsys_stl::vector<kwsys_stl::string>& userPaths)
|
||||||
{
|
{
|
||||||
// See if the executable exists as written.
|
// See if the executable exists as written.
|
||||||
if(SystemTools::FileExists(name) &&
|
if(SystemTools::FileExists(name) &&
|
||||||
|
@ -1462,27 +1469,26 @@ kwsys_stl::string SystemTools::CollapseFullPath(const char* in_relative)
|
||||||
return SystemTools::CollapseFullPath(in_relative, 0);
|
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)
|
void SystemTools::AddTranslationPath(const char * a, const char * b)
|
||||||
{
|
{
|
||||||
kwsys_stl::string path_a = a;
|
kwsys_stl::string path_a = a;
|
||||||
kwsys_stl::string path_b = b;
|
kwsys_stl::string path_b = b;
|
||||||
SystemTools::ConvertToUnixSlashes(path_a);
|
SystemTools::ConvertToUnixSlashes(path_a);
|
||||||
SystemTools::ConvertToUnixSlashes(path_b);
|
SystemTools::ConvertToUnixSlashes(path_b);
|
||||||
// First check this is a directory path, since we don't want the table to grow
|
// First check this is a directory path, since we don't want the table to
|
||||||
// too fat
|
// grow too fat
|
||||||
if( SystemTools::FileIsDirectory( path_a.c_str() ) )
|
if( SystemTools::FileIsDirectory( path_a.c_str() ) )
|
||||||
{
|
{
|
||||||
// Make sure the path is a full path and does not contain no '..'
|
// 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 '/'
|
// Before inserting make sure path ends with '/'
|
||||||
path_a += '/'; path_b += '/';
|
path_a += '/'; path_b += '/';
|
||||||
if( !(path_a == path_b) )
|
if( !(path_a == path_b) )
|
||||||
{
|
{
|
||||||
TranslationMap.insert(
|
SystemTools::TranslationMap->insert(
|
||||||
kwsys_stl::pair<kwsys_stl::string,kwsys_stl::string>(path_a, path_b));
|
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:
|
// 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:
|
// 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;
|
kwsys_stl::map<kwsys_stl::string,kwsys_stl::string>::const_iterator it;
|
||||||
for(it = TranslationMap.begin();
|
for(it = SystemTools::TranslationMap->begin();
|
||||||
it != TranslationMap.end();
|
it != SystemTools::TranslationMap->end();
|
||||||
++it )
|
++it )
|
||||||
{
|
{
|
||||||
// We need to check of the path is a substring of the other path
|
// 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;
|
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
|
} // namespace KWSYS_NAMESPACE
|
||||||
|
|
||||||
#if defined(_MSC_VER) && defined(_DEBUG)
|
#if defined(_MSC_VER) && defined(_DEBUG)
|
||||||
|
@ -2033,3 +2079,4 @@ namespace KWSYS_NAMESPACE
|
||||||
void SystemTools::EnableMSVCDebugHook() {}
|
void SystemTools::EnableMSVCDebugHook() {}
|
||||||
} // namespace KWSYS_NAMESPACE
|
} // namespace KWSYS_NAMESPACE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,9 @@ typedef unsigned short mode_t;
|
||||||
namespace @KWSYS_NAMESPACE@
|
namespace @KWSYS_NAMESPACE@
|
||||||
{
|
{
|
||||||
|
|
||||||
|
class SystemToolsManager;
|
||||||
|
class SystemToolsTranslationMap;
|
||||||
|
|
||||||
/** \class SystemTools
|
/** \class SystemTools
|
||||||
* \brief A collection of useful platform-independent system functions.
|
* \brief A collection of useful platform-independent system functions.
|
||||||
*/
|
*/
|
||||||
|
@ -330,13 +333,37 @@ protected:
|
||||||
static kwsys_stl::string ConvertToWindowsOutputPath(const char*);
|
static kwsys_stl::string ConvertToWindowsOutputPath(const char*);
|
||||||
|
|
||||||
private:
|
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
|
* Path translation table from dir to refdir
|
||||||
* Each time 'dir' will be found it will be replace by '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@
|
} // namespace @KWSYS_NAMESPACE@
|
||||||
|
|
||||||
/* Undefine temporary macros. */
|
/* Undefine temporary macros. */
|
||||||
|
|
Loading…
Reference in New Issue