#ifndef RTG_GUARD_RTGLIB_OPERAND_HPP #define RTG_GUARD_RTGLIB_OPERAND_HPP #include #include #include #include #include #include #include #include namespace rtg { namespace operation_stream { template auto operator<<(std::ostream& os, const T& x) -> decltype(os << x.name()) { return os << x.name(); } } // namespace operation_stream <% 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), friend('operator<<', returns='std::ostream &', os='std::ostream &', op='const operation &', using='rtg::operation_stream::operator<<') ) %> } // namespace rtg #endif