Goose  Artifact [e4f664e6e8]

Artifact e4f664e6e81b872354b5e5a4b8555ca3f2c29b8dabf97bf8b0b479a653163634:

  • File bs/sema/uni-context.h — part of check-in [536f9e4bca] at 2018-11-20 21:56:13 on branch trunk — Started working on unification. (user: achavasse size: 838)

#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