cmState: Move ParseCacheEntry from cmCacheManager.
This commit is contained in:
parent
b5212c68de
commit
e2eecae205
|
@ -27,90 +27,6 @@ cmCacheManager::cmCacheManager()
|
||||||
this->CacheMinorVersion = 0;
|
this->CacheMinorVersion = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ParseEntryWithoutType(const std::string& entry,
|
|
||||||
std::string& var,
|
|
||||||
std::string& value)
|
|
||||||
{
|
|
||||||
// input line is: key=value
|
|
||||||
static cmsys::RegularExpression reg(
|
|
||||||
"^([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
|
||||||
// input line is: "key"=value
|
|
||||||
static cmsys::RegularExpression regQuoted(
|
|
||||||
"^\"([^\"]*)\"=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
|
||||||
bool flag = false;
|
|
||||||
if(regQuoted.find(entry))
|
|
||||||
{
|
|
||||||
var = regQuoted.match(1);
|
|
||||||
value = regQuoted.match(2);
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
else if (reg.find(entry))
|
|
||||||
{
|
|
||||||
var = reg.match(1);
|
|
||||||
value = reg.match(2);
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if value is enclosed in single quotes ('foo') then remove them
|
|
||||||
// it is used to enclose trailing space or tab
|
|
||||||
if (flag &&
|
|
||||||
value.size() >= 2 &&
|
|
||||||
value[0] == '\'' &&
|
|
||||||
value[value.size() - 1] == '\'')
|
|
||||||
{
|
|
||||||
value = value.substr(1,
|
|
||||||
value.size() - 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cmCacheManager::ParseEntry(const std::string& entry,
|
|
||||||
std::string& var,
|
|
||||||
std::string& value,
|
|
||||||
cmState::CacheEntryType& type)
|
|
||||||
{
|
|
||||||
// input line is: key:type=value
|
|
||||||
static cmsys::RegularExpression reg(
|
|
||||||
"^([^=:]*):([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
|
||||||
// input line is: "key":type=value
|
|
||||||
static cmsys::RegularExpression regQuoted(
|
|
||||||
"^\"([^\"]*)\":([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
|
||||||
bool flag = false;
|
|
||||||
if(regQuoted.find(entry))
|
|
||||||
{
|
|
||||||
var = regQuoted.match(1);
|
|
||||||
type = cmState::StringToCacheEntryType(regQuoted.match(2).c_str());
|
|
||||||
value = regQuoted.match(3);
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
else if (reg.find(entry))
|
|
||||||
{
|
|
||||||
var = reg.match(1);
|
|
||||||
type = cmState::StringToCacheEntryType(reg.match(2).c_str());
|
|
||||||
value = reg.match(3);
|
|
||||||
flag = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if value is enclosed in single quotes ('foo') then remove them
|
|
||||||
// it is used to enclose trailing space or tab
|
|
||||||
if (flag &&
|
|
||||||
value.size() >= 2 &&
|
|
||||||
value[0] == '\'' &&
|
|
||||||
value[value.size() - 1] == '\'')
|
|
||||||
{
|
|
||||||
value = value.substr(1,
|
|
||||||
value.size() - 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!flag)
|
|
||||||
{
|
|
||||||
return ParseEntryWithoutType(entry, var, value);
|
|
||||||
}
|
|
||||||
|
|
||||||
return flag;
|
|
||||||
}
|
|
||||||
|
|
||||||
void cmCacheManager::CleanCMakeFiles(const std::string& path)
|
void cmCacheManager::CleanCMakeFiles(const std::string& path)
|
||||||
{
|
{
|
||||||
std::string glob = path;
|
std::string glob = path;
|
||||||
|
@ -187,7 +103,7 @@ bool cmCacheManager::LoadCache(const std::string& path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
e.SetProperty("HELPSTRING", helpString.c_str());
|
e.SetProperty("HELPSTRING", helpString.c_str());
|
||||||
if(cmCacheManager::ParseEntry(realbuffer, entryKey, e.Value, e.Type))
|
if(cmState::ParseCacheEntry(realbuffer, entryKey, e.Value, e.Type))
|
||||||
{
|
{
|
||||||
if ( excludes.find(entryKey) == excludes.end() )
|
if ( excludes.find(entryKey) == excludes.end() )
|
||||||
{
|
{
|
||||||
|
|
|
@ -121,12 +121,6 @@ public:
|
||||||
int GetSize() {
|
int GetSize() {
|
||||||
return static_cast<int>(this->Cache.size()); }
|
return static_cast<int>(this->Cache.size()); }
|
||||||
|
|
||||||
///! Break up a line like VAR:type="value" into var, type and value
|
|
||||||
static bool ParseEntry(const std::string& entry,
|
|
||||||
std::string& var,
|
|
||||||
std::string& value,
|
|
||||||
cmState::CacheEntryType& type);
|
|
||||||
|
|
||||||
///! Get a value from the cache given a key
|
///! Get a value from the cache given a key
|
||||||
const char* GetInitializedCacheValue(const std::string& key) const;
|
const char* GetInitializedCacheValue(const std::string& key) const;
|
||||||
|
|
||||||
|
|
|
@ -1769,3 +1769,87 @@ bool operator!=(const cmState::Snapshot& lhs, const cmState::Snapshot& rhs)
|
||||||
{
|
{
|
||||||
return lhs.Position != rhs.Position;
|
return lhs.Position != rhs.Position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool ParseEntryWithoutType(const std::string& entry,
|
||||||
|
std::string& var,
|
||||||
|
std::string& value)
|
||||||
|
{
|
||||||
|
// input line is: key=value
|
||||||
|
static cmsys::RegularExpression reg(
|
||||||
|
"^([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
||||||
|
// input line is: "key"=value
|
||||||
|
static cmsys::RegularExpression regQuoted(
|
||||||
|
"^\"([^\"]*)\"=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
||||||
|
bool flag = false;
|
||||||
|
if(regQuoted.find(entry))
|
||||||
|
{
|
||||||
|
var = regQuoted.match(1);
|
||||||
|
value = regQuoted.match(2);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
else if (reg.find(entry))
|
||||||
|
{
|
||||||
|
var = reg.match(1);
|
||||||
|
value = reg.match(2);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if value is enclosed in single quotes ('foo') then remove them
|
||||||
|
// it is used to enclose trailing space or tab
|
||||||
|
if (flag &&
|
||||||
|
value.size() >= 2 &&
|
||||||
|
value[0] == '\'' &&
|
||||||
|
value[value.size() - 1] == '\'')
|
||||||
|
{
|
||||||
|
value = value.substr(1,
|
||||||
|
value.size() - 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool cmState::ParseCacheEntry(const std::string& entry,
|
||||||
|
std::string& var,
|
||||||
|
std::string& value,
|
||||||
|
CacheEntryType& type)
|
||||||
|
{
|
||||||
|
// input line is: key:type=value
|
||||||
|
static cmsys::RegularExpression reg(
|
||||||
|
"^([^=:]*):([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
||||||
|
// input line is: "key":type=value
|
||||||
|
static cmsys::RegularExpression regQuoted(
|
||||||
|
"^\"([^\"]*)\":([^=]*)=(.*[^\r\t ]|[\r\t ]*)[\r\t ]*$");
|
||||||
|
bool flag = false;
|
||||||
|
if(regQuoted.find(entry))
|
||||||
|
{
|
||||||
|
var = regQuoted.match(1);
|
||||||
|
type = cmState::StringToCacheEntryType(regQuoted.match(2).c_str());
|
||||||
|
value = regQuoted.match(3);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
else if (reg.find(entry))
|
||||||
|
{
|
||||||
|
var = reg.match(1);
|
||||||
|
type = cmState::StringToCacheEntryType(reg.match(2).c_str());
|
||||||
|
value = reg.match(3);
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if value is enclosed in single quotes ('foo') then remove them
|
||||||
|
// it is used to enclose trailing space or tab
|
||||||
|
if (flag &&
|
||||||
|
value.size() >= 2 &&
|
||||||
|
value[0] == '\'' &&
|
||||||
|
value[value.size() - 1] == '\'')
|
||||||
|
{
|
||||||
|
value = value.substr(1,
|
||||||
|
value.size() - 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!flag)
|
||||||
|
{
|
||||||
|
return ParseEntryWithoutType(entry, var, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
|
@ -242,6 +242,12 @@ public:
|
||||||
void RemoveCacheEntryProperty(std::string const& key,
|
void RemoveCacheEntryProperty(std::string const& key,
|
||||||
std::string const& propertyName);
|
std::string const& propertyName);
|
||||||
|
|
||||||
|
///! Break up a line like VAR:type="value" into var, type and value
|
||||||
|
static bool ParseCacheEntry(const std::string& entry,
|
||||||
|
std::string& var,
|
||||||
|
std::string& value,
|
||||||
|
CacheEntryType& type);
|
||||||
|
|
||||||
Snapshot Reset();
|
Snapshot Reset();
|
||||||
// Define a property
|
// Define a property
|
||||||
void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
|
void DefineProperty(const std::string& name, cmProperty::ScopeType scope,
|
||||||
|
|
|
@ -216,7 +216,7 @@ bool cmake::SetCacheArgs(const std::vector<std::string>& args)
|
||||||
}
|
}
|
||||||
std::string var, value;
|
std::string var, value;
|
||||||
cmState::CacheEntryType type = cmState::UNINITIALIZED;
|
cmState::CacheEntryType type = cmState::UNINITIALIZED;
|
||||||
if(cmCacheManager::ParseEntry(entry, var, value, type))
|
if(cmState::ParseCacheEntry(entry, var, value, type))
|
||||||
{
|
{
|
||||||
// The value is transformed if it is a filepath for example, so
|
// The value is transformed if it is a filepath for example, so
|
||||||
// we can't compare whether the value is already in the cache until
|
// we can't compare whether the value is already in the cache until
|
||||||
|
@ -1722,7 +1722,7 @@ bool cmake::ParseCacheEntry(const std::string& entry,
|
||||||
std::string& value,
|
std::string& value,
|
||||||
cmState::CacheEntryType& type)
|
cmState::CacheEntryType& type)
|
||||||
{
|
{
|
||||||
return cmCacheManager::ParseEntry(entry, var, value, type);
|
return cmState::ParseCacheEntry(entry, var, value, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
int cmake::LoadCache()
|
int cmake::LoadCache()
|
||||||
|
|
Loading…
Reference in New Issue