// 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; }
}
}