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});");
        }
Example #3
0
 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}");
             }
         }
     }
 }
Example #4
0
 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);
        }
Example #6
0
 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");
 }
Example #7
0
 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("}");
 }
Example #10
0
 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};");
        }