diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-07-03 17:21:47 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-07-03 17:21:47 +0300 |
commit | 72f4460325aada58e9fae35c626832c31b1ed087 (patch) | |
tree | 11aed83993922646951f849f21e743517ae98889 /src/analysis/collections.cpp | |
parent | c34af863bf4f6ad74257302c2effb535dd115289 (diff) | |
download | paranucker-72f4460325aada58e9fae35c626832c31b1ed087.tar.gz paranucker-72f4460325aada58e9fae35c626832c31b1ed087.tar.bz2 paranucker-72f4460325aada58e9fae35c626832c31b1ed087.tar.xz paranucker-72f4460325aada58e9fae35c626832c31b1ed087.zip |
Add incomplete implimentation for checkedElse* sets.
Diffstat (limited to 'src/analysis/collections.cpp')
-rw-r--r-- | src/analysis/collections.cpp | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/analysis/collections.cpp b/src/analysis/collections.cpp index 9dc4429..81559f9 100644 --- a/src/analysis/collections.cpp +++ b/src/analysis/collections.cpp @@ -165,6 +165,13 @@ void mergeThenNullChecked(WalkItem &wi1, WalkItem &wi2) wi2.checkedThenNullVars.end()); } +// merger two checked for null var sets +void mergeElseNullChecked(WalkItem &wi1, WalkItem &wi2) +{ + wi1.checkedElseNullVars.insert(wi2.checkedElseNullVars.begin(), + wi2.checkedElseNullVars.end()); +} + // merger two checked for non null var sets void mergeThenNonNullChecked(WalkItem &wi1, WalkItem &wi2) { @@ -172,6 +179,13 @@ void mergeThenNonNullChecked(WalkItem &wi1, WalkItem &wi2) wi2.checkedThenNonNullVars.end()); } +// merger two checked for non null var sets +void mergeElseNonNullChecked(WalkItem &wi1, WalkItem &wi2) +{ + wi1.checkedElseNonNullVars.insert(wi2.checkedElseNonNullVars.begin(), + wi2.checkedElseNonNullVars.end()); +} + // intersect two checked for null sets void intersectThenNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) { @@ -182,6 +196,16 @@ void intersectThenNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) } } +// intersect two checked for null sets +void intersectElseNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) +{ + FOR_EACH (it, wi1.checkedElseNullVars) + { + if (isIn(it, wi2.checkedElseNullVars)) + wi.checkedElseNullVars.insert(it); + } +} + // intersect two checked for non null sets void intersectThenNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) { @@ -192,6 +216,16 @@ void intersectThenNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) } } +// intersect two checked for non null sets +void intersectElseNonNullChecked(WalkItem &wi, WalkItem &wi1, WalkItem &wi2) +{ + FOR_EACH (it, wi1.checkedElseNonNullVars) + { + if (isIn(it, wi2.checkedElseNonNullVars)) + wi.checkedElseNonNullVars.insert(it); + } +} + void removeFromNeedCheckNullVars(WalkItem &wi, std::set<std::string> &vars) { FOR_EACH (it, vars) |