File: daeMemorySystem.h

package info (click to toggle)
collada-dom 2.4.4%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster, stretch
  • size: 17,096 kB
  • sloc: cpp: 156,849; php: 4,567; makefile: 38; sh: 32; python: 14
file content (57 lines) | stat: -rw-r--r-- 1,926 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* Copyright 2006 Sony Computer Entertainment Inc.
*
* Licensed under the MIT Open Source License, for details please see license.txt or the website
* http://www.opensource.org/licenses/mit-license.php
*
*/ 

#ifndef __DAE_MEMORY_SYSTEM_H__
#define __DAE_MEMORY_SYSTEM_H__

#include <dae/daeTypes.h>

/**
 * The @c daeMemorySystem class is a simple wrapper for memory operations.
 * Every allocation passes a string pool name such that
 * in the future different pools can be used based on allocation type.
 * Currently the system is just a pass-through to system @c malloc.
 */
class daeMemorySystem
{
public:
	/**
	 * Provides a wrapper malloc with pool field.
	 * @param pool String name of the pool to use for this allocation.
	 * @param n Number of bytes to allocate.
	 * @return Returns the memory allocated if successful, or NULL if not.
	 */
	static DLLSPEC daeRawRef alloc(daeString pool, size_t n);

	/**
	 * Provides a wrapper free with pool argument.
	 * @param pool Pool the memory should be freed from.
	 * @param mem Memory to be freed.
	 */
	static DLLSPEC void dealloc(daeString pool, daeRawRef mem);
};

// (steveT) These new/delete overrides aren't complete. What about new[] and delete[]?
// Standard new should throw a bad_alloc exception, and a nothrow new should be provided
// that returns null instead of throwing bad_alloc. Because of these problems, plus the
// fact that we currently don't benefit in any way from overriding new and delete, this
// code is currently disabled.

#if 0
#define DAE_ALLOC \
	/* Standard new/delete */ \
	inline void* operator new(size_t size) { return daeMemorySystem::alloc("meta", size); } \
	inline void operator delete(void* p) { daeMemorySystem::dealloc("meta", p); } \
	/* Placement new/delete */ \
	inline void* operator new(size_t, void* p) { return p; } \
	inline void operator delete(void*, void*) { }
#endif

#define DAE_ALLOC

#endif // __DAE_MEMORY_H__