1 /*******************************************************************************
2 3 A bucket element allocator using the D runtime memory manager. Bucket
4 elements are newed by get() and deleted by recycle().
5 6 Copyright:
7 Copyright (c) 2009-2016 dunnhumby Germany GmbH.
8 All rights reserved.
9 10 License:
11 Boost Software License Version 1.0. See LICENSE_BOOST.txt for details.
12 Alternatively, this file may be distributed under the terms of the Tango
13 3-Clause BSD License (see LICENSE_BSD.txt for details).
14 15 *******************************************************************************/16 17 moduleocean.util.container.map.model.BucketElementGCAllocator;
18 19 20 importocean.util.container.map.model.IBucketElementGCAllocator;
21 22 23 /*******************************************************************************
24 25 A bucket element allocator using the D runtime memory manager. Even though
26 this memory manager is called "GC-managed" this class
27 in fact doesn't rely on garbage collection but explicitly deletes unused
28 bucket elements.
29 30 *******************************************************************************/31 32 publicclassBucketElementGCAllocator(Bucket) : IBucketElementGCAllocator33 {
34 /***************************************************************************
35 36 Constructor.
37 38 ***************************************************************************/39 40 publicthis ( )
41 {
42 super(Bucket.Element.sizeof);
43 }
44 45 /***************************************************************************
46 47 Gets or allocates an object
48 49 Returns:
50 an object that is ready to use.
51 52 ***************************************************************************/53 54 protectedoverridevoid* allocate ( )
55 {
56 returnnewBucket.Element;
57 }
58 }
59 60 61 /*******************************************************************************
62 63 Creates an instance of BucketElementGCAllocator which is suitable for usage
64 with the Map type passed as a template parameter.
65 66 Params:
67 Map = the type to create the allocator according to
68 69 Returns:
70 an instance of type BucketElementGCAllocator class
71 72 *******************************************************************************/73 74 publicBucketElementGCAllocator!(Map.Bucket) instantiateAllocator ( Map ) ( )
75 {
76 returnnewBucketElementGCAllocator!(Map.Bucket);
77 }