Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 0a004b3

Browse files
committed
Induced to call to non-compare functions when mClassicStack is null
1 parent 4700748 commit 0a004b3

File tree

5 files changed

+139
-139
lines changed

5 files changed

+139
-139
lines changed

‎examples/upperhull/include/upperHull.hpp‎

100644100755
Lines changed: 139 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,139 @@
1-
// UpperHull : Definition
2-
#ifndef UPPERHULL
3-
#define UPPERHULL
4-
5-
/*==============================================================================
6-
Includes
7-
==============================================================================*/
8-
#include "../../../include/stackAlgo.hpp"
9-
#include "point2D.hpp"
10-
11-
double pops = 0;
12-
double total = 0;
13-
14-
/*==============================================================================
15-
Empty type for the context (empty for the Convex Hull problem)
16-
==============================================================================*/
17-
class emptyContext {};
18-
19-
/*==============================================================================
20-
Instantiation of a problem
21-
==============================================================================*/
22-
template <class I>
23-
class UpperHull : public StackAlgo<emptyContext, Point2D, I> {
24-
public:
25-
UpperHull(std::string filePath)
26-
: StackAlgo<emptyContext, Point2D, I>(filePath) {}
27-
28-
private:
29-
// Functions to run the stack
30-
Point2D readInput(std::vector<std::string> line);
31-
std::shared_ptr<emptyContext> initStack();
32-
33-
bool popCondition(Point2D data);
34-
void prePop(Point2D data);
35-
void postPop(Point2D data, Data<emptyContext, Point2D, I> elt);
36-
void noPop(Point2D data);
37-
38-
bool pushCondition(Point2D data);
39-
void prePush(Data<emptyContext, Point2D, I> elt);
40-
void postPush(Data<emptyContext, Point2D, I> elt);
41-
void noPush(Point2D data);
42-
43-
void reportStack();
44-
};
45-
46-
/*==============================================================================
47-
Stack functions to define the Convex Hull algorithm with Compressed Stack
48-
* readInput
49-
* initStack
50-
* popCondition
51-
* prePop
52-
* postPop
53-
* noPop
54-
* pushCondition
55-
* prePush
56-
* postPush
57-
* noPush
58-
* reportStack
59-
==============================================================================*/
60-
template <class I>
61-
Point2D UpperHull<I>::readInput(std::vector<std::string> line) {
62-
double x = std::stof(line[0]);
63-
double y = std::stof(line[1]);
64-
65-
Point2D p(x, y);
66-
67-
// std::cout << "I JUST READ " << p << std::endl;
68-
return p;
69-
}
70-
71-
template <class I> std::shared_ptr<emptyContext> UpperHull<I>::initStack() {
72-
73-
std::cout << "going to read two values " << std::endl;
74-
75-
// first, read and push two values
76-
StackAlgo<emptyContext, Point2D, I>::readPush(2);
77-
78-
std::cout << "done reading two values " << std::endl;
79-
80-
// then initialize context (which in this case is NULL everything
81-
std::shared_ptr<emptyContext> context;
82-
return context;
83-
}
84-
85-
template <class I> bool UpperHull<I>::popCondition(Point2D last) {
86-
Point2D minus1, minus2;
87-
total++;
88-
std::cout << std::endl << last << " <<<< pop condition enter " << std::endl;
89-
StackAlgo<emptyContext, Point2D, I>::println();
90-
91-
// read the two previous elements
92-
minus1 = StackAlgo<emptyContext, Point2D, I>::top(1).getData();
93-
if (StackAlgo<emptyContext, Point2D, I>::mStack->getBufferLength() < 2) {
94-
return true;
95-
}
96-
97-
minus2 = StackAlgo<emptyContext, Point2D, I>::top(2).getData();
98-
99-
std::cout << last << " <<<< pop condition read two before " << minus2
100-
<< minus1 << std::endl;
101-
102-
if (Point2D::orientation(minus2, minus1, last) == 1) {
103-
pops++;
104-
std::cout << last
105-
<< " <<<< "
106-
" pop condition returning true "
107-
<< pops / total << " tot " << total << std::endl;
108-
109-
return true;
110-
}
111-
std::cout << last << " "
112-
" <<<< pop condition returning false "
113-
<< pops / total << " tot " << total << std::endl;
114-
115-
return false;
116-
}
117-
template <class I> void UpperHull<I>::prePop(Point2D data) {}
118-
template <class I>
119-
void UpperHull<I>::postPop(Point2D data, Data<emptyContext, Point2D, I> elt) {
120-
std::cout << elt.getData() << " <<<< (post-)Pop!" << std::endl;
121-
}
122-
template <class I> void UpperHull<I>::noPop(Point2D data) {}
123-
124-
template <class I> bool UpperHull<I>::pushCondition(Point2D data) {
125-
std::cout << data << " <<<< push condition returning true " << std::endl;
126-
return true;
127-
}
128-
template <class I>
129-
void UpperHull<I>::prePush(Data<emptyContext, Point2D, I> elt) {}
130-
template <class I>
131-
void UpperHull<I>::postPush(Data<emptyContext, Point2D, I> elt) {
132-
std::cout << "UpperHullStackAlgo::pushAction Nothing to see here "
133-
<< elt.getData() << std::endl;
134-
}
135-
template <class I> void UpperHull<I>::noPush(Point2D data) {}
136-
137-
template <class I> void UpperHull<I>::reportStack() {}
138-
139-
#endif // UPPERHULL
1+
// UpperHull : Definition
2+
#ifndef UPPERHULL
3+
#define UPPERHULL
4+
5+
/*==============================================================================
6+
Includes
7+
==============================================================================*/
8+
#include "../../../include/stackAlgo.hpp"
9+
#include "point2D.hpp"
10+
11+
double pops = 0;
12+
double total = 0;
13+
14+
/*==============================================================================
15+
Empty type for the context (empty for the Convex Hull problem)
16+
==============================================================================*/
17+
class emptyContext {};
18+
19+
/*==============================================================================
20+
Instantiation of a problem
21+
==============================================================================*/
22+
template <class I>
23+
class UpperHull : public StackAlgo<emptyContext, Point2D, I> {
24+
public:
25+
UpperHull(std::string filePath)
26+
: StackAlgo<emptyContext, Point2D, I>(filePath) {}
27+
28+
private:
29+
// Functions to run the stack
30+
Point2D readInput(std::vector<std::string> line);
31+
std::shared_ptr<emptyContext> initStack();
32+
33+
bool popCondition(Point2D data);
34+
void prePop(Point2D data);
35+
void postPop(Point2D data, Data<emptyContext, Point2D, I> elt);
36+
void noPop(Point2D data);
37+
38+
bool pushCondition(Point2D data);
39+
void prePush(Data<emptyContext, Point2D, I> elt);
40+
void postPush(Data<emptyContext, Point2D, I> elt);
41+
void noPush(Point2D data);
42+
43+
void reportStack();
44+
};
45+
46+
/*==============================================================================
47+
Stack functions to define the Convex Hull algorithm with Compressed Stack
48+
* readInput
49+
* initStack
50+
* popCondition
51+
* prePop
52+
* postPop
53+
* noPop
54+
* pushCondition
55+
* prePush
56+
* postPush
57+
* noPush
58+
* reportStack
59+
==============================================================================*/
60+
template <class I>
61+
Point2D UpperHull<I>::readInput(std::vector<std::string> line) {
62+
double x = std::stof(line[0]);
63+
double y = std::stof(line[1]);
64+
65+
Point2D p(x, y);
66+
67+
// std::cout << "I JUST READ " << p << std::endl;
68+
return p;
69+
}
70+
71+
template <class I> std::shared_ptr<emptyContext> UpperHull<I>::initStack() {
72+
73+
std::cout << "going to read two values " << std::endl;
74+
75+
// first, read and push two values
76+
StackAlgo<emptyContext, Point2D, I>::readPush(2);
77+
78+
std::cout << "done reading two values " << std::endl;
79+
80+
// then initialize context (which in this case is NULL everything
81+
std::shared_ptr<emptyContext> context;
82+
return context;
83+
}
84+
85+
template <class I> bool UpperHull<I>::popCondition(Point2D last) {
86+
Point2D minus1, minus2;
87+
total++;
88+
std::cout << std::endl << last << " <<<< pop condition enter " << std::endl;
89+
StackAlgo<emptyContext, Point2D, I>::println();
90+
91+
// read the two previous elements
92+
minus1 = StackAlgo<emptyContext, Point2D, I>::top(1).getData();
93+
if (StackAlgo<emptyContext, Point2D, I>::mStack->getBufferLength() < 2) {
94+
return true;
95+
}
96+
97+
minus2 = StackAlgo<emptyContext, Point2D, I>::top(2).getData();
98+
99+
std::cout << last << " <<<< pop condition read two before " << minus2
100+
<< minus1 << std::endl;
101+
102+
if (Point2D::orientation(minus2, minus1, last) == 1) {
103+
pops++;
104+
std::cout << last
105+
<< " <<<< "
106+
" pop condition returning true "
107+
<< pops / total << " tot " << total << std::endl;
108+
109+
return true;
110+
}
111+
std::cout << last << " "
112+
" <<<< pop condition returning false "
113+
<< pops / total << " tot " << total << std::endl;
114+
115+
return false;
116+
}
117+
template <class I> void UpperHull<I>::prePop(Point2D data) {}
118+
template <class I>
119+
void UpperHull<I>::postPop(Point2D data, Data<emptyContext, Point2D, I> elt) {
120+
std::cout << elt.getData() << " <<<< (post-)Pop!" << std::endl;
121+
}
122+
template <class I> void UpperHull<I>::noPop(Point2D data) {}
123+
124+
template <class I> bool UpperHull<I>::pushCondition(Point2D data) {
125+
std::cout << data << " <<<< push condition returning true " << std::endl;
126+
return true;
127+
}
128+
template <class I>
129+
void UpperHull<I>::prePush(Data<emptyContext, Point2D, I> elt) {}
130+
template <class I>
131+
void UpperHull<I>::postPush(Data<emptyContext, Point2D, I> elt) {
132+
std::cout << "UpperHullStackAlgo::pushAction Nothing to see here "
133+
<< elt.getData() << std::endl;
134+
}
135+
template <class I> void UpperHull<I>::noPush(Point2D data) {}
136+
137+
template <class I> void UpperHull<I>::reportStack() {}
138+
139+
#endif // UPPERHULL

‎examples/upperhull/include/upperHullExtras.hpp‎

100644100755
File mode changed.

‎examples/upperhull/upperHullExtras.cpp‎

100644100755
File mode changed.

‎extras/stackAlgoExtras.hpp‎

100644100755
File mode changed.

‎include/stackAlgo.hpp‎

100644100755
File mode changed.

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /