summaryrefslogtreecommitdiff
path: root/inc/NIS_Allocator.hxx
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