| ... | @@ -5,15 +5,15 @@ const debug_mode = @import("builtin").mode == .Debug; | ... | @@ -5,15 +5,15 @@ const debug_mode = @import("builtin").mode == .Debug; |
| 5 | pub const MemoryPoolError = error{OutOfMemory}; | 5 | pub const MemoryPoolError = error{OutOfMemory}; |
| 6 | | 6 | |
| 7 | /// A memory pool that can allocate objects of a single type very quickly. | 7 | /// A memory pool that can allocate objects of a single type very quickly. |
| 8 | /// Use this instead of a general purpose allocator when you need to allocate a lot of objects | 8 | /// Use this when you need to allocate a lot of objects of the same type, |
| 9 | /// of the same type, as a memory pool outperforms general purpose allocators. | 9 | /// because It outperforms general purpose allocators. |
| 10 | pub fn MemoryPool(comptime Item: type) type { | 10 | pub fn MemoryPool(comptime Item: type) type { |
| 11 | return MemoryPoolAligned(Item, @alignOf(Item)); | 11 | return MemoryPoolAligned(Item, @alignOf(Item)); |
| 12 | } | 12 | } |
| 13 | | 13 | |
| 14 | /// A memory pool that can allocate objects of a single type very quickly. | 14 | /// A memory pool that can allocate objects of a single type very quickly. |
| 15 | /// Use this instead of a general purpose allocator when you need to allocate a lot of objects | 15 | /// Use this when you need to allocate a lot of objects of the same type, |
| 16 | /// of the same type, as a memory pool outperforms general purpose allocators. | 16 | /// because It outperforms general purpose allocators. |
| 17 | pub fn MemoryPoolAligned(comptime Item: type, comptime alignment: u29) type { | 17 | pub fn MemoryPoolAligned(comptime Item: type, comptime alignment: u29) type { |
| 18 | if (@alignOf(Item) == alignment) { | 18 | if (@alignOf(Item) == alignment) { |
| 19 | return MemoryPoolExtra(Item, .{}); | 19 | return MemoryPoolExtra(Item, .{}); |
| ... | @@ -32,20 +32,18 @@ pub const Options = struct { | ... | @@ -32,20 +32,18 @@ pub const Options = struct { |
| 32 | }; | 32 | }; |
| 33 | | 33 | |
| 34 | /// A memory pool that can allocate objects of a single type very quickly. | 34 | /// A memory pool that can allocate objects of a single type very quickly. |
| 35 | /// Use this instead of a general purpose allocator when you need to allocate a lot of objects | 35 | /// Use this when you need to allocate a lot of objects of the same type, |
| 36 | /// of the same type, as a memory pool outperforms general purpose allocators. | 36 | /// because It outperforms general purpose allocators. |
| 37 | pub fn MemoryPoolExtra(comptime Item: type, comptime pool_options: Options) type { | 37 | pub fn MemoryPoolExtra(comptime Item: type, comptime pool_options: Options) type { |
| 38 | return struct { | 38 | return struct { |
| 39 | const Pool = @This(); | 39 | const Pool = @This(); |
| 40 | | 40 | |
| 41 | /// Size of the memory pool items. This is not necessarily | 41 | /// Size of the memory pool items. This is not necessarily the same |
| 42 | /// the same as `@sizeOf(Item)` as the pool also uses the items for internal | 42 | /// as `@sizeOf(Item)` as the pool also uses the items for internal means. |
| 43 | /// means. | | |
| 44 | pub const item_size = std.math.max(@sizeOf(Node), @sizeOf(Item)); | 43 | pub const item_size = std.math.max(@sizeOf(Node), @sizeOf(Item)); |
| 45 | | 44 | |
| 46 | /// Alignment of the memory pool items. This is not necessarily | 45 | /// Alignment of the memory pool items. This is not necessarily the same |
| 47 | /// the same as `@alignOf(Item)` as the pool also uses the items for internal | 46 | /// as `@alignOf(Item)` as the pool also uses the items for internal means. |
| 48 | /// means. | | |
| 49 | pub const item_alignment = std.math.max(@alignOf(Node), pool_options.alignment orelse 0); | 47 | pub const item_alignment = std.math.max(@alignOf(Node), pool_options.alignment orelse 0); |
| 50 | | 48 | |
| 51 | const Node = struct { | 49 | const Node = struct { |