blob: 927be4bf4ccbc489f6481975f1a11c13b0be8a91 (
plain)
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// File: NIS_Allocator.h
// Created: 22.10.10 17:22
// Author: Alexander GRIGORIEV
// Copyright: Open Cascade 2010
#ifndef NIS_Allocator_HeaderFile
#define NIS_Allocator_HeaderFile
#include <NCollection_IncAllocator.hxx>
/**
* Subclass of Incremental Allocator. It is aware of the total
* allocated and released memory. Used in NIS_Interactive context as
* private allocator that manages all memory used by interactive objects.
*/
class NIS_Allocator : public NCollection_IncAllocator
{
public:
// ---------- PUBLIC METHODS ----------
/**
* Constructor.
*/
Standard_EXPORT NIS_Allocator (const size_t theBlockSize = 24600);
/**
* Query the total number of allocated bytes
*/
inline Standard_Size NAllocated () const
{
return myNAllocated;
}
/**
* Query the total number of released bytes
*/
inline Standard_Size NFreed () const
{
return myNFreed;
}
/**
* Set both counters to zero. Should be called with method Reset of the base
* class NCollection_IncAlocator.
*/
Standard_EXPORT void ResetCounters ();
/**
* Allocate memory with given size. Returns NULL on failure
*/
Standard_EXPORT virtual void* Allocate (const size_t size);
/*
* Free a previously allocated memory. Does nothing but count released bytes.
*/
Standard_EXPORT virtual void Free (void *anAddress);
private:
// ---------- PRIVATE FIELDS ----------
Standard_Size myNAllocated;
Standard_Size myNFreed;
public:
// Declaration of CASCADE RTTI
DEFINE_STANDARD_RTTI (NIS_Allocator)
};
// Definition of HANDLE object using Standard_DefineHandle.hxx
DEFINE_STANDARD_HANDLE (NIS_Allocator, NCollection_IncAllocator)
#endif
|