Skip to content

Commit 1a6a7c1

Browse files
committed
Added OrdPWMap to evaluator
1 parent d57cd8a commit 1a6a7c1

7 files changed

Lines changed: 50 additions & 47 deletions

File tree

sbg/map_entry.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@ namespace detail {
2929
// Map entry -------------------------------------------------------------------
3030
////////////////////////////////////////////////////////////////////////////////
3131

32+
MapEntry::MapEntry(const Set& s, const Expression& expr)
33+
: _map(s, expr), _perimeter(s.perimeter()) {}
34+
3235
MapEntry::MapEntry(const Map& m)
3336
: _map(m), _perimeter(m.domain().perimeter()) {}
3437

35-
MapEntry::MapEntry(Map&& m)
36-
: _map(std::move(m)), _perimeter(m.domain().perimeter()) {}
37-
3838
const Map& MapEntry::map() const { return _map; }
3939

4040
const SetPerimeter& MapEntry::perimeter() const { return _perimeter; }

sbg/map_entry.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,9 @@
2626
#ifndef SBGRAPH_SBG_MAP_ENTRY_HPP_
2727
#define SBGRAPH_SBG_MAP_ENTRY_HPP_
2828

29+
#include "sbg/expression.hpp"
2930
#include "sbg/map.hpp"
31+
#include "sbg/set.hpp"
3032
#include "sbg/set_perimeter.hpp"
3133

3234
namespace SBG {
@@ -37,8 +39,8 @@ namespace detail {
3739

3840
class MapEntry {
3941
public:
42+
MapEntry(const Set& s, const Expression& expr);
4043
MapEntry(const Map& m);
41-
MapEntry(Map&& m);
4244

4345
const Map& map() const;
4446
const SetPerimeter& perimeter() const;

sbg/ord_pwmap.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ std::size_t OrdPWMap::advanceHint(std::size_t hint, const MapEntry& jth_entry)
151151
} else {
152152
break;
153153
}
154-
}
154+
}
155155

156156
return hint;
157157
}

sbg/ord_pwmap.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ class OrdPWMap {
104104
private:
105105
template<typename... Args>
106106
void emplaceBack(Args&&... args);
107-
void pushBack(const Map& entry);
108-
void pushBack(Map&& entry);
107+
void pushBack(const Map& m);
108+
void pushBack(Map&& m);
109109
void pushBack(const MapEntry& entry);
110110
void pushBack(MapEntry&& entry);
111111

@@ -145,7 +145,7 @@ class OrdPWMap {
145145
template<typename... Args>
146146
inline void OrdPWMap::emplace(Args&&... args)
147147
{
148-
_pieces.emplace(std::forward<Args>(args)...);
148+
insert(Map{std::forward<Args>(args)...});
149149
}
150150

151151
template<typename... Args>

sbg/pw_map.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ PWMap::PWMap(const PWMapKind kind, Set s) : _impl()
131131
}
132132

133133
case PWMapKind::kOrdered: {
134-
_impl = detail::UnordPWMap{s};
134+
_impl = detail::OrdPWMap{s};
135135
break;
136136
}
137137

@@ -155,7 +155,7 @@ PWMap::PWMap(const PWMapKind kind, Map m) : _impl()
155155
}
156156

157157
case PWMapKind::kOrdered: {
158-
_impl = detail::UnordPWMap{m};
158+
_impl = detail::OrdPWMap{m};
159159
break;
160160
}
161161

sbg/pwmap_fact.cpp

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,25 @@ PWMap UnordPWMapFact::createPWMap(const Map& m) const
4949
// OrdPWMap Factory ------------------------------------------------------------
5050
////////////////////////////////////////////////////////////////////////////////
5151

