15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef BASE_ALLOCATOR_ALLOCATOR_THUNKS_EXTENSION_H
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define BASE_ALLOCATOR_ALLOCATOR_THUNKS_EXTENSION_H
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stddef.h> // for size_t
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace base {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace allocator {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace thunks {
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WARNING: You probably don't want to use this file unless you are routing a
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// new allocator extension from a specific allocator implementation to base.
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// See allocator_extension.h to see the interface that base exports.
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)typedef bool (*GetAllocatorWasteSizeFunction)(size_t* size);
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void SetGetAllocatorWasteSizeFunction(
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    GetAllocatorWasteSizeFunction get_allocator_waste_size_function);
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)GetAllocatorWasteSizeFunction GetGetAllocatorWasteSizeFunction();
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*GetStatsFunction)(char* buffer, int buffer_length);
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetGetStatsFunction(GetStatsFunction get_stats_function);
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)GetStatsFunction GetGetStatsFunction();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*ReleaseFreeMemoryFunction)();
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void SetReleaseFreeMemoryFunction(
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ReleaseFreeMemoryFunction release_free_memory_function);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ReleaseFreeMemoryFunction GetReleaseFreeMemoryFunction();
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace thunks
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace allocator
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace base
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
37