Newer
Older
libkc / modules / src / kc_memory_entry_inner.h
/**
 * @file   kc_memory_entry_inner.h
 * @brief  KC メモリ管理 Entry サブモジュール (内部用)
 * @copyright  2003 - 2023  Nomura Kei
 * @depends
 *	kc.h
 *	kc_memory_mark.h
 *	kc_memory_entry.h
 *
 * KcMemoryEntry の操作をする関数群を格納したサブモジュールです。
 */
#ifndef KC_MEMORY_ENTRY_INNER_H
#define KC_MEMORY_ENTRY_INNER_H

#include <kc_memory_entry.h>

#ifdef __cplusplus
extern "C"
{
    namespace kc
    {
        using namespace std;
#endif

        /**
         * KcMemoryEntry を構築します。
         * entry が NULL の場合、新規に KeMemoryEntry を構築します。
         * entry が NULL でない場合、entry の管理するメモリサイズを変更し、各種値を更新します。
         * 構築に失敗した場合、NULL を返します。
         *
         * @param entry  メモリエントリ
         * @param alignment アライメント
         * @param size   メモリサイズ
         * @param mark   メモリ状態
         * @param file   メモリ確保ファイル名
         * @param func   メモリ確保関数名
         * @param line   メモリ確保行番号
         * @return 構築した KcMemoryEntry
         */
        KcMemoryEntry *KcMemoryEntry_new(KcMemoryEntry *entry, size_t alignment, size_t size,
                                         KcMemoryMark mark, const char *file, const char *func, int line);
        /**
         * KcMemoryEntry を破棄します。
         *
         * @param entry 破棄するメモリエントリ
         */
        void KcMemoryEntry_delete(KcMemoryEntry *entry);

        /**
         * 指定された entry に、指定された値を設定します。
         * entry が NULL の場合、何もしません。
         *
         * @param entry  メモリエントリ
         * @param size   メモリサイズ
         * @param mark   メモリ状態
         * @param file   メモリ確保ファイル名
         * @param func   メモリ確保関数名
         * @param line   メモリ確保行番号
         */
        void KcMemoryEntry_set(KcMemoryEntry *entry,
                               size_t size, KcMemoryMark mark, const char *file, const char *func, int line);

#ifdef __cplusplus
    } // namespace kc
} // extern "C"
#endif
#endif // KC_MEMORY_ENTRY_INNER_H