Files
UnrealEngine/Engine/Source/Developer/TraceServices/Public/TraceServices/ModuleService.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

54 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/Array.h"
#include "CoreMinimal.h"
#include "Features/IModularFeature.h"
#include "HAL/Platform.h"
#include "UObject/NameTypes.h"
namespace TraceServices
{
class IAnalysisSession;
extern TRACESERVICES_API const FName ModuleFeatureName;
struct FModuleInfo
{
FName Name;
const TCHAR* DisplayName = nullptr;
};
struct FModuleInfoEx
{
FModuleInfo Info;
bool bIsEnabled = false;
};
class IModule
: public IModularFeature
{
public:
virtual void GetModuleInfo(FModuleInfo& OutModuleInfo) = 0;
virtual bool ShouldBeEnabledByDefault() const { return true; }
virtual void GetLoggers(TArray<const TCHAR*>& OutLoggers) {}
virtual const TCHAR* GetCommandLineArgument() { return nullptr; }
virtual void OnAnalysisBegin(IAnalysisSession& Session) = 0;
virtual void GenerateReports(const IAnalysisSession& Session, const TCHAR* CmdLine, const TCHAR* OutputDirectory) {}
};
class IModuleService
{
public:
virtual ~IModuleService() = default;
virtual void GetAvailableModules(TArray<FModuleInfo>& OutModules) = 0;
virtual void GetAvailableModulesEx(TArray<FModuleInfoEx>& OutModules) = 0;
virtual void GetEnabledModules(TArray<FModuleInfo>& OutModules) = 0;
virtual void SetModuleEnabled(const FName& ModuleName, bool bEnabled) = 0;
virtual void GenerateReports(const IAnalysisSession& Session, const TCHAR* CmdLine, const TCHAR* OutputDirectory) = 0;
};
} // namespace TraceServices