protected override void HeaderCreateAccessor(CodeStringBuilder builderHeader, string key, string summary) { builderHeader.AppendLine("public:"); builderHeader.AddLevel(); builderHeader.AppendLine("/// <summary>"); builderHeader.AppendLine($"/// {summary}"); builderHeader.AppendLine("/// </summary>"); builderHeader.AppendLine($"static hstring {key}();"); builderHeader.RemoveLevel(); }
private void IdlCreateFormatMethod(CodeStringBuilder builderHeader, string key, bool isProperty, IEnumerable <FunctionFormatTagParameter> parameters, string summary = null, IEnumerable <FunctionFormatTagParameter> extraParameters = null) { if (isProperty) { IdlCreateAccessor(builderHeader, key, summary); return; } IEnumerable <FunctionFormatTagParameter> functionParameters; if (extraParameters != null) { var list = new List <FunctionFormatTagParameter>(parameters); list.InsertRange(0, extraParameters); functionParameters = list; } else { functionParameters = parameters; } var parametersStr = functionParameters.Any() ? functionParameters.Select(p => IdlGetParameterTypeString(p.Type) + " " + p.Name).Aggregate((a, b) => a + ", " + b) : ""; builderHeader.AppendLine($"static String {key}({parametersStr});"); }
public void HeaderCloseNamespace(CodeStringBuilder builderHeader, IEnumerable <string> namespaces, bool supportNestedMamespacesAtOnce) { if (namespaces != null && namespaces.Any()) { if (supportNestedMamespacesAtOnce) { builderHeader.RemoveLevel(); builderHeader.AppendLine($"}} // namespace {namespaces.Aggregate((a, b) => a + "::" + b)}"); } else { foreach (var n in namespaces.Reverse()) { builderHeader.RemoveLevel(); builderHeader.AppendLine($"}} // namespace {n}"); } } } }
public void HeaderOpenNamespace(CodeStringBuilder builderHeader, IEnumerable <string> namespaces, bool supportNestedMamespacesAtOnce) { if (namespaces != null && namespaces.Any()) { if (supportNestedMamespacesAtOnce) { builderHeader.AppendLine($"namespace {namespaces.Aggregate((a, b) => a + "::" + b)}"); builderHeader.AppendLine("{"); builderHeader.AddLevel(); } else { foreach (var subNamespace in namespaces) { builderHeader.AppendLine($"namespace {subNamespace}"); builderHeader.AppendLine("{"); builderHeader.AddLevel(); } } } }
protected override void HeaderAddExtra(CodeStringBuilder builderHeader, StronglyTypedClass info) { var namespaces = new List <string> { "winrt" }; if (info.Namespaces != null) { namespaces.AddRange(info.Namespaces); } namespaces.Add("factory_implementation"); builderHeader.AppendEmptyLine(); HeaderOpenNamespace(builderHeader, namespaces, true); builderHeader.AppendLine($"struct {info.ClassName} : {info.ClassName}T<{info.ClassName}, implementation::{info.ClassName}>"); builderHeader.AppendLine("{"); builderHeader.AppendLine("};"); builderHeader.AppendEmptyLine(); builderHeader.AppendLine($"struct {info.ClassName}Extension : {info.ClassName}ExtensionT<{info.ClassName}Extension, implementation::{info.ClassName}Extension>"); builderHeader.AppendLine("{"); builderHeader.AppendLine("};"); HeaderCloseNamespace(builderHeader, namespaces, true); }
protected override void OpenStronglyTypedClass(CodeStringBuilder builder, string resourceFilename, string className) { builder.AppendLine($"<System.CodeDom.Compiler.GeneratedCodeAttribute(\"{Constants.ReswPlusName}\", \"{Constants.ReswPlusExtensionVersion}\")>"); builder.AppendLine("<System.Diagnostics.DebuggerNonUserCodeAttribute()>"); builder.AppendLine("<System.Runtime.CompilerServices.CompilerGeneratedAttribute()>"); builder.AppendLine($"Public Class {className}"); builder.AddLevel(); builder.AppendLine("Private Shared _resourceLoader as ResourceLoader"); builder.AppendEmptyLine(); builder.AppendLine($"Shared Sub New()"); builder.AddLevel(); builder.AppendLine($"_resourceLoader = ResourceLoader.GetForViewIndependentUse(\"{resourceFilename}\")"); builder.RemoveLevel(); builder.AppendLine("End Sub"); }
protected override void GenerateHeaders(CodeStringBuilder builder, bool supportPluralization) { builder.AppendLine("' File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus"); if (supportPluralization) { builder.AppendLine("' The NuGet package ReswPlusLib is necessary to support Pluralization."); } builder.AppendLine("Imports System"); builder.AppendLine("Imports Windows.ApplicationModel.Resources"); builder.AppendLine("Imports Windows.UI.Xaml.Markup"); builder.AppendLine("Imports Windows.UI.Xaml.Data"); }
protected override void HeaderFileGenerateHeaders(CodeStringBuilder builderHeader, string className, IEnumerable <string> namespacesOverride, bool supportPluralization) { //Header builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus"); if (supportPluralization) { builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization."); } var baseGeneratedFileName = (namespacesOverride == null || namespacesOverride.Count() <= 1 ? "" : namespacesOverride.Skip(1).Aggregate((a, b) => a + "." + b) + "."); builderHeader.AppendLine("#pragma once"); builderHeader.AppendLine($"#include \"{baseGeneratedFileName}{className}.g.h\""); builderHeader.AppendLine($"#include \"{baseGeneratedFileName}{className}Extension.g.h\""); builderHeader.AppendLine("#include <winrt/Windows.ApplicationModel.Resources.h>"); builderHeader.AppendLine("#include <winrt/Windows.UI.Xaml.Markup.h>"); if (supportPluralization) { builderHeader.AppendLine("#include <winrt/ReswPlusLib.h>"); } }
protected override void CloseStronglyTypedClass(CodeStringBuilder builder) { builder.RemoveLevel(); builder.AppendLine("}"); }
public void HeaderOpenRegion(CodeStringBuilder builderHeader, string name) { builderHeader.AppendLine($"/* Methods and properties for {name} */"); }
protected override void CppFileGenerateHeaders(CodeStringBuilder builderHeader, string precompiledHeader, string headerFilePath, string localNamespace, string className, IEnumerable <string> namespaces, bool supportPluralization) { //Header builderHeader.AppendLine("// File generated automatically by ReswPlus. https://github.com/rudyhuyn/ReswPlus"); if (supportPluralization) { builderHeader.AppendLine("// The NuGet package ReswPlusLib is necessary to support Pluralization."); } if (!string.IsNullOrEmpty(precompiledHeader)) { builderHeader.AppendLine($"#include <{precompiledHeader}>"); } builderHeader.AppendLine($"#include \"{headerFilePath}\""); var baseNamespace = namespaces == null || namespaces.Count() <= 1 ? "" : namespaces.Skip(1).Aggregate((a, b) => a + "." + b) + "."; var gheader = baseNamespace + className; builderHeader.AppendLine($"#include \"{gheader}.g.cpp\""); builderHeader.AppendLine($"#include \"{gheader}Extension.g.cpp\""); builderHeader.AppendLine("#include <stdio.h>"); builderHeader.AppendLine("#include <winrt/Windows.Foundation.h>"); builderHeader.AppendLine("#include <winrt/Windows.UI.Xaml.Interop.h>"); builderHeader.AppendLine("using namespace winrt;"); builderHeader.AppendLine("using namespace std;"); if (namespaces != null && namespaces.Any()) { builderHeader.AppendLine($"using namespace winrt::{namespaces.Aggregate((a, b) => a + "::" + b)};"); } builderHeader.AppendLine("using namespace winrt::Windows::Foundation;"); builderHeader.AppendLine("using namespace winrt::Windows::ApplicationModel::Resources;"); builderHeader.AppendLine("using namespace winrt::Windows::UI::Xaml::Interop;"); builderHeader.AppendLine($"namespace {LocalNamespaceName} = {localNamespace};"); }