namespace Semmle.Util
{
    public sealed class Language
    {
        public static Language Cpp { get; } = new Language(".vcxproj", "CPP");
        public static Language CSharp { get; } = new Language(".csproj", "CSHARP");

        public bool ProjectFileHasThisLanguage(string path) =>
            System.IO.Path.GetExtension(path) == ProjectExtension;

        public string ProjectExtension { get; }
        public string UpperCaseName { get; }

        private Language(string extension, string name)
        {
            ProjectExtension = extension;
            UpperCaseName = name;
        }

        public override string ToString() =>
            ProjectExtension == Cpp.ProjectExtension ? "C/C++" : "C#";
    }
}
