lean2/src/frontends/lean/info_annotation.cpp

44 lines
1.6 KiB
C++

/*
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Author: Leonardo de Moura
*/
#include "frontends/lean/info_annotation.h"
namespace lean {
static name * g_no_info = nullptr;
name const & get_no_info() { return *g_no_info; }
expr mk_no_info(expr const & e) { return mk_annotation(get_no_info(), e); }
bool is_no_info(expr const & e) { return is_annotation(e, get_no_info()); }
static name * g_extra_info = nullptr;
name const & get_extra_info() { return *g_extra_info; }
expr mk_extra_info(expr const & e, tag g) { return mk_annotation(get_extra_info(), e, g); }
expr mk_extra_info(expr const & e) { return mk_annotation(get_extra_info(), e); }
bool is_extra_info(expr const & e) { return is_annotation(e, get_extra_info()); }
static name * g_notation_info = nullptr;
name const & get_notation_info() { return *g_notation_info; }
expr mk_notation_info(expr const & e, tag g) { return mk_annotation(get_notation_info(), e, g); }
expr mk_notation_info(expr const & e) { return mk_annotation(get_notation_info(), e); }
bool is_notation_info(expr const & e) { return is_annotation(e, get_notation_info()); }
void initialize_info_annotation() {
g_no_info = new name("no_info");
register_annotation(*g_no_info);
g_extra_info = new name("extra_info");
register_annotation(*g_extra_info);
g_notation_info = new name("notation_info");
register_annotation(*g_notation_info);
}
void finalize_info_annotation() {
delete g_no_info;
delete g_extra_info;
delete g_notation_info;
}
}