#include <stdio.h> #include <stdlib.h> #include "util.h" #include "WeaponObject.h" #include "ArmorObject.h" template <> void safe_free(void * & ptr) { if (ptr == nullptr) return; free(ptr); ptr = nullptr; } template <> void safe_free(const char * & ptr) { auto x = static_cast<void *>(const_cast<char *>(ptr)); safe_free(x); } template <> void safe_free(WeaponObject * & ptr) { delete ptr; } template <> void safe_free(ArmorObject * & ptr) { delete ptr; } template <typename T> void safe_free(T * & ptr) { auto x = static_cast<void *>(ptr); safe_free(x); } template void safe_free(char * &); template void safe_free(FILE * &);