/* * Copyright 2019 faddenSoft * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; using System.ComponentModel; namespace SourceGenWPF.AsmGen { /// /// Common interface for executing assemblers. /// public interface IAssembler { /// /// Gets identification strings for the executable. These are used when browsing for /// the assembler binary. /// /// Human-readable name to show in the "open" dialog. /// Name of executable to find, without ".exe". void GetExeIdentifiers(out string humanName, out string exeName); /// /// Queries the assembler for its default configuration. /// /// Config object with default values. AssemblerConfig GetDefaultConfig(); /// /// Queries the assembler for its version. Assembler executable paths are queried from /// the global settings object. /// /// Assembler version info, or null if query failed. AssemblerVersion QueryVersion(); /// /// Configures the object. Pass in the list of pathnames returned by IGenerator.Run(), /// and the working directory to use for the shell command. /// /// Assembler source pathnames. /// Working directory for shell command. void Configure(List pathNames, string workDirectory); /// /// Executes the assembler. Must call Configure() first. Executed on background thread. /// /// Async work object, used to report progress updates and /// check for cancellation. /// Execution results, or null on internal failure. AssemblerResults RunAssembler(BackgroundWorker worker); } /// /// Set of values returned by the assembler. /// public class AssemblerResults { public string CommandLine { get; private set; } public int ExitCode { get; private set; } public string Stdout { get; private set; } public string Stderr { get; private set; } public string OutputPathName { get; private set; } public AssemblerResults(string commandLine, int exitCode, string stdout, string stderr, string outputFile) { CommandLine = commandLine; ExitCode = exitCode; Stdout = stdout; Stderr = stderr; OutputPathName = outputFile; } } }