transformer::transformer(const dynamic::workflow& w, context& c) : context_(c), identifier_parser_(new sml::identifier_parser(c.top_level_module_names(), c.model().name().external_module_path(), c.model().name().model_name())), dynamic_workflow_(w) { BOOST_LOG_SEV(lg, debug) << "Initial context: " << context_; }
std::size_t context_hasher::hash(const context&v) { std::size_t seed(0); combine(seed, v.is_target()); combine(seed, hash_std_unordered_map_std_string_std_list_std_string_(v.child_id_to_parent_ids())); combine(seed, hash_std_unordered_set_std_string(v.parent_ids())); combine(seed, hash_std_unordered_map_std_string_dogen_sml_qname(v.id_to_qname())); combine(seed, hash_std_unordered_map_dogen_sml_qname_dogen_sml_qname(v.original_parent())); combine(seed, hash_std_unordered_map_dogen_sml_qname_std_list_dogen_sml_qname_(v.leaves())); combine(seed, hash_std_unordered_set_std_string(v.top_level_module_names())); combine(seed, v.model()); return seed; }
extraction::meta_model::artefact visual_studio_project_formatter:: format(const context& ctx, const coding::meta_model::element& e) const { assistant a(ctx, e, archetype_location(), false/*requires_header_guard*/); const auto& vsp(a.as<fabric::visual_studio_project>(e)); a.stream() << "<?xml version=\"1.0\" encoding=\"utf-8\"?>" << std::endl; a.stream() << "<Project DefaultTargets=\"Build\" ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">" << std::endl; a.stream() << " <PropertyGroup>" << std::endl; a.stream() << " <Configuration Condition=\" '$(Configuration)' == '' \">Debug</Configuration>" << std::endl; a.stream() << " <Platform Condition=\" '$(Platform)' == '' \">AnyCPU</Platform>" << std::endl; a.stream() << " <ProjectGuid>{" << vsp.project_guid() << "}</ProjectGuid>" << std::endl; a.stream() << " <OutputType>Library</OutputType>" << std::endl; a.stream() << " <RootNamespace>" << vsp.project_name() << "</RootNamespace>" << std::endl; a.stream() << " <AssemblyName>" << vsp.project_name() << "</AssemblyName>" << std::endl; a.stream() << " </PropertyGroup>" << std::endl; a.stream() << " <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' \">" << std::endl; a.stream() << " <DebugSymbols>true</DebugSymbols>" << std::endl; a.stream() << " <DebugType>full</DebugType>" << std::endl; a.stream() << " <Optimize>false</Optimize>" << std::endl; a.stream() << " <OutputPath>bin\\Debug</OutputPath>" << std::endl; a.stream() << " <DefineConstants>DEBUG;</DefineConstants>" << std::endl; a.stream() << " <ErrorReport>prompt</ErrorReport>" << std::endl; a.stream() << " <WarningLevel>4</WarningLevel>" << std::endl; a.stream() << " <ConsolePause>false</ConsolePause>" << std::endl; a.stream() << " </PropertyGroup>" << std::endl; a.stream() << " <PropertyGroup Condition=\" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' \">" << std::endl; a.stream() << " <DebugType>full</DebugType>" << std::endl; a.stream() << " <Optimize>true</Optimize>" << std::endl; a.stream() << " <OutputPath>bin\\Release</OutputPath>" << std::endl; a.stream() << " <ErrorReport>prompt</ErrorReport>" << std::endl; a.stream() << " <WarningLevel>4</WarningLevel>" << std::endl; a.stream() << " <ConsolePause>false</ConsolePause>" << std::endl; a.stream() << " </PropertyGroup>" << std::endl; a.stream() << " <ItemGroup>" << std::endl; a.stream() << " <Reference Include=\"System\" />" << std::endl; a.stream() << " </ItemGroup>" << std::endl; a.stream() << " <ItemGroup>" << std::endl; for (const auto& f : ctx.model().project_items()) a.stream() << " <Compile Include=\"" << f << "\" />" << std::endl; a.stream() << " </ItemGroup>" << std::endl; a.stream() << " <Import Project=\"$(MSBuildBinPath)\\Microsoft.Cpp.targets\" />" << std::endl; a.stream() << "</Project>" << std::endl; return a.make_artefact(); }