#ifndef MIGRAPH_GUARD_MIGRAPHLIB_OPERAND_HPP #define MIGRAPH_GUARD_MIGRAPHLIB_OPERAND_HPP #include #include #include #include #include #include #include #include #include namespace migraph { namespace operation_stream { template auto operator<<(std::ostream& os, const T& x) -> decltype(os << x.name()) { return os << x.name(); } } // namespace operation_stream template argument compute_op(const T& x, context& ctx, shape output_shape, std::vector input) { return x.compute(auto_any_cast(ctx), output_shape, input); } <% interface('operation', virtual('name', returns='std::string', const=True), virtual('compute_shape', returns='shape', input='std::vector', const=True), virtual('compute', returns='argument', ctx='context&', output='shape', input='std::vector', const=True, default='compute_op'), friend('operator<<', returns='std::ostream &', os='std::ostream &', op='const operation &', using='migraph::operation_stream::operator<<') ) %> } // namespace migraph #endif