// =====================================================================================================================
//  fennec, a free and open source game engine
//  Copyright © 2025 - 2026  Medusa Slockbower
//
//  This program is free software: you can redistribute it and/or modify
//  it under the terms of the GNU General Public License as published by
//  the Free Software Foundation, either version 3 of the License, or
//  (at your option) any later version.
//
//  This program is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//  GNU General Public License for more details.
//
//  You should have received a copy of the GNU General Public License
//  along with this program.  If not, see <https://www.gnu.org/licenses/>.
// =====================================================================================================================

#include <fennec/core/logger.h>
#include <cpptrace/cpptrace.hpp>

void _assert_callback(const fennec::cstring& expr, const fennec::cstring& file, int line, const fennec::cstring& func, const fennec::cstring& desc)
{
	// Skip
	// __assert_callback
	// __assert_impl
	fennec::logger::log(fennec::logger::fatal, fennec::format(""
		"Assert failed: \"{}\" \n"
		"At {}:{} in {} \n"
		"Description: {} \n"
		"Stacktrace: \n",
		expr, file, line, func, desc
	));
	/*printf("Assert failed: \"%s\" \n"
	       "At %s:%d in %s \n"
		   "Description: %s \n",
		   expression, file, line, function, description);*/
	cpptrace::generate_trace(2).print();
}
