<commit_before>#pragma once

#include <utils/string.h>
#include <core/video/window.h>

namespace fd {
namespace core {
namespace app {

class Application {
private:
	utils::String appName;

	void Run();
protected:
	virtual void OnWindowCreate(video::WindowCreateInfo* info) = 0;
	virtual void OnInit() = 0;
	virtual void OnTick() = 0;
	virtual void OnUpdate(float delta) = 0;
	virtual void OnRender() = 0;
	virtual void OnExit() = 0;

public:
	Application(const utils::String& name);
	~Application();

	void Start();<commit_msg>Application<commit_after>#pragma once

#include <utils/string.h>
#include <core/video/window.h>

namespace fd {
namespace core {
namespace app {

class Application {
private:
	void OnInitInternal();
protected:
	virtual void OnWindowCreate(video::WindowCreateInfo* info) = 0;
	virtual void OnInit() = 0;
	virtual void OnTick() = 0;
	virtual void OnUpdate(float delta) = 0;
	virtual void OnRender() = 0;
	virtual void OnExit() = 0;
	

	utils::String appName;

	video::Window* window;

	bool running;
public:
	Application(const utils::String& name);
	~Application();

	void Start();
{'fraction_non_alphanumeric': 0.12737127371273713, 'fraction_numerical': 0.01084010840108401, 'mean_word_length': 5.224719101123595, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '509416', 'n_tokens_mistral': 371, 'n_tokens_neox': 353, 'n_words': 109}