mirror of https://github.com/axmolengine/axmol.git
69 lines
2.0 KiB
C++
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;
|
|
|
|
};
|
|
}}}
|