// Generated by dzn code from #ast:source-file

##include "#x:file-name .hh"

##include <dzn/container.hh>

##include <algorithm>
##include <cstring>

void
connect_ports (dzn::container< #x:type-name , std::function<void()>>& c)
{
  dzn::debug.rdbuf() && dzn::debug << c.meta.name << std::endl;
  #x:main-port-connect-in #x:main-port-connect-out }

std::map<std::string,std::function<void()> >
event_map (dzn::container< #x:type-name , std::function<void()>>& c)
{
  #x:main-provides-port-init
  #x:main-requires-port-init

  return {{"illegal", []{std::clog << "illegal" << std::endl;}}
         ,{"error", []{std::clog << "sut.error -> sut.error" << std::endl; std::exit(0);}}
          #x:main-event-map-void-provides-in
          #x:main-event-map-valued-provides-in
          #x:main-event-map-void-requires-in
          #x:main-event-map-valued-in
          #x:main-event-map-out
          #x:main-event-map-flush };
}

int
main(int argc, char* argv[])
{
  bool flush = argv + argc != std::find_if(argv + 1, argv + argc, [](const char* s){return s == std::string ("--flush");});
  if(argv + argc != std::find_if(argv + 1, argv + argc, [](const char* s){return s == std::string ("--debug");})) dzn::debug.rdbuf(std::clog.rdbuf());
  dzn::container< #x:type-name , std::function<void()>> c(flush);

  connect_ports (c);
  c(event_map (c));
}

//version: #x:version
