// Copyright 2020 The Cobalt Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and

#ifndef THIRD_PARTY_LIBDAV1D_INCLUDE_COMMON_STARBOARD_MEMORY_H_
#define THIRD_PARTY_LIBDAV1D_INCLUDE_COMMON_STARBOARD_MEMORY_H_

#include "starboard/memory.h"

#ifdef malloc
#undef malloc
#endif
#define malloc SbMemoryAllocate

#ifdef realloc
#undef realloc
#endif
#define realloc SbMemoryReallocate

#ifdef memcpy
#undef memcpy
#endif
#define memcpy SbMemoryCopy

#ifdef memset
#undef memset
#endif
#define memset SbMemorySet

#ifdef free
#undef free
#endif
#define free SbMemoryDeallocate

#endif  // THIRD_PARTY_LIBDAV1D_INCLUDE_COMMON_STARBOARD_MEMORY_H_
