Skip to content

Commit beed13a

Browse files
authored
Remove json from mongo expression header (PDAL#4725)
* Remove private functions from stac reader header. * Move interface functions out of EsriReader. * Make writeHierarchy a non-member. * Add missed file. * Move functions/data to Private. * Remove handleReaderArgs() and setReaderOptions() from header. * Move JSON functions to cpp file.
1 parent bacaa74 commit beed13a

File tree

8 files changed

+46
-33
lines changed

8 files changed

+46
-33
lines changed

filters/MongoExpressionFilter.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,31 +50,42 @@ static const StaticPluginInfo s_info
5050

5151
CREATE_STATIC_STAGE(MongoExpressionFilter, s_info);
5252

53+
struct MongoExpressionFilter::Args
54+
{
55+
NL::json m_json;
56+
};
57+
58+
struct MongoExpressionFilter::Private
59+
{
60+
Expression m_expression;
61+
};
62+
5363
std::string MongoExpressionFilter::getName() const
5464
{
5565
return s_info.name;
5666
}
5767

58-
MongoExpressionFilter::MongoExpressionFilter()
68+
MongoExpressionFilter::MongoExpressionFilter() :
69+
m_args(new Args()),
70+
m_p(new Private())
5971
{}
6072

6173
MongoExpressionFilter::~MongoExpressionFilter()
6274
{}
6375

6476
void MongoExpressionFilter::addArgs(ProgramArgs& args)
6577
{
66-
args.add("expression", "Logical query expression", m_json).setPositional();
78+
args.add("expression", "Logical query expression", m_args->m_json).setPositional();
6779
}
6880

6981
void MongoExpressionFilter::prepared(PointTableRef table)
7082
{
71-
log()->get(LogLevel::Debug) << "Building expression from: " << m_json <<
83+
log()->get(LogLevel::Debug) << "Building expression from: " << m_args->m_json <<
7284
std::endl;
7385

74-
m_expression = makeUnique<Expression>(*table.layout(), m_json);
86+
m_p->m_expression = Expression(table.layout(), m_args->m_json);
7587

76-
log()->get(LogLevel::Debug) << "Built expression: " << *m_expression <<
77-
std::endl;
88+
log()->get(LogLevel::Debug) << "Built expression: " << m_p->m_expression << std::endl;
7889
}
7990

8091
PointViewSet MongoExpressionFilter::run(PointViewPtr inView)
@@ -97,7 +108,7 @@ PointViewSet MongoExpressionFilter::run(PointViewPtr inView)
97108

98109
bool MongoExpressionFilter::processOne(PointRef& pr)
99110
{
100-
return m_expression->check(pr);
111+
return m_p->m_expression.check(pr);
101112
}
102113

103114
} // namespace pdal

filters/MongoExpressionFilter.hpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
#pragma once
3636

3737
#include <pdal/Filter.hpp>
38-
#include <pdal/JsonFwd.hpp>
3938
#include <pdal/Streamable.hpp>
4039

4140
namespace pdal
@@ -57,8 +56,11 @@ class PDAL_EXPORT MongoExpressionFilter : public Filter, public Streamable
5756
virtual void prepared(PointTableRef table) override;
5857
virtual PointViewSet run(PointViewPtr view) override;
5958

60-
NL::json m_json;
61-
std::unique_ptr<Expression> m_expression;
59+
struct Args;
60+
std::unique_ptr<Args> m_args;
61+
62+
struct Private;
63+
std::unique_ptr<Private> m_p;
6264
};
6365

6466
} // namespace pdal