52-
//OrdPWMapFact::OrdPWMapFact() {}
53-
//
54-
//PWMap OrdPWMapFact::createPWMap() const
55-
//{
56-
// return PWMap(std::make_unique<OrdPWMap>());
57-
//}
58-
//
59-
//PWMap OrdPWMapFact::createPWMap(const Set &s) const
60-
//{
61-
// return PWMap(std::make_unique<OrdPWMap>(s));
62-
//}
63-
//
64-
//PWMap OrdPWMapFact::createPWMap(const Map &m) const
65-
//{
66-
// return PWMap(std::make_unique<OrdPWMap>(m));
67-
//}
68-
//
52+
OrdPWMapFact::OrdPWMapFact() {}
53+
54+
PWMap OrdPWMapFact::createPWMap() const
55+
{
56+
return PWMap{PWMapKind::kOrdered};
57+
}
58+
59+
PWMap OrdPWMapFact::createPWMap(const Set& s) const
60+
{
61+
return PWMap{PWMapKind::kOrdered, s};
62+
}
63+
64+
PWMap OrdPWMapFact::createPWMap(const Map& m) const
65+
{
66+
return PWMap{PWMapKind::kOrdered, m};
67+
}
68+
6969
//////////////////////////////////////////////////////////////////////////////////
70-
//// DomOrdPWMap Factory ------------------------------------------------------------
70+
//// DomOrdPWMap Factory ---------------------------------------------------------
7171
//////////////////////////////////////////////////////////////////////////////////
7272
//
7373
//DomOrdPWMapFact::DomOrdPWMapFact() {}
@@ -104,18 +104,19 @@ const PWMapKind& PWMapFactory::kind() const { return _kind; }
104104

105105
void PWMapFactory::set_pwmap_fact(PWMapKind kind)
106106
{
107+
_kind = kind;
107108
switch (kind) {
108109
case PWMapKind::kUnordered: {
109-
_kind = kind;
110110
_impl = UnordPWMapFact{};
111111
break;
112112
}
113113

114-
//case SetKind::kOrdered: {
115-
// _impl = OrdPWMapFact{};
116-
//}
114+
case PWMapKind::kOrdered: {
115+
_impl = OrdPWMapFact{};
116+
break;
117+
}
117118

118-
//case SetKind::OrdUnidimDense: {
119+
//case PWMapKind::kDomOrdered: {
119120
// _impl = DomOrdPWMapFact{};
120121
//}
121122

sbg/pwmap_fact.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,26 @@ class UnordPWMapFact {
3939
UnordPWMapFact();
4040

4141
PWMap createPWMap() const;
42-
PWMap createPWMap(const Set &s) const;
43-
PWMap createPWMap(const Map &m) const;
42+
PWMap createPWMap(const Set& s) const;
43+
PWMap createPWMap(const Map& m) const;
44+
};
45+
46+
class OrdPWMapFact {
47+
public:
48+
OrdPWMapFact();
49+
50+
PWMap createPWMap() const;
51+
PWMap createPWMap(const Set& s) const;
52+
PWMap createPWMap(const Map& m) const;
4453
};
4554

46-
//class OrdPWMapFact {
47-
// public:
48-
// OrdPWMapFact();
49-
//
50-
// PWMap createPWMap() const override;
51-
// PWMap createPWMap(const Set &s) const override;
52-
// PWMap createPWMap(const Map &m) const override;
53-
//};
54-
//
5555
//class DomOrdPWMapFact {
5656
// public:
5757
// DomOrdPWMapFact();
5858
//
5959
// PWMap createPWMap() const override;
60-
// PWMap createPWMap(const Set &s) const override;
61-
// PWMap createPWMap(const Map &m) const override;
60+
// PWMap createPWMap(const Set& s) const override;
61+
// PWMap createPWMap(const Map& m) const override;
6262
//};
6363

6464
/**
@@ -80,7 +80,7 @@ class PWMapFactory {
8080
PWMap createPWMap(Map m) const;
8181

8282
private:
83-
using FactImpl = std::variant<UnordPWMapFact>;
83+
using FactImpl = std::variant<UnordPWMapFact, OrdPWMapFact>;
8484

8585
PWMapFactory();
8686

0 commit comments

Comments
 (0)