Goose  uni-context.h at [536f9e4bca]

File bs/sema/uni-context.h artifact e4f664e6e8 part of check-in 536f9e4bca


#ifndef EMPATHY_SEMA_UNI_CONTEXT_H
#define EMPATHY_SEMA_UNI_CONTEXT_H

namespace empathy::sema
{
    using UnificationRuleSet = Trie< function< Term( const Term& lhs, const Term& rhs, UnificationContext&& ) > >;

    class UnificationContext
    {
        public:
            UnificationContext( const ptr< UnificationRuleSet >& rules ) :
                m_rules( rules )
            {}

            UnificationContext( ptr< UnificationRuleSet >&& rules ) :
                m_rules( move( rules ) )
            {}

        private:
            ptr< UnifcationRuleSet >                    m_rules;
            immer::vector< Term >                       m_values;
            ptr< unordered_map< StringId, size_t > >    m_variables;

            size_t                                      m_dependencyUpdateCount = 1024;
    };
}

#endif