3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-23 17:15:31 +00:00

First step towards explaining single bits

This commit is contained in:
Clemens Eisenhofer 2022-12-19 12:27:37 +01:00
parent d5bc4b84a7
commit ec06027515
8 changed files with 418 additions and 6 deletions

View file

@ -132,8 +132,9 @@ class tbv_ref {
tbv_manager& mgr;
tbv* d;
public:
tbv_ref(tbv_manager& mgr):mgr(mgr),d(nullptr) {}
tbv_ref(tbv_manager& mgr, tbv* d):mgr(mgr),d(d) {}
tbv_ref(tbv_manager& mgr) : mgr(mgr), d(nullptr) {}
tbv_ref(tbv_manager& mgr, tbv* d) : mgr(mgr), d(d) {}
tbv_ref(tbv_ref&& d) : mgr(d.mgr), d(d.detach()) {}
~tbv_ref() {
if (d) mgr.deallocate(d);
}
@ -144,8 +145,11 @@ public:
}
tbv& operator*() { return *d; }
tbv* operator->() { return d; }
tbv* get() { return d; }
tbit operator[](unsigned idx) const { return (*d)[idx]; }
tbv* get() const { return d; }
tbv* detach() { tbv* result = d; d = nullptr; return result; }
tbv_manager& manager() const { return mgr; }
unsigned num_tbits() const { return mgr.num_tbits(); }
};