generealized to superclass set

This commit is contained in:
2020-12-31 16:30:34 +01:00
parent 55b7225952
commit c4e62b1360
4 changed files with 34 additions and 18 deletions

View File

@@ -1,10 +1,13 @@
#pragma once
#include <bits/stdc++.h> #include <bits/stdc++.h>
#include"Node.cpp" #include"Node.cpp"
#include"Set.cpp"
// TODO: implement fine grained locking // TODO: implement fine grained locking
class FineSet { class FineSet:public Set {
Node* first; Node* first;
public: public:
FineSet(); FineSet();
@@ -13,11 +16,7 @@ class FineSet {
bool ctn(int element); bool ctn(int element);
}; };
FineSet::FineSet(){ FineSet::FineSet() : Set() { }
first = Node::Dummy(); // dummy node;
Node* last = Node::Dummy();
first->next = last;
}
bool FineSet::add(int element) { bool FineSet::add(int element) {
this->first->lock(); this->first->lock();

View File

@@ -1,8 +1,11 @@
#pragma once
#include <bits/stdc++.h> #include <bits/stdc++.h>
#include"Node.cpp" #include"Node.cpp"
#include"Set.cpp"
class LazySet { class LazySet:public Set {
protected: protected:
Node* first; Node* first;
std::tuple<Node*, Node*> locate(int element); std::tuple<Node*, Node*> locate(int element);
@@ -14,11 +17,7 @@ class LazySet {
bool ctn(int element); bool ctn(int element);
}; };
LazySet::LazySet(){ LazySet::LazySet() : Set() { }
first = Node::Dummy(); // dummy node;
Node* last = Node::Dummy();
first->next = last;
}
bool LazySet::add(int element) { bool LazySet::add(int element) {
auto tuple = locate(element); auto tuple = locate(element);

View File

@@ -1,8 +1,11 @@
#pragma once
#include <bits/stdc++.h> #include <bits/stdc++.h>
#include"Node.cpp" #include"Node.cpp"
#include"Set.cpp"
class OptimisticSet { class OptimisticSet:public Set {
protected: protected:
Node* first; Node* first;
bool validate(Node* p, Node* c); bool validate(Node* p, Node* c);
@@ -14,11 +17,7 @@ class OptimisticSet {
}; };
OptimisticSet::OptimisticSet(){ OptimisticSet::OptimisticSet() : Set() { }
first = Node::Dummy(); // dummy node;
Node* last = Node::Dummy();
first->next = last;
}
bool OptimisticSet::add(int element) { bool OptimisticSet::add(int element) {
Node* p; Node* p;

19
Assignment_2/Set.cpp Normal file
View File

@@ -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;
}