xo-alloc/xo-expression/include/xo/expression/pretty_localenv.hpp
2025-07-28 15:16:11 -04:00

39 lines
1.2 KiB
C++

/* @file pretty_localenv.hpp */
#pragma once
#include "xo/indentlog/print/pretty.hpp"
#include "xo/refcnt/pretty_refcnt.hpp"
#include "LocalEnv.hpp"
namespace xo {
namespace print {
template <>
struct ppdetail<xo::scm::Environment> {
static bool print_pretty(const ppindentinfo & ppii, const xo::scm::Environment & x) {
return x.pretty_print(ppii);
}
};
template <>
struct ppdetail<xo::scm::LocalEnv> {
static bool print_pretty(const ppindentinfo & ppii, const xo::scm::LocalEnv & x) {
return x.pretty_print(ppii);
}
};
template <>
struct ppdetail<xo::scm::LocalEnv*> {
static bool print_pretty(const ppindentinfo & ppii, const xo::scm::LocalEnv* x) {
if (x) {
return x->pretty_print(ppii);
} else {
ppii.pps()->write("<nullptr ");
ppii.pps()->write(reflect::type_name<xo::scm::LocalEnv>());
ppii.pps()->write(">");
return ppii.pps()->has_margin();
}
}
};
}
}