filters/private/mongoexpression/Comparison.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,17 @@ std::unique_ptr<Comparison> Comparison::create(const PointLayout& layout,
7272
switch (co)
7373
{
7474
case ComparisonType::eq:
75-
return makeUnique<ComparisonEqual>(dimId, op);
75+
return std::make_unique<ComparisonEqual>(dimId, op);
7676
case ComparisonType::gt:
77-
return makeUnique<ComparisonGreater>(dimId, op);
77+
return std::make_unique<ComparisonGreater>(dimId, op);
7878
case ComparisonType::gte:
79-
return makeUnique<ComparisonGreaterEqual>(dimId, op);
79+
return std::make_unique<ComparisonGreaterEqual>(dimId, op);
8080
case ComparisonType::lt:
81-
return makeUnique<ComparisonLess>(dimId, op);
81+
return std::make_unique<ComparisonLess>(dimId, op);
8282
case ComparisonType::lte:
83-
return makeUnique<ComparisonLessEqual>(dimId, op);
83+
return std::make_unique<ComparisonLessEqual>(dimId, op);
8484
case ComparisonType::ne:
85-
return makeUnique<ComparisonNotEqual>(dimId, op);
85+
return std::make_unique<ComparisonNotEqual>(dimId, op);
8686
default:
8787
throw pdal_error("Invalid single comparison operator");
8888
}
@@ -100,9 +100,9 @@ std::unique_ptr<Comparison> Comparison::create(const PointLayout& layout,
100100
switch (co)
101101
{
102102
case ComparisonType::in:
103-
return makeUnique<ComparisonAny>(dimId, ops);
103+
return std::make_unique<ComparisonAny>(dimId, ops);
104104
case ComparisonType::nin:
105-
return makeUnique<ComparisonNone>(dimId, ops);
105+
return std::make_unique<ComparisonNone>(dimId, ops);
106106
default:
107107
throw pdal_error("Invalid multi comparison operator");
108108
}

filters/private/mongoexpression/Expression.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ void Expression::build(LogicGate& gate, const NL::json& json)
8080
else if (!val.is_object() || val.size() == 1)
8181
{
8282
// A comparison object.
83-
active->push(Comparison::create(m_layout, key, val));
83+
active->push(Comparison::create(*m_layout, key, val));
8484
}
8585
else
8686
{
@@ -96,7 +96,7 @@ void Expression::build(LogicGate& gate, const NL::json& json)
9696
{
9797
NL::json nest;
9898
nest[inner.key()] = inner.value();
99-
active->push(Comparison::create(m_layout, key, nest));
99+
active->push(Comparison::create(*m_layout, key, nest));
100100
}
101101
}
102102
}

filters/private/mongoexpression/Expression.hpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,10 @@ namespace pdal
4343
class Expression
4444
{
4545
public:
46-
Expression(const PointLayout& layout, const NL::json& json)
46+
Expression() : m_layout(nullptr)
47+
{}
48+
49+
Expression(const PointLayout *layout, const NL::json& json)
4750
: m_layout(layout)
4851
{
4952
build(m_root, json);
@@ -62,7 +65,7 @@ class Expression
6265
private:
6366
void build(LogicGate& gate, const NL::json& json);
6467

65-
const PointLayout& m_layout;
68+
const PointLayout *m_layout;
6669
LogicalAnd m_root;
6770
};
6871

filters/private/mongoexpression/LogicGate.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ namespace pdal
3939

4040
std::unique_ptr<LogicGate> LogicGate::create(const LogicalOperator type)
4141
{
42-
if (type == LogicalOperator::lAnd) return makeUnique<LogicalAnd>();
43-
if (type == LogicalOperator::lNot) return makeUnique<LogicalNot>();
44-
if (type == LogicalOperator::lOr) return makeUnique<LogicalOr>();
45-
if (type == LogicalOperator::lNor) return makeUnique<LogicalNor>();
42+
if (type == LogicalOperator::lAnd) return std::make_unique<LogicalAnd>();
43+
if (type == LogicalOperator::lNot) return std::make_unique<LogicalNot>();
44+
if (type == LogicalOperator::lOr) return std::make_unique<LogicalOr>();
45+
if (type == LogicalOperator::lNor) return std::make_unique<LogicalNor>();
4646
throw pdal_error("Invalid logic gate type");
4747
}
4848

filters/private/mongoexpression/LogicGate.hpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,10 @@ inline std::string opToString(LogicalOperator o)
7676
class LogicGate : public Filterable
7777
{
7878
public:
79-
virtual ~LogicGate() { }
79+
LogicGate() = default;
80+
LogicGate(LogicGate&&) = default;
81+
LogicGate& operator=(LogicGate&&) = default;
82+
virtual ~LogicGate() = default;
8083

8184
static std::unique_ptr<LogicGate> create(std::string s)
8285
{

filters/private/mongoexpression/Support.hpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,5 @@ class Comparable : public Loggable
6262
virtual bool operator()(double v) const = 0;
6363
};
6464

65-
template<typename T, typename... Args>
66-
std::unique_ptr<T> makeUnique(Args&&... args)
67-
{
68-
return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
69-
}
70-
7165
} // namespace pdal
7266

0 commit comments

Comments
 (0)