// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This file contains helpers for the process_util_unittest to allow it to fully
// test the Mac code.

#ifndef BASE_PROCESS_MEMORY_UNITTEST_MAC_H_
#define BASE_PROCESS_MEMORY_UNITTEST_MAC_H_

#include <sys/types.h>

#include "build/build_config.h"
#include "starboard/types.h"

namespace base {

// Allocates memory via system allocators. Alas, they take a _signed_ size for
// allocation.
void* AllocateViaCFAllocatorSystemDefault(ssize_t size);
void* AllocateViaCFAllocatorMalloc(ssize_t size);
void* AllocateViaCFAllocatorMallocZone(ssize_t size);

#if !defined(ARCH_CPU_64_BITS)
// See process_util_unittest_mac.mm for an explanation of why this function
// isn't implemented for the 64-bit environment.

// Allocates a huge Objective C object.
void* AllocatePsychoticallyBigObjCObject();

#endif  // !ARCH_CPU_64_BITS

}  // namespace base

#endif  // BASE_PROCESS_MEMORY_UNITTEST_MAC_H_
