summaryrefslogtreecommitdiff
path: root/src/context
diff options
context:
space:
mode:
authorAndres Noetzli <andres.noetzli@gmail.com>2021-09-02 05:26:28 -0700
committerGitHub <noreply@github.com>2021-09-02 12:26:28 +0000
commitef80ba053b022ec624ee93a29a4dbc674226b3d4 (patch)
tree2434638b300b218789abeced720c8f31f5e733d6 /src/context
parentb11a6d57ded753885e272ce69612ff15a591c592 (diff)
Remove unused `Backtracker` (#7115)
backtrackable.h was defining a datastructure Backtracker, which was a member in ArrayInfo and Info but it was not doing anything.
Diffstat (limited to 'src/context')
-rw-r--r--src/context/CMakeLists.txt1
-rw-r--r--src/context/backtrackable.h221
2 files changed, 0 insertions, 222 deletions
diff --git a/src/context/CMakeLists.txt b/src/context/CMakeLists.txt
index 73166462c..6cc066235 100644
--- a/src/context/CMakeLists.txt
+++ b/src/context/CMakeLists.txt
@@ -14,7 +14,6 @@
##
set(LIBCONTEXT_SOURCES
- backtrackable.h
cddense_set.h
cdhashmap.h
cdhashmap_forward.h
diff --git a/src/context/backtrackable.h b/src/context/backtrackable.h
deleted file mode 100644
index 28654dbdf..000000000
--- a/src/context/backtrackable.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/******************************************************************************
- * Top contributors (to current version):
- * Morgan Deters, Mathias Preiner
- *
- * This file is part of the cvc5 project.
- *
- * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
- * in the top-level source directory and their institutional affiliations.
- * All rights reserved. See the file COPYING in the top-level source
- * directory for licensing information.
- * ****************************************************************************
- *
- * Contains a backtrackable list.
- */
-
-#include "cvc5_private.h"
-
-#ifndef CVC5__UTIL__BACKTRACKABLE_H
-#define CVC5__UTIL__BACKTRACKABLE_H
-
-#include <cstdlib>
-#include <vector>
-#include "context/cdo.h"
-
-namespace cvc5 {
-
-template <class T> class List;
-template <class T> class List_iterator;
-template <class T> class Backtracker;
-
-template <class T>
-class ListNode {
-private:
- T data;
- ListNode<T>* next;
-
- bool empty;
- ListNode(const T& t, ListNode<T>* n, bool e = false) : data(t), next(n), empty(e) {}
- ~ListNode() {
- // maybe set to NULL
- delete next;
- }
-
- friend class List<T>;
- friend class List_iterator<T>;
-};/* class ListNode<T> */
-
-template <class T>
-class List_iterator : public std::iterator <std::forward_iterator_tag, T> {
- friend class List<T>;
-
-public:
- const T& operator*();
- List_iterator<T>& operator++();
- List_iterator<T> operator++(int);
- bool operator!=(const List_iterator<T> & other) const;
-
-private:
- const ListNode<T>* pointee;
- List_iterator(const ListNode<T>* p) : pointee(p) {}
-
-};/* class List_iterator<T> */
-
-template <class T>
-const T& List_iterator<T>::operator*() {
- return pointee->data;
-}
-
-template <class T>
-List_iterator<T>& List_iterator<T>::operator++() {
- Assert(pointee != NULL);
- pointee = pointee->next;
- while(pointee != NULL && pointee->empty ) {
- pointee = pointee->next;
- }
- return *this;
-}
-
-template <class T>
-List_iterator<T> List_iterator<T>::operator++(int) {
- List_iterator<T> it = *this;
- ++*this;
- return it;
-}
-
-template <class T>
-bool List_iterator<T>::operator!=(const List_iterator<T>& other) const {
- return (this->pointee != other.pointee);
-}
-
-// !! for the backtracking to work the lists must be allocated on the heap
-// therefore the hashmap from TNode to List<TNode> should store pointers!
-template <class T>
-class List {
- ListNode<T>* head;
- ListNode<T>* tail;
- ListNode<T>* ptr_to_head;
- bool uninitialized;
- Backtracker<T>* bck;
- List (const List&) {}
-public:
- List(Backtracker<T>* b) : ptr_to_head(NULL), uninitialized(true), bck(b) {
- head = tail = (ListNode<T>*)calloc(1,sizeof(ListNode<T>));
- head->next = NULL;
- head->empty = true;
- }
- ~List() {delete head;}
- bool empty() {
- bck->checkConsistency();
- return head == NULL;
- }
- void append(const T& d);
- //typedef List_iterator<T> iterator;
- typedef List_iterator<T> const_iterator;
-
- const_iterator begin() {
- bck->checkConsistency();
- if(head->empty) {
- ListNode<T>* temp = head;
- // if the head is empty return the first non-empty element or NULL
- while(temp != NULL && temp->empty ) {
- temp = temp->next;
- }
- return List_iterator<T>(temp);
- }
- return List_iterator<T>(head);
- }
-
- const_iterator end() {
- bck->checkConsistency();
- return List_iterator<T>(NULL);
- }
- void concat(List<T>* other);
- void unconcat(List<T>* other);
-};/* class List */
-
-template <class T>
-void List<T>::append (const T& d) {
- bck->checkConsistency();
-
- if(uninitialized) {
- new(head)ListNode<T> (d, head->next);
- //head->data = d;
- head->empty = false;
- //Assert(tail == head); FIXME: do I need this because this list might be empty but append to another one
- uninitialized = false;
-
- } else {
- ListNode<T>* new_node = new ListNode<T>(d, head);
- head = new_node;
- }
-
- if(ptr_to_head != NULL) {
- ptr_to_head->next = head;
- }
-}
-
-template <class T>
-void List<T>::concat (List<T>* other) {
- bck->checkConsistency();
- bck->notifyConcat(this, other);
- Assert(tail->next == NULL);
- tail->next = other->head;
- Assert(other->ptr_to_head == NULL);
- other->ptr_to_head = tail;
- tail = other->tail;
-}
-
-template <class T>
-void List<T>::unconcat(List<T>* other) {
- // we do not need to check consistency since this is only called by the
- // Backtracker when we are inconsistent
- Assert(other->ptr_to_head != NULL);
- other->ptr_to_head->next = NULL;
- tail = other->ptr_to_head;
- other->ptr_to_head = NULL;
-}
-
-/* Backtrackable Table */
-
-template <class T>
-class Backtracker {
- friend class List<T>;
- std::vector<std::pair<List<T>*,List<T>*> > undo_stack;
-
- int curr_level;
- context::CDO<int> pop_level;
-
- void checkConsistency();
- void notifyConcat(List<T>* a, List<T>* b);
-public:
- Backtracker(context::Context* c) : undo_stack(), curr_level(0), pop_level(c, 0) {}
- ~Backtracker() {}
-
-};/* class Backtrackable */
-
-template <class T> void Backtracker<T>::notifyConcat(List<T>* a, List<T>* b) {
- curr_level++;
- pop_level.set(pop_level.get()+1);
- undo_stack.push_back( std::make_pair(a, b));
-}
-
-template <class T> void Backtracker<T>::checkConsistency() {
- if( curr_level == pop_level || pop_level == -1) {
- return;
- }
- Assert(curr_level > pop_level);
-
- while (curr_level > pop_level) {
- curr_level--;
- List<T>* l1 = undo_stack[curr_level].first;
- List<T>* l2 = undo_stack[curr_level].second;
- l1->unconcat(l2);
- undo_stack.pop_back();
- }
- Assert(curr_level == pop_level);
-}
-
-} // namespace cvc5
-
-#endif /* CVC5__UTIL__BACKTRACKABLE_H */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback