#pragma once
#include "CoreMinimal.h"
#include "WingBasics.h"
#include "WingManual.generated.h"

struct FWingHandlerConfig;
enum class EWingHandlerKind;

class WingManual
{
public:
	static void PrintHandlerPrototype(const FWingHandlerConfig& Handler);
	static void PrintHandlerArguments(const FWingHandlerConfig& Handler);
	static void PrintHandlerDescription(const FWingHandlerConfig& Handler);
	static void PrintHandlerHelp(const FWingHandlerConfig& Handler);
	static void Commands(EWingHandlerKind Kind, const FString& Query, bool Verbose);
	static TSet<FName> GetSections();
	static bool PrintSection(FName Section);
	static void PrintSectionNames(const TCHAR *Prefix, const TSet<FName>& Sections, WingOut Output);
};

UCLASS()
class UWingManualSections : public UObject
{
	GENERATED_BODY()

public:
	UFUNCTION()
	static void FetcherPaths();

	UFUNCTION()
	static void ExpressingTypes();

	UFUNCTION()
	static void VariableDeclarations();

	UFUNCTION()
	static void EscapeSequencesInFNames();

	UFUNCTION()
	static void MaterialEditing();

	UFUNCTION()
	static void ImportantCommands();

	UFUNCTION()
	static void NodeContextMenus();

	UFUNCTION()
	static void VariableGettersAndSetters();

	UFUNCTION()
	static void BestPerformance();
};
