Commit 4f73e0ba authored by Paul's avatar Paul
Browse files

Formatting

parent d29aa711
......@@ -9,13 +9,13 @@ namespace migraph {
namespace detail {
template<class T, class Selector>
template <class T, class Selector>
auto reflect_impl(rank<1>, T& x, Selector f) -> decltype(T::reflect(x, f))
{
return T::reflect(x, std::move(f));
}
template<class T, class Selector>
template <class T, class Selector>
auto reflect_impl(rank<0>, T&, Selector)
{
return pack();
......@@ -23,30 +23,26 @@ auto reflect_impl(rank<0>, T&, Selector)
} // namespace detail
template<class T, class Selector>
template <class T, class Selector>
auto reflect(T& x, Selector f)
{
return detail::reflect_impl(rank<1>{}, x, std::move(f));
}
template<class T>
template <class T>
auto reflect_tie(T& x)
{
return reflect(x, [](auto&& y, auto&&...) { return std::ref(y); })([](auto&&... xs) {
return std::tie(xs.get()...);
});
return reflect(x, [](auto&& y, auto&&...) { return std::ref(y); })(
[](auto&&... xs) { return std::tie(xs.get()...); });
}
template<class T, class F>
template <class T, class F>
void reflect_each(T& x, F f)
{
return reflect(x, [](auto&& y, auto... ys) { return pack(std::ref(y), ys...); })([&](auto&&... xs) {
each_args([&](auto p) {
p([&](auto&& y, auto... ys) {
f(y, ys...);
});
}, xs...);
});
return reflect(x, [](auto&& y, auto... ys) { return pack(std::ref(y), ys...); })(
[&](auto&&... xs) {
each_args([&](auto p) { p([&](auto&& y, auto... ys) { f(y, ys...); }); }, xs...);
});
}
} // namespace migraph
......
......@@ -6,7 +6,7 @@
struct simple_operation
{
template<class T, class F>
template <class T, class F>
static auto reflect(T& x, F f)
{
return migraph::pack(f(x.data, "data"));
......@@ -58,7 +58,7 @@ void operation_equal_test()
{
simple_operation s{};
migraph::operation op1 = s;
s.data = 2;
s.data = 2;
migraph::operation op2 = op1;
migraph::operation op3 = s;
......
......@@ -98,16 +98,29 @@ compute_op(const T& x, context& ctx, const shape& output_shape, const std::vecto
}
<%
interface('operation',
virtual('name', returns='std::string', const=True),
virtual('compute_shape', returns='shape', input='const std::vector<shape>&', const=True),
virtual('compute', returns='argument', ctx='context&', output='const shape&', input='const std::vector<argument>&', const=True, default='compute_op'),
friend('operator<<', returns='std::ostream &', os='std::ostream &', op='const operation &', using='migraph::operation_stream::operator<<'),
friend('operator==', returns='bool', x='const operation &', y='const operation &', using='migraph::operation_equal::operator==')
)
%>
inline bool operator!=(const operation& x, const operation& y)
interface(
'operation',
virtual('name', returns = 'std::string', const = True),
virtual('compute_shape', returns = 'shape', input = 'const std::vector<shape>&', const = True),
virtual('compute',
returns = 'argument',
ctx = 'context&',
output = 'const shape&',
input = 'const std::vector<argument>&',
const = True,
default = 'compute_op'),
friend('operator<<',
returns = 'std::ostream &',
os = 'std::ostream &',
op = 'const operation &',
using = 'migraph::operation_stream::operator<<'),
friend('operator==',
returns = 'bool',
x = 'const operation &',
y = 'const operation &',
using = 'migraph::operation_equal::operator==')) %>
inline bool operator!=(const operation& x, const operation& y)
{
return !(x == y);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment