/*++ Copyright (c) 2021 Microsoft Corporation Module Name: Logging support Abstract: Utilities for logging. Author: Nikolaj Bjorner (nbjorner) 2021-03-19 Jakob Rath 2021-04-6 --*/ #pragma once #include #include #include "util/ref.h" #include "util/util.h" template struct show_deref_t { T const* ptr; }; template std::ostream& operator<<(std::ostream& os, show_deref_t s) { if (s.ptr) return os << *s.ptr; else return os << ""; } template show_deref_t show_deref(T* ptr) { return show_deref_t{ptr}; } template ().get())>::type> show_deref_t show_deref(Ptr const& ptr) { return show_deref_t{ptr.get()}; }