From 4372f041bb7401c3adc2d5710566b13f64722102 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 27 Feb 2015 16:57:34 +0200 Subject: Variable assignment, appending support --- build/dump.cxx | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 build/dump.cxx (limited to 'build/dump.cxx') diff --git a/build/dump.cxx b/build/dump.cxx new file mode 100644 index 0000000..4294e92 --- /dev/null +++ b/build/dump.cxx @@ -0,0 +1,72 @@ +// file : build/dump.cxx -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Tools CC +// license : MIT; see accompanying LICENSE file + +#include + +#include +#include +#include + +#include +#include +#include + +using namespace std; + +namespace build +{ + static void + dump_scope (scope& p, scope_map::iterator& i, string& ind) + { + string d (diag_relative_work (p.path ())); + + if (d.back () != path::traits::directory_separator) + d += '/'; + + cerr << ind << d << ":" << endl + << ind << '{' << endl; + + ind += " "; + + for (const auto& e: p.variables) + { + const variable& var (e.first); + const value_ptr& val (e.second); + + cerr << ind << var.name << " = "; + + if (val == nullptr) + cerr << "[undefined]"; + else + { + //@@ TODO: assuming it is a list. + // + cerr << dynamic_cast (*val).data; + } + + cerr << endl; + } + + // Print nested scopes of which we are a parent. + // + for (auto e (scopes.end ()); i != e && i->second.parent () == &p; ) + { + scope& s (i->second); + dump_scope (s, ++i, ind); + } + + ind.resize (ind.size () - 2); + cerr << ind << '}' << endl; + } + + void + dump_scopes () + { + string ind; + auto i (scopes.begin ()); + scope& r (i->second); // Root scope. + assert (&r == root_scope); + dump_scope (r, ++i, ind); + } +} -- cgit v1.1