示例#1
0
//
// write_factory_impl_end
//
void CUTS_EISA_Header_Generator::
write_factory_impl_end (const PICML::ComponentFactory & factory,
                        const PICML::MonolithicImplementation & impl,
                        const PICML::Component & type)
{
  // Generate the export file for the implementation.
  PICML::ComponentImplementationContainer container =
    PICML::ComponentImplementationContainer::Cast (impl.parent ());

  CUTS_BE_Impl_Node::Artifact_Set::const_iterator iter_exec =
    std::find_if (this->node_->artifacts_.begin (),
                  this->node_->artifacts_.end (),
                  Element_Name_End_With <
                    CUTS_BE_Impl_Node::Artifact_Set::value_type> (
                    CUTS_BE_OPTIONS ()->exec_suffix_));

  // Close off the class definition.
  this->out_
    << "};";

  this->_super::write_factory_impl_end (factory, impl, type);

  // Construct the export macro and export filename.
  std::string exportfile =
    std::string (container.name ()) + CUTS_BE_OPTIONS ()->exec_suffix_;

  std::string export_macro = iter_exec->name ();
  std::transform (export_macro.begin (),
                  export_macro.end (),
                  export_macro.begin (),
                  &toupper);

  this->out_
    << "#include \"" << exportfile << "_export.h\"" << std::endl
    << std::endl
    << single_line_comment (this->entry_point_)
    << "extern \"C\" " << export_macro << "_Export" << std::endl
    << "::Components::HomeExecutorBase_ptr " << std::endl
    << this->entry_point_ + " (void);"
    << std::endl;
}