axmol/extensions/Live2D/Framework/src/ICubismAllocator.hpp

69 lines
2.0 KiB
C++

/**
* Copyright(c) Live2D Inc. All rights reserved.
*
* Use of this source code is governed by the Live2D Open Software license
* that can be found at https://www.live2d.com/eula/live2d-open-software-license-agreement_en.html.
*/
#pragma once
#include "Type/CubismBasicType.hpp"
namespace Live2D { namespace Cubism { namespace Framework {
/**
* @brief メモリアロケーションを抽象化したクラス.
*
* メモリ確保・解放処理をプラットフォーム側で実装して
* フレームワークから呼び出すためのインターフェース。
*
*/
class ICubismAllocator
{
public:
/**
* @brief デストラクタ
*
* デストラクタ。
*/
virtual ~ICubismAllocator() {}
/**
* @brief アラインメント制約なしのヒープ・メモリーを確保します。
*
* @param[in] size 確保するバイト数
*
* @return 成功すると割り当てられたメモリのアドレス。 そうでなければ '0'を返す。
*/
virtual void* Allocate(const csmSizeType size) = 0;
/**
* @brief アラインメント制約なしのヒープ・メモリーを解放します。
*
* @param[in] memory 解放するメモリのアドレス
*
*/
virtual void Deallocate(void* memory) = 0;
/**
* @brief アラインメント制約ありのヒープ・メモリーを確保します。
*
* @param[in] size 確保するバイト数
* @param[in] alignment メモリーブロックのアラインメント幅
*
* @return 成功すると割り当てられたメモリのアドレス。 そうでなければ '0'を返す。
*/
virtual void* AllocateAligned(const csmSizeType size, const csmUint32 alignment) = 0;
/**
* @brief アラインメント制約ありのヒープ・メモリーを解放します。
*
* @param[in] alignedMemory 解放するメモリのアドレス
*
*/
virtual void DeallocateAligned(void* alignedMemory) = 0;
};
}}}