Goose  Artifact [99140839cc]

Artifact 99140839cc8e0f7865c2a8f65b0549f3ebaf06b19e1a0a32096deeaa93288ba2:

  • File bs/llr/binaryop.h — part of check-in [75bcd81044] at 2019-08-15 01:27:35 on branch trunk —
    • Implemented the DropValue() extension point, called when a previously pushed value is dropped without being used.
    • ir, sema: the complexity of an ir expression is now directly counted by ir::Vector, so that we don't have to deal with it in every unification rule (and it was missing from most of them, which caused incorrect overload resolutions in some cases).
    (user: achavasse size: 622)

#ifndef EMPATHY_LLR_BINARYINSTR_H
#define EMPATHY_LLR_BINARYINSTR_H

namespace empathy::llr
{
    class BinaryOp
    {
        public:
            template< typename L, typename R >
            BinaryOp( L&& lhs, R&& rhs ) :
                m_lhs( forward< L >( lhs ) ),
                m_rhs( forward< R >( rhs ) )
            {}

            const auto& lhs() const { return m_lhs; }
            const auto& rhs() const { return m_rhs; }

            bool canBeExecuted() const;
            bool canBeEagerlyEvaluated() const;

        private:
            ir::Value m_lhs;
            ir::Value m_rhs;
    };
}

#endif