mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Added LightClass
This commit is contained in:
parent
40ac8a1557
commit
5a19f7f574
5 changed files with 141 additions and 55 deletions
|
@ -12,6 +12,7 @@ set(SOURCES_SHARED
|
|||
"${CMAKE_SOURCE_DIR}/code/qcommon/class.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/con_set.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/con_timer.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/lightclass.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/listener.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/lz77.cpp"
|
||||
"${CMAKE_SOURCE_DIR}/code/qcommon/mem_blockalloc.cpp"
|
||||
|
|
|
@ -212,56 +212,7 @@ void CLASS_Print(FILE *class_file, const char *fmt, ...)
|
|||
}
|
||||
}
|
||||
|
||||
size_t totalmemallocated = 0;
|
||||
unsigned int numclassesallocated = 0;
|
||||
|
||||
bool classInited = false;
|
||||
|
||||
#ifndef _DEBUG_MEM
|
||||
void *Class::operator new(size_t s)
|
||||
{
|
||||
size_t *p;
|
||||
|
||||
if (s == 0) {
|
||||
static void *empty_memory = nullptr;
|
||||
return &empty_memory;
|
||||
}
|
||||
|
||||
s += sizeof(size_t);
|
||||
|
||||
# ifdef GAME_DLL
|
||||
p = (size_t *)gi.Malloc(s);
|
||||
# elif defined(CGAME_DLL)
|
||||
p = (size_t *)cgi.Malloc(s);
|
||||
# else
|
||||
p = (size_t *)Z_Malloc(s);
|
||||
# endif
|
||||
|
||||
totalmemallocated += s;
|
||||
numclassesallocated++;
|
||||
|
||||
p++;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void Class::operator delete(void *ptr)
|
||||
{
|
||||
size_t *p = ((size_t *)ptr) - 1;
|
||||
|
||||
totalmemallocated -= *p;
|
||||
numclassesallocated--;
|
||||
|
||||
# ifdef GAME_DLL
|
||||
gi.Free(p);
|
||||
# elif defined(CGAME_DLL)
|
||||
cgi.Free(p);
|
||||
# else
|
||||
Z_Free(p);
|
||||
# endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
Class::Class()
|
||||
{
|
||||
|
|
|
@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
#include "container.h"
|
||||
#include "q_shared.h"
|
||||
#include "str.h"
|
||||
#include "lightclass.h"
|
||||
|
||||
#include "const_str.h"
|
||||
|
||||
|
@ -239,7 +240,7 @@ void listInheritanceOrder(const char* classname);
|
|||
class SafePtrBase;
|
||||
class Archiver;
|
||||
|
||||
class Class
|
||||
class Class : public LightClass
|
||||
{
|
||||
public:
|
||||
SafePtrBase* SafePtrList;
|
||||
|
@ -248,11 +249,6 @@ private:
|
|||
void ClearSafePointers();
|
||||
|
||||
public:
|
||||
#ifndef _DEBUG_MEM
|
||||
void* operator new(size_t);
|
||||
void operator delete(void*);
|
||||
#endif
|
||||
|
||||
Class();
|
||||
virtual ~Class();
|
||||
|
||||
|
|
101
code/qcommon/lightclass.cpp
Normal file
101
code/qcommon/lightclass.cpp
Normal file
|
@ -0,0 +1,101 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
OpenMoHAA source code 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 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
OpenMoHAA source code 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 OpenMoHAA source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "lightclass.h"
|
||||
|
||||
#if defined(GAME_DLL)
|
||||
|
||||
# include "../fgame/g_local.h"
|
||||
|
||||
# define LIGHTCLASS_Printf gi.Printf
|
||||
# define LIGHTCLASS_DPrintf gi.DPrintf
|
||||
# define LIGHTCLASS_Error gi.Error
|
||||
|
||||
#elif defined(CGAME_DLL)
|
||||
|
||||
# include "../cgame/cg_local.h"
|
||||
|
||||
# define LIGHTCLASS_Printf cgi.Printf
|
||||
# define LIGHTCLASS_DPrintf cgi.DPrintf
|
||||
# define LIGHTCLASS_Error cgi.Error
|
||||
|
||||
#else
|
||||
|
||||
# include "qcommon.h"
|
||||
|
||||
# define LIGHTCLASS_Printf Com_Printf
|
||||
# define LIGHTCLASS_DPrintf Com_DPrintf
|
||||
# define LIGHTCLASS_Error Com_Error
|
||||
|
||||
#endif
|
||||
|
||||
size_t totalmemallocated = 0;
|
||||
unsigned int numclassesallocated = 0;
|
||||
|
||||
void DisplayMemoryUsage() {
|
||||
LIGHTCLASS_Printf("Classes %-5d Class memory used: %d\n", numclassesallocated, totalmemallocated);
|
||||
}
|
||||
|
||||
#ifndef _DEBUG_MEM
|
||||
void *LightClass::operator new(size_t s)
|
||||
{
|
||||
size_t *p;
|
||||
|
||||
if (s == 0) {
|
||||
static void *empty_memory = nullptr;
|
||||
return &empty_memory;
|
||||
}
|
||||
|
||||
s += sizeof(size_t);
|
||||
|
||||
# ifdef GAME_DLL
|
||||
p = (size_t *)gi.Malloc(s);
|
||||
# elif defined(CGAME_DLL)
|
||||
p = (size_t *)cgi.Malloc(s);
|
||||
# else
|
||||
p = (size_t *)Z_Malloc(s);
|
||||
# endif
|
||||
|
||||
totalmemallocated += s;
|
||||
numclassesallocated++;
|
||||
|
||||
p++;
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
void LightClass::operator delete(void *ptr)
|
||||
{
|
||||
size_t *p = ((size_t *)ptr) - 1;
|
||||
|
||||
totalmemallocated -= *p;
|
||||
numclassesallocated--;
|
||||
|
||||
# ifdef GAME_DLL
|
||||
gi.Free(p);
|
||||
# elif defined(CGAME_DLL)
|
||||
cgi.Free(p);
|
||||
# else
|
||||
Z_Free(p);
|
||||
# endif
|
||||
}
|
||||
#endif
|
37
code/qcommon/lightclass.h
Normal file
37
code/qcommon/lightclass.h
Normal file
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 2023 the OpenMoHAA team
|
||||
|
||||
This file is part of OpenMoHAA source code.
|
||||
|
||||
OpenMoHAA source code 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 2 of the License,
|
||||
or (at your option) any later version.
|
||||
|
||||
OpenMoHAA source code 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 OpenMoHAA source code; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
// lightclass.h: Implementation of a light class
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "q_shared.h"
|
||||
|
||||
class LightClass {
|
||||
public:
|
||||
#ifndef _DEBUG_MEM
|
||||
void* operator new(size_t);
|
||||
void operator delete(void*);
|
||||
#endif
|
||||
};
|
||||
|
||||
void DisplayMemoryUsage();
|
Loading…
Add table
Add a link
Reference in a new issue