protected override IEnumerable <GeneratedFile> GetGeneratedFiles(CodeStringBuilder builder, string baseFilename) { yield return(new GeneratedFile() { Filename = baseFilename + ".cs", Content = builder.GetString() }); }
private GeneratedFile GenerateIdlFile(CodeStringBuilder builderIdl, string baseFilename, StronglyTypedClass info) { HeaderOpenNamespace(builderIdl, info.Namespaces, false); IdlOpenStronglyTypedClass(builderIdl, info.ClassName); foreach (var item in info.Localizations) { IdlCreateFormatMethod(builderIdl, item.Key, item.IsProperty, item.Parameters.OfType <FunctionFormatTagParameter>(), item.Summary, item.ExtraParameters); } IdlCloseStronglyTypedClass(builderIdl); builderIdl.AppendEmptyLine(); IdlCreateMarkupExtension(builderIdl, info.ClassName + "Extension", info.Localizations.Where(i => i is Localization).Select(s => s.Key)); HeaderCloseNamespace(builderIdl, info.Namespaces, false); return(new GeneratedFile() { Filename = baseFilename + ".idl", Content = builderIdl.GetString() }); }
public virtual IEnumerable <GeneratedFile> GeneratedFiles(string baseFilename, StronglyTypedClass info, ResourceFileInfo resourceInfo, IEnumerable <string> namespaceOverride) { var supportMultiNamespaceDeclaration = SupportMultiNamespaceDeclaration(); var namespacesToUse = namespaceOverride ?? info.Namespaces; var markupClassName = info.ClassName + "Extension"; var headerFileName = baseFilename + ".h"; var cppFileName = baseFilename + ".cpp"; var baseNamespace = namespacesToUse == null || !namespacesToUse.Any() ? "" : namespacesToUse.Aggregate((a, b) => a + "::" + b); var indentStr = resourceInfo.Project.GetIndentString(); var builderHeader = new CodeStringBuilder(indentStr); var builderCpp = new CodeStringBuilder(indentStr); var precompiledHeader = resourceInfo.Project.GetPrecompiledHeader(); var localNamespace = baseNamespace == "" ? "" : $"{LocalNamespaceName}::"; var namespaceResourceClass = $"{localNamespace}{info.ClassName}::"; var namespaceMarkupExtensionClass = $"{localNamespace}{markupClassName}::"; HeaderFileGenerateHeaders(builderHeader, info.ClassName, info.Namespaces, info.IsAdvanced); builderHeader.AppendEmptyLine(); HeaderOpenNamespace(builderHeader, namespacesToUse, supportMultiNamespaceDeclaration); HeaderOpenStronglyTypedClass(builderHeader, info.ResoureFile, info.ClassName); builderHeader.AppendEmptyLine(); CppFileGenerateHeaders(builderCpp, precompiledHeader, headerFileName, baseNamespace, info.ClassName, info.Namespaces, info.IsAdvanced); builderCpp.AppendEmptyLine(); CppGenerateStronglyTypedClassStaticFunc(builderCpp, namespaceResourceClass, info.ResoureFile); builderCpp.AppendEmptyLine(); var firstLocalization = true; foreach (var item in info.Localizations) { if (firstLocalization) { firstLocalization = false; } else { builderHeader.AppendEmptyLine(); builderCpp.AppendEmptyLine(); } HeaderOpenRegion(builderHeader, item.Key); HeaderCreateFormatMethod(builderHeader, item.Key, item.IsProperty, item.Parameters.OfType <FunctionFormatTagParameter>(), item.Summary, item.ExtraParameters); builderCpp.AppendEmptyLine(); CppCreateFormatMethod(builderCpp, namespaceResourceClass, item.Key, item.IsProperty, item.IsDotNetFormatting, item.Parameters, item.ExtraParameters, (item as PluralLocalization)?.ParameterToUseForPluralization, (item as PluralLocalization)?.SupportNoneState ?? false, (item as IVariantLocalization)?.ParameterToUseForVariant ); HeaderCloseRegion(builderHeader); } HeaderCloseStronglyTypedClass(builderHeader); builderHeader.AppendEmptyLine(); HeaderCreateMarkupExtension(builderHeader, info.ResoureFile, markupClassName, info.Localizations.Where(i => i is Localization).Select(s => s.Key), info.Namespaces); HeaderCloseNamespace(builderHeader, namespacesToUse, supportMultiNamespaceDeclaration); HeaderAddExtra(builderHeader, info); builderCpp.AppendEmptyLine(); CppCreateMarkupExtension(builderCpp, namespaceMarkupExtensionClass, info.ResoureFile, markupClassName, info.Localizations.Where(i => i is Localization).Select(s => s.Key)); yield return(new GeneratedFile() { Filename = headerFileName, Content = builderHeader.GetString() }); yield return(new GeneratedFile() { Filename = cppFileName, Content = builderCpp.GetString() }); }