diff options
| author | nyamatongwe <unknown> | 2007-07-24 08:14:06 +0000 | 
|---|---|---|
| committer | nyamatongwe <unknown> | 2007-07-24 08:14:06 +0000 | 
| commit | 45fddf64aa6d4cdfb403f21c7627a29d94f6b39f (patch) | |
| tree | fea0d82e1b9d5540aa260d1de83c504a23821cfd | |
| parent | 74873d9b7ed71b7636dbbadaf9788f0eabb3eaf0 (diff) | |
| download | scintilla-mirror-45fddf64aa6d4cdfb403f21c7627a29d94f6b39f.tar.gz | |
Changes to PropSet and PropSetFile make wild card suffixes work; evaluate
file patterns from the starting PropSet, and add some const corectness.
| -rw-r--r-- | include/PropSet.h | 11 | ||||
| -rw-r--r-- | src/PropSet.cxx | 26 | 
2 files changed, 11 insertions, 26 deletions
| diff --git a/include/PropSet.h b/include/PropSet.h index 4a845c263..91bc7072b 100644 --- a/include/PropSet.h +++ b/include/PropSet.h @@ -42,7 +42,6 @@ protected:  		}  		return ret;  	} -	static bool IncludesVar(const char *value, const char *key);  public:  	PropSet *superPS; @@ -52,12 +51,12 @@ public:  	void Set(const char *keyVal);  	void Unset(const char *key, int lenKey=-1);  	void SetMultiple(const char *s); -	SString Get(const char *key); -	SString GetExpanded(const char *key); -	SString Expand(const char *withVars, int maxExpands=100); -	int GetInt(const char *key, int defaultValue=0); +	SString Get(const char *key) const; +	SString GetExpanded(const char *key) const; +	SString Expand(const char *withVars, int maxExpands=100) const; +	int GetInt(const char *key, int defaultValue=0) const;  	void Clear(); -	char *ToString();	// Caller must delete[] the return value +	char *ToString() const;	// Caller must delete[] the return value  private:  	// copy-value semantics not implemented diff --git a/src/PropSet.cxx b/src/PropSet.cxx index 5aa99de01..a1c366c3b 100644 --- a/src/PropSet.cxx +++ b/src/PropSet.cxx @@ -424,7 +424,7 @@ void PropSet::SetMultiple(const char *s) {  	Set(s);  } -SString PropSet::Get(const char *key) { +SString PropSet::Get(const char *key) const {  	unsigned int hash = HashString(key, strlen(key));  	for (Property *p = props[hash % hashRoots]; p; p = p->next) {  		if ((hash == p->hash) && (0 == strcmp(p->key, key))) { @@ -439,20 +439,6 @@ SString PropSet::Get(const char *key) {  	}  } -bool PropSet::IncludesVar(const char *value, const char *key) { -	const char *var = strstr(value, "$("); -	while (var) { -		if (isprefix(var + 2, key) && (var[2 + strlen(key)] == ')')) { -			// Found $(key) which would lead to an infinite loop so exit -			return true; -		} -		var = strstr(var + 2, ")"); -		if (var) -			var = strstr(var + 1, "$("); -	} -	return false; -} -  // There is some inconsistency between GetExpanded("foo") and Expand("$(foo)").  // A solution is to keep a stack of variables that have been expanded, so that  // recursive expansions can be skipped.  For now I'll just use the C++ stack @@ -470,7 +456,7 @@ struct VarChain {  	const VarChain *link;  }; -static int ExpandAllInPlace(PropSet &props, SString &withVars, int maxExpands, const VarChain &blankVars = VarChain()) { +static int ExpandAllInPlace(const PropSet &props, SString &withVars, int maxExpands, const VarChain &blankVars = VarChain()) {  	int varStart = withVars.search("$(");  	while ((varStart >= 0) && (maxExpands > 0)) {  		int varEnd = withVars.search(")", varStart+2); @@ -506,19 +492,19 @@ static int ExpandAllInPlace(PropSet &props, SString &withVars, int maxExpands, c  	return maxExpands;  } -SString PropSet::GetExpanded(const char *key) { +SString PropSet::GetExpanded(const char *key) const {  	SString val = Get(key);  	ExpandAllInPlace(*this, val, 100, VarChain(key));  	return val;  } -SString PropSet::Expand(const char *withVars, int maxExpands) { +SString PropSet::Expand(const char *withVars, int maxExpands) const {  	SString val = withVars;  	ExpandAllInPlace(*this, val, maxExpands);  	return val;  } -int PropSet::GetInt(const char *key, int defaultValue) { +int PropSet::GetInt(const char *key, int defaultValue) const {  	SString val = GetExpanded(key);  	if (val.length())  		return val.value(); @@ -555,7 +541,7 @@ void PropSet::Clear() {  	}  } -char *PropSet::ToString() { +char *PropSet::ToString() const {  	size_t len=0;  	for (int r = 0; r < hashRoots; r++) {  		for (Property *p = props[r]; p; p = p->next) { | 
