/* Copyright (c) 2014 Microsoft Corporation. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Author: Leonardo de Moura */ #pragma once #include #include #include #include #include "util/name.h" #include "util/name_map.h" #include "kernel/expr.h" #include "kernel/pos_info_provider.h" #include "library/io_state_stream.h" namespace lean { /** \brief Datastructure for storing where a given declaration was defined. */ class declaration_index { typedef std::tuple decl; typedef std::tuple ref; typedef pair abbrev; name_map m_decls; std::vector m_abbrevs; std::vector m_refs; public: void add_decl(std::string const fname, pos_info const & p, name const & n, name const & k, expr const & t); void add_abbrev(name const & n, name const & d); void add_ref(std::string const fname, pos_info const & p, name const & n); void save(io_state_stream const & out) const; }; }