diff --git a/Assignment_2/FineList.cpp b/Assignment_2/FineList.cpp index 6276b8f..04b044a 100644 --- a/Assignment_2/FineList.cpp +++ b/Assignment_2/FineList.cpp @@ -1,10 +1,13 @@ +#pragma once + #include #include"Node.cpp" +#include"Set.cpp" // TODO: implement fine grained locking -class FineSet { +class FineSet:public Set { Node* first; public: FineSet(); @@ -13,11 +16,7 @@ class FineSet { bool ctn(int element); }; -FineSet::FineSet(){ - first = Node::Dummy(); // dummy node; - Node* last = Node::Dummy(); - first->next = last; -} +FineSet::FineSet() : Set() { } bool FineSet::add(int element) { this->first->lock(); diff --git a/Assignment_2/LazyList.cpp b/Assignment_2/LazyList.cpp index 32dc305..419a7cf 100644 --- a/Assignment_2/LazyList.cpp +++ b/Assignment_2/LazyList.cpp @@ -1,8 +1,11 @@ +#pragma once + #include #include"Node.cpp" +#include"Set.cpp" -class LazySet { +class LazySet:public Set { protected: Node* first; std::tuple locate(int element); @@ -14,11 +17,7 @@ class LazySet { bool ctn(int element); }; -LazySet::LazySet(){ - first = Node::Dummy(); // dummy node; - Node* last = Node::Dummy(); - first->next = last; -} +LazySet::LazySet() : Set() { } bool LazySet::add(int element) { auto tuple = locate(element); diff --git a/Assignment_2/OptimisticList.cpp b/Assignment_2/OptimisticList.cpp index e73cea8..6d1c198 100644 --- a/Assignment_2/OptimisticList.cpp +++ b/Assignment_2/OptimisticList.cpp @@ -1,8 +1,11 @@ +#pragma once + #include #include"Node.cpp" +#include"Set.cpp" -class OptimisticSet { +class OptimisticSet:public Set { protected: Node* first; bool validate(Node* p, Node* c); @@ -14,11 +17,7 @@ class OptimisticSet { }; -OptimisticSet::OptimisticSet(){ - first = Node::Dummy(); // dummy node; - Node* last = Node::Dummy(); - first->next = last; -} +OptimisticSet::OptimisticSet() : Set() { } bool OptimisticSet::add(int element) { Node* p; diff --git a/Assignment_2/Set.cpp b/Assignment_2/Set.cpp new file mode 100644 index 0000000..9e2622c --- /dev/null +++ b/Assignment_2/Set.cpp @@ -0,0 +1,19 @@ +#pragma once + +#include "Node.cpp" + +class Set { + protected: + Set(); + Node* first; + public: + virtual bool add(int element); + virtual bool rmv(int element); + virtual bool ctn(int element); +}; + +Set::Set(){ + first = Node::Dummy(); // dummy node; + Node* last = Node::Dummy(); + first->next = last; +} \ No newline at end of file