: P(r, (unsigned) k), Offset(offset) {}
public:
- bool isDefault() const { return P.getInt() == Default; }
bool isDirect() const { return P.getInt() == Direct; }
const MemRegion *getRegion() const { return P.getPointer(); }
class RegionStoreFeatures {
bool SupportsFields;
- bool SupportsRemaining;
-
public:
RegionStoreFeatures(minimal_features_tag) :
- SupportsFields(false), SupportsRemaining(false) {}
+ SupportsFields(false) {}
RegionStoreFeatures(maximal_features_tag) :
- SupportsFields(true), SupportsRemaining(false) {}
+ SupportsFields(true) {}
void enableFields(bool t) { SupportsFields = t; }
bool supportsFields() const { return SupportsFields; }
- bool supportsRemaining() const { return SupportsRemaining; }
};
}
RegionStoreSubRegionMap *getRegionStoreSubRegionMap(Store store);
- Optional<SVal> getBinding(RegionBindings B, const MemRegion *R);
Optional<SVal> getDirectBinding(RegionBindings B, const MemRegion *R);
/// getDefaultBinding - Returns an SVal* representing an optional default
/// binding associated with a region and its subregions.
return Remove(Remove(B, R, BindingKey::Direct), R, BindingKey::Default);
}
- Store Remove(Store store, BindingKey K);
-
public: // Part of public interface to class.
Store Bind(Store store, Loc LV, SVal V);
return Optional<SVal>();
}
-Optional<SVal> RegionStoreManager::getBinding(RegionBindings B,
- const MemRegion *R) {
-
- if (const Optional<SVal> &V = getDirectBinding(B, R))
- return V;
-
- return getDefaultBinding(B, R);
-}
-
static bool IsReinterpreted(QualType RTy, QualType UsedTy, ASTContext &Ctx) {
RTy = Ctx.getCanonicalType(RTy);
UsedTy = Ctx.getCanonicalType(UsedTy);
return Remove(B, BindingKey::Make(R, k));
}
-Store RegionStoreManager::Remove(Store store, BindingKey K) {
- RegionBindings B = GetRegionBindings(store);
- return Remove(B, K).getRoot();
-}
-
//===----------------------------------------------------------------------===//
// State pruning.
//===----------------------------------------------------------------------===//