using System;

namespace CapnpC.CSharp.Generator
{
    /// <summary>
    /// Represents the generation result of a single .capnp file
    /// </summary>
    public class FileGenerationResult
    {
        /// <summary>
        /// Constructs an instance in case of successful generation
        /// </summary>
        /// <param name="capnpFilePath">path to .capnp file</param>
        /// <param name="generatedContent">generated C# code</param>
        public FileGenerationResult(string capnpFilePath, string generatedContent)
        {
            CapnpFilePath = capnpFilePath;
            GeneratedContent = generatedContent;
        }

        /// <summary>
        /// Constructs an instance in case of unsuccessful generation
        /// </summary>
        /// <param name="capnpFilePath">path to .capnp file</param>
        /// <param name="exception">Exception giving details on the error which prevented generation</param>
        public FileGenerationResult(string capnpFilePath, Exception exception)
        {
            CapnpFilePath = capnpFilePath;
            Exception = exception;
        }

        /// <summary>
        /// Path to .capnp file
        /// </summary>
        public string CapnpFilePath { get; }

        /// <summary>
        /// Generated C# or null if generation failed
        /// </summary>
        public string GeneratedContent { get; }

        /// <summary>
        /// Exception giving details on the error which prevented generation
        /// </summary>
        public Exception Exception { get; }

        /// <summary>
        /// true iff generation was successful
        /// </summary>
        public bool IsSuccess => !string.IsNullOrEmpty(GeneratedContent);
    }
}