-MCAtom *MCModule::createAtom(MCAtom::AtomType Type,
- uint64_t Begin, uint64_t End) {
- assert(Begin < End && "Creating MCAtom with endpoints reversed?");
+static bool AtomComp(const MCAtom *LHS, const MCAtom *RHS) {
+ return LHS->getEndAddr() < RHS->getEndAddr();
+}
+
+MCModule::const_atom_iterator MCModule::atom_lower_bound(uint64_t Addr) const {
+ // This is a dummy atom, because VS 2008 doesn't like asymmetric comparators.
+ MCDataAtom AddrAtom(0, Addr, Addr);
+ return std::lower_bound(atom_begin(), atom_end(), &AddrAtom, AtomComp);
+}
+
+MCModule::atom_iterator MCModule::atom_lower_bound(uint64_t Addr) {
+ MCDataAtom AddrAtom(0, Addr, Addr);
+ return std::lower_bound(atom_begin(), atom_end(), &AddrAtom, AtomComp);
+}
+
+void MCModule::map(MCAtom *NewAtom) {
+ uint64_t Begin = NewAtom->Begin;
+
+ assert(Begin <= NewAtom->End && "Creating MCAtom with endpoints reversed?");