// Copyright Epic Games, Inc. All Rights Reserved. using System; using System.Collections.Generic; #pragma warning disable CA1715 // Identifiers should have correct prefix namespace EpicGames.Core { /// /// This interface exists to allow the CsProjBuilder in EpicGames.MsBuild to call back out /// into EpicGames.Build. It is EXTREMELY important that any type definitions that must be /// referenced or implemented in EpicGames.Build for use by EpicGame.MsBuild *NOT* be defined /// in EpicGames.MsBuild. If they are, there is a strong chance of running into an issue /// gathering types (Assembly.GetTypes()) on EpicGames.Build. /// public interface CsProjBuildHook { /// /// Test the cache for a given file to get the last write time of the given file /// /// Base path of the file. /// Relative path of the file /// Last write time of the file. DateTime GetLastWriteTime(DirectoryReference BasePath, string RelativeFilePath); /// /// Test the cache for a given file to get the last write time of the given file /// /// Base path of the file. /// Relative path of the file /// Last write time of the file. DateTime GetLastWriteTime(string BasePath, string RelativeFilePath); /// /// Return the build record directory for the given base path (i.e. engine dir or project dir) /// /// The base path for the directory /// Directory for the build records DirectoryReference GetBuildRecordDirectory(DirectoryReference BasePath); /// /// Validate the given build records for the project /// /// Build records being validated. This also includes build records for dependencies. /// Path of the project void ValidateRecursively(Dictionary buildRecords, FileReference projectPath); /// /// Test to see if the given file spec has any wild cards /// /// File spec to test /// True if wildcards are present bool HasWildcards(string FileSpec); /// /// Unreal engine directory /// DirectoryReference EngineDirectory { get; } /// /// Dotnet directory shipped with the engine /// DirectoryReference DotnetDirectory { get; } /// /// Dotnet program /// FileReference DotnetPath { get; } } }