Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // EntryPoint.h -----------------------------------------------
- #pragma once
- #ifdef GROTTO_PLATFORM_WINDOWS
- extern Grotto::Application* Grotto::CreateApplication();
- int main(int argc, char** argv)
- {
- Grotto::Log::Init();
- auto application = Grotto::CreateApplication();
- application->Run();
- delete application;
- }
- #endif // GROTTO_PLATFORM_WINDOWS
- // Grotto.h -----------------------------------------------
- #pragma once
- #include "Grotto/Application.h"
- #include "Grotto/EntryPoint.h"
- #include "Grotto/Log.h"
- // Log.h -----------------------------------------------
- #pragma once
- #include "Core.h"
- #include "spdlog/spdlog.h"
- #include "spdlog/sinks/stdout_color_sinks.h"
- #include <memory>
- namespace Grotto
- {
- class GROTTO_API Log
- {
- public:
- static void Init();
- inline static std::shared_ptr<spdlog::logger>& GetCoreLogger() { return s_CoreLogger; }
- inline static std::shared_ptr<spdlog::logger>& GetClientLogger() { return s_ClientLogger; }
- private:
- static std::shared_ptr<spdlog::logger> s_CoreLogger;
- static std::shared_ptr<spdlog::logger> s_ClientLogger;
- };
- }
- #define GR_CORE_CRIT(...) ::Grotto::Log::GetCoreLogger()->critical(__VA_ARGS__)
- #define GR_CORE_ERROR(...) ::Grotto::Log::GetCoreLogger()->error(__VA_ARGS__)
- #define GR_CORE_WARN(...) ::Grotto::Log::GetCoreLogger()->warn(__VA_ARGS__)
- #define GR_CORE_INFO(...) ::Grotto::Log::GetCoreLogger()->info(__VA_ARGS__)
- #define GR_CORE_TRACE(...) ::Grotto::Log::GetCoreLogger()->trace(__VA_ARGS__)
- #define GR_CRIT(...) ::Grotto::Log::GetClientLogger()->critical(__VA_ARGS__)
- #define GR_ERROR(...) ::Grotto::Log::GetClientLogger()->error(__VA_ARGS__)
- #define GR_WARN(...) ::Grotto::Log::GetClientLogger()->warn(__VA_ARGS__)
- #define GR_INFO(...) ::Grotto::Log::GetClientLogger()->info(__VA_ARGS__)
- #define GR_TRACE(...) ::Grotto::Log::GetClientLogger()->trace(__VA_ARGS__)
- // Log.cpp -----------------------------------------------
- #include "Log.h"
- std::shared_ptr<spdlog::logger> Grotto::Log::s_ClientLogger;
- std::shared_ptr<spdlog::logger> Grotto::Log::s_CoreLogger;
- void Grotto::Log::Init()
- {
- spdlog::set_pattern("%^[%T] %n: %v%$");
- s_CoreLogger = spdlog::stdout_color_mt("GROTTO");
- s_CoreLogger->set_level(spdlog::level::trace);
- s_ClientLogger = spdlog::stdout_color_mt("APP");
- s_ClientLogger->set_level(spdlog::level::trace);
- }
- // Core.h -----------------------------------------------
- #pragma once
- #ifdef GROTTO_PLATFORM_WINDOWS
- #ifdef GROTTO_BUILD_DLL
- #define GROTTO_API __declspec(dllexport)
- #else
- #define GROTTO_API __declspec(dllimport)
- #endif // GROTTO_BUILD_DLL
- #else
- #error Grotto currently only supports Windows platform.
- #endif // GROTTO_PLATFORM_WINDOWS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement