#pragma once

#include <stdint.h>
#include <functional>

#include "Core/Constant.h"

using DriverSettingsBoolNoParamFunction = std::function<bool()>;
using DriverSettingsVoidNoParamFunction = std::function<void()>;
using DriverSettingsGetBufferSizeFunction = std::function<void(int32* width, int32* height)>;
struct DriverSettings {
    bool debugProfile{ false };
    bool forwardCompatibility{ false };
    uint8 contextMajorVersion{ 4 };
    uint8 contextMinorVersion{ 4 };
    uint8 samples{ 4 };
    DriverSettingsBoolNoParamFunction isWindowShouldClose{ nullptr };
    DriverSettingsVoidNoParamFunction renderMakeCurrentContext{ nullptr };
    DriverSettingsVoidNoParamFunction renderSwapBuffers{ nullptr };
    DriverSettingsGetBufferSizeFunction getBufferSize{ nullptr };
};
