This file is indexed.

/usr/include/oce/NCollection_StdAllocator.hxx is in liboce-foundation-dev 0.18.2-2build1.

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
// Author: Roman Lygin, 2012.
// This file is in the Public Domain and thus can freely be used for any purpose.
// The author disclaims any rights and liabilities.

#ifndef _NCollection_StdAllocator_HeaderFile
#define _NCollection_StdAllocator_HeaderFile

#include <NCollection_BaseAllocator.hxx>

#if _MSC_VER
  //Workaround for false "unreferenced parameter" warning in destroy().
  #pragma warning (push)
  #pragma warning (disable: 4100)
#endif

//! Implements allocator requirements as defined in ISO C++ Standard 2003, section 20.1.5.
/*! The allocator uses instance of the NCollection_BaseAllocator (sub)class for memory
  allocation/deallocation. The allocator can be used with standard
  containers (std::vector, std::map, etc) to take advantage of NCollection_IncAllocator
  which implements memory region concept, and hence to increase performance in specific
  cases.

  The underlying NCollection_BaseAllocator instance can be received using the Allocator()
  method.

  Example of use:
  \code
  Handle(NCollection_IncAllocator) anIncAlloc = new NCollection_IncAllocator();
  NCollection_StdAllocator<TopoDS_Shape> aSAlloc (anIncAlloc);
  std::list<TopoDS_Shape, NCollection_StdAllocator<TopoDS_Shape> > aL (aSAlloc);
  TopoDS_Solid aSolid = BRepPrimAPI_MakeBox (10., 20., 30.);
  aL.push_back (aSolid);
  \endcode
*/
template<typename T>
class NCollection_StdAllocator {
public:
  typedef T value_type;
  typedef value_type* pointer;
  typedef const value_type* const_pointer;
  typedef value_type& reference;
  typedef const value_type& const_reference;
  typedef size_t size_type;
  typedef ptrdiff_t difference_type;
  template<typename U> struct rebind {
    typedef NCollection_StdAllocator<U> other;
  };

  //! Constructor.
  /*! Creates an object using default Open CASCADE allocation mechanism, i.e. which uses
    Standard::Allocate() and Standard::Free() underneath.
  */
  NCollection_StdAllocator() throw()
  { myAlloc = NCollection_BaseAllocator::CommonBaseAllocator(); }

  //! Constructor.
  /*! Saves \a theAlloc as an underlying allocator instance.*/
  NCollection_StdAllocator( const Handle(NCollection_BaseAllocator)& theAlloc) throw()
  { myAlloc = theAlloc; }

  //! Constructor.
  /*! Copies Allocator() from \a X.*/
  NCollection_StdAllocator( const NCollection_StdAllocator& X) throw() { myAlloc = X.myAlloc; }

  //! Destructor.
  /*! Empty implementation.*/
  ~NCollection_StdAllocator() throw() {}

  //! Constructor.
  /*! Copies Allocator() from \a Y.*/
  template<typename U> NCollection_StdAllocator( const NCollection_StdAllocator<U>& Y) throw()
  { myAlloc = Y.Allocator(); }

  //! Returns an object address.
  /*! Returns &x.*/
  pointer address( reference x ) const { return &x; }

  //! Returns an object address.
  /*! Returns &x.*/
  const_pointer address( const_reference x ) const { return &x; }
  
  //! Allocates memory for \a n objects.
  /*! Uses underlying allocator to allocate memory.*/
  pointer allocate( size_type n, const void* /*hint*/ = 0 )
  { return pointer( myAlloc->Allocate( n * sizeof( value_type ))); }

  //! Frees previously allocated memory.
  /*! Uses underlying allocator to deallocate memory.*/
  void deallocate( pointer p, size_type ) { myAlloc->Free( p ); }

  //! Returns the largest value for which method allocate might succeed.
  size_type max_size() const throw()
  {
    size_type aMax = static_cast<size_type>( -1 ) / sizeof( value_type );
    return aMax;
  }

  //! Constructs an object.
  /*! Uses placement new operator and copy constructor to construct an object.*/
  void construct( pointer p, const_reference val )
  { new( static_cast<void*>( p )) value_type( val ); }

  //! Destroys the object.
  /*! Uses object destructor.*/
#if defined(__BORLANDC__)
  void destroy( pointer p ) { p->~T(); }
#else
  void destroy( pointer p ) { p->~value_type(); }
#endif
  
  //! Returns an underlying NCollection_BaseAllocator instance.
  /*! Returns an object specified in the constructor.*/
  const Handle(NCollection_BaseAllocator)& Allocator() const { return myAlloc; }

protected:
  Handle(NCollection_BaseAllocator) myAlloc;
};

#if _MSC_VER
  #pragma warning (pop)
#endif


//! Implements specialization NCollection_StdAllocator<void>.
/*! Specialization is of low value and should normally be avoided in favor of a typed specialization.

  Example of use:
  \code
  Handle(NCollection_IncAllocator) anIncAlloc = new NCollection_IncAllocator();
  NCollection_StdAllocator<void> aVAlloc (anIncAlloc);
  std::vector<double, NCollection_StdAllocator<double> > aV3 (aVAlloc);
  aV3.push_back (10.);
  \endcode
*/
template<> 
class NCollection_StdAllocator<void> {
public:
  typedef void* pointer;
  typedef const void* const_pointer;
  typedef void value_type;
  template<typename U> struct rebind {
    typedef NCollection_StdAllocator<U> other;
  };

  //! Constructor.
  /*! Creates an object using default Open CASCADE allocation mechanism, i.e. which uses
    Standard::Allocate() and Standard::Free() underneath.
  */
  NCollection_StdAllocator() throw()
  { myAlloc = NCollection_BaseAllocator::CommonBaseAllocator(); }

  //! Constructor.
  /*! Saves \a theAlloc as an underlying allocator instance.*/
  NCollection_StdAllocator( const Handle(NCollection_BaseAllocator)& theAlloc) throw()
  { myAlloc = theAlloc; }

  //! Constructor.
  /*! Copies Allocator() from \a X.*/
  NCollection_StdAllocator( const NCollection_StdAllocator& X) throw() { myAlloc = X.myAlloc; }

  //! Returns an underlying NCollection_BaseAllocator instance.
  /*! Returns an object specified in the constructor.*/
  const Handle(NCollection_BaseAllocator)& Allocator() const { return myAlloc; }

protected:
  Handle(NCollection_BaseAllocator) myAlloc;
};

template<typename T, typename U>
inline bool operator==( const NCollection_StdAllocator<T>& X, const NCollection_StdAllocator<U>& Y)
{ return !!(X.Allocator() == Y.Allocator()); }

template<typename T, typename U>
inline bool operator!=( const NCollection_StdAllocator<T>& X, const NCollection_StdAllocator<U>& Y)
{ return !(X == Y); }


#endif