summaryrefslogtreecommitdiff
path: root/cli/header.cxx
blob: 21f70f2ab9edfa181f9665227987f37efd6995bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// file      : cli/header.cxx
// author    : Boris Kolpackov <boris@codesynthesis.com>
// copyright : Copyright (c) 2009 Code Synthesis Tools CC
// license   : MIT; see accompanying LICENSE file

#include "header.hxx"

namespace
{
  struct includes: traversal::cxx_includes, context
  {
    includes (context& c) : context (c) {}

    virtual void
    traverse (semantics::cxx_includes& i)
    {
      os << "#include " << i.file () << endl
         << endl;
    }
  };
}

void
generate_header (context& ctx)
{
  traversal::cli_unit unit;
  includes includes (ctx);
  traversal::names unit_names;
  namespace_ ns (ctx);
  traversal::names ns_names;

  unit >> includes;
  unit >> unit_names >> ns >> ns_names >> ns;

  unit.dispatch (ctx.unit);
}