comparison liboctave/util/oct-alloc.h @ 19632:76478d2da117

unconditionally disable the octave_allocator class * configure.ac: Delete the --enable-octave-allocator option. * oct-alloc.h: Delete octave_allocator class. Warn if file is included. Unconditionally define macros to be empty. * NEWS: Make note of these changes. * oct-alloc.cc: Delete. * liboctave/util/module.mk (UTIL_SRC): Remove it from the list. * make_int.cc, Cell.h, oct-obj.cc, oct-obj.h, audiodevinfo.cc, ov-base-int.h, ov-base-scalar.h, ov-bool-mat.cc, ov-bool-mat.h, ov-bool-sparse.cc, ov-bool-sparse.h, ov-bool.cc, ov-bool.h, ov-builtin.cc, ov-builtin.h, ov-cell.cc, ov-cell.h, ov-ch-mat.h, ov-class.cc, ov-class.h, ov-classdef.cc, ov-classdef.h, ov-complex.cc, ov-complex.h, ov-cs-list.cc, ov-cs-list.h, ov-cx-diag.cc, ov-cx-diag.h, ov-cx-mat.cc, ov-cx-mat.h, ov-cx-sparse.cc, ov-cx-sparse.h, ov-dld-fcn.cc, ov-dld-fcn.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-fcn-inline.cc, ov-fcn-inline.h, ov-fcn.cc, ov-fcn.h, ov-float.cc, ov-float.h, ov-flt-complex.cc, ov-flt-complex.h, ov-flt-cx-diag.cc, ov-flt-cx-diag.h, ov-flt-cx-mat.cc, ov-flt-cx-mat.h, ov-flt-re-diag.cc, ov-flt-re-diag.h, ov-flt-re-mat.cc, ov-flt-re-mat.h, ov-int16.cc, ov-int32.cc, ov-int64.cc, ov-int8.cc, ov-intx.h, ov-java.cc, ov-java.h, ov-mex-fcn.cc, ov-mex-fcn.h, ov-perm.cc, ov-perm.h, ov-range.cc, ov-range.h, ov-re-diag.cc, ov-re-diag.h, ov-re-mat.cc, ov-re-mat.h, ov-re-sparse.cc, ov-re-sparse.h, ov-scalar.cc, ov-scalar.h, ov-str-mat.cc, ov-str-mat.h, ov-struct.cc, ov-struct.h, ov-uint16.cc, ov-uint32.cc, ov-uint64.cc, ov-uint8.cc, ov-usr-fcn.cc, ov-usr-fcn.h, ov.cc, ov.h, pt-const.cc, pt-const.h, idx-vector.cc, idx-vector.h: Delete uses of oct-alloc.h and OCTAVE_ALLOCATOR macros.
author John W. Eaton <jwe@octave.org>
date Tue, 20 Jan 2015 13:43:29 -0500
parents d63878346099
children 4197fc428c7d
comparison
equal deleted inserted replaced
19631:db92e7e28e1f 19632:76478d2da117
21 */ 21 */
22 22
23 #if !defined (octave_oct_alloc_h) 23 #if !defined (octave_oct_alloc_h)
24 #define octave_oct_alloc_h 1 24 #define octave_oct_alloc_h 1
25 25
26 #include <cstddef> 26 #warning "the octave_allocator class has been deprecated and will be removed in a future release of Octave"
27
28 class
29 OCTAVE_API
30 octave_allocator
31 {
32 public:
33
34 octave_allocator (size_t item_sz, int grow_sz = 256)
35 : head (0), grow_size (grow_sz),
36 item_size (item_sz > sizeof (link *) ? item_sz : sizeof (link *))
37 { }
38
39 // Get an object from the free list, possibly increasing the size of
40 // the free list.
41 void *alloc (size_t size);
42
43 // Put objects back on the free list.
44 void free (void *p, size_t size);
45
46 private:
47
48 // Structure for internal free list management.
49 struct link { link *next; };
50
51 // Front of the free list.
52 link *head;
53
54 // How many objects to get each time we call the global operator new.
55 int grow_size;
56
57 // The size of each item on the list (or, if that is smaller than
58 // the size of list*, the size of list*.
59 size_t item_size;
60
61 // How to grow the free list.
62 bool grow (void);
63 };
64
65 #if defined (HAVE_PLACEMENT_DELETE)
66 #define DECLARE_OCTAVE_ALLOCATOR_PLACEMENT_DELETE \
67 void operator delete (void *p, void *) \
68 { ::operator delete (p, static_cast<void*> (0)); }
69 #else
70 #define DECLARE_OCTAVE_ALLOCATOR_PLACEMENT_DELETE \
71 void operator delete (void *p, void *) \
72 { ::operator delete (p); }
73 #endif
74
75 #if defined (USE_OCTAVE_ALLOCATOR)
76
77 #define DECLARE_OCTAVE_ALLOCATOR \
78 public: \
79 void *operator new (size_t size, void *p) \
80 { return ::operator new (size, p); } \
81 DECLARE_OCTAVE_ALLOCATOR_PLACEMENT_DELETE \
82 void *operator new (size_t size) { return allocator.alloc (size); } \
83 void operator delete (void *p, size_t size) { allocator.free (p, size); } \
84 private: \
85 static octave_allocator allocator;
86
87 #define DEFINE_OCTAVE_ALLOCATOR(t) \
88 octave_allocator t::allocator (sizeof (t))
89
90 #define DEFINE_OCTAVE_ALLOCATOR2(t, s) \
91 octave_allocator t::allocator (sizeof (t), s)
92
93 #else
94 27
95 #define DECLARE_OCTAVE_ALLOCATOR 28 #define DECLARE_OCTAVE_ALLOCATOR
96 #define DEFINE_OCTAVE_ALLOCATOR(t) 29 #define DEFINE_OCTAVE_ALLOCATOR(t)
97 #define DEFINE_OCTAVE_ALLOCATOR2(t, s) 30 #define DEFINE_OCTAVE_ALLOCATOR2(t, s)
98 31
99 #endif 32 #endif
100
101 #endif