/usr/include/oce/LDOM_MemManager.hxx is in liboce-ocaf-lite-dev 0.9.1-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | // File: LDOM_MemManager.hxx
// Created: 26.06.01 11:30:08
// Author: Alexander GRIGORIEV
// Copyright: OpenCascade 2001
#ifndef LDOM_MemManager_HeaderFile
#define LDOM_MemManager_HeaderFile
#include <MMgt_TShared.hxx>
#include <Standard_DefineHandle.hxx>
#include <LDOM_Document.hxx>
class LDOM_BasicElement;
// Class LDOM_MemManager (underlying structure of LDOM_Document)
//
class LDOM_MemManager : public MMgt_TShared
{
public:
// ---------- PUBLIC METHODS ----------
Standard_EXPORT LDOM_MemManager (const Standard_Integer aBlockSize);
// Constructor
Standard_EXPORT ~LDOM_MemManager ();
// Destructor
Standard_EXPORT void * Allocate (const Standard_Integer aSize);
// General Memory allocator
const char * HashedAllocate (const char * aString,
const Standard_Integer theLen,
Standard_Integer& theHash);
// Memory allocation with access via hash table. No new allocation
// if already present
void HashedAllocate (const char * aString,
const Standard_Integer theLen,
LDOMBasicString& theResult);
// Memory allocation with access via hash table. No new allocation
// if already present
static Standard_Integer Hash (const char * theString,
const Standard_Integer theLen)
{ return HashTable::Hash (theString, theLen); }
static Standard_Boolean CompareStrings(const char * theString,
const Standard_Integer theHashValue,
const char * theHashedStr);
LDOM_Document Doc () const
{ return LDOM_Document (* this); }
const LDOM_MemManager& Self () const
{ return * this; }
const LDOM_BasicElement * RootElement () const
{ return myRootElement; }
private:
friend class LDOM_Document;
friend class LDOMParser;
// ---- CLASS MemBlock ----
class MemBlock {
friend class LDOM_MemManager;
inline MemBlock (const Standard_Integer aSize, MemBlock * aFirst);
inline void * Allocate (const Standard_Integer aSize);
void * AllocateAndCheck (const Standard_Integer aSize, const MemBlock *&);
~MemBlock ();
MemBlock * Next () { return myNext; }
Standard_Integer mySize;
Standard_Integer * myBlock;
Standard_Integer * myEndBlock;
Standard_Integer * myFreeSpace;
MemBlock * myNext;
};
// ---- CLASS HashTable ----
class HashTable {
friend class LDOM_MemManager;
HashTable (/* const Standard_Integer theMask, */
LDOM_MemManager& theMemManager);
const char * AddString (const char * theString,
const Standard_Integer theLen,
Standard_Integer& theHashIndex);
static Standard_Integer Hash(const char * theString,
const Standard_Integer theLen);
// Note : This operator must be implemented on first use. It is currently defined to avoid compiler warnings
HashTable & operator = (const HashTable &) { return *this; }
struct TableItem {
char * str;
struct TableItem * next;
} * myTable;
// Standard_Integer myMask;
LDOM_MemManager& myManager;
};
// ---- PROHIBITED (PRIVATE) METHODS ----
LDOM_MemManager (const LDOM_MemManager& theOther);
// Copy constructor
LDOM_MemManager& operator = (const LDOM_MemManager& theOther);
// Assignment
// ---------- PRIVATE FIELDS ----------
const LDOM_BasicElement * myRootElement;
MemBlock * myFirstBlock;
MemBlock * myFirstWithoutRoom;
Standard_Integer myBlockSize;
HashTable * myHashTable;
public:
// CASCADE RTTI
DEFINE_STANDARD_RTTI (LDOM_MemManager)
};
#include <Handle_LDOM_MemManager.hxx>
#endif
|