#ifndef __GT_CORE_MEM_H__
#define __GT_CORE_MEM_H__
#include <pthread.h>
#include "gtstruct.h"

class GtMem
{
    private:
        GtMem();
        static GtMem *_instance;
        static pthread_mutex_t _memMutex;
        stTerminal *_terminal;
        stRuntime *_runtime;
        stCtrlInfo *_ctrlInfo;
        stGameRuntime *_gameRuntime;
        void initMem();

    public:
        virtual ~GtMem();
        static GtMem *instance();


        /************************************************************
        *功能：保存终端配置的内存数据
        *输入：data=终端配置的内存数据
        *输出：无
        *返回：!=0错误
        */
        int setMemTerminal(stTerminal *data);

        /************************************************************
        *功能：获取终端配置的内存数据
        *输入：无
        *输出：data=终端配置的内存数据
        *返回：!=0错误
        */
        int getMemTerminal(stTerminal *data);

        /************************************************************
        *功能：保存终端运行的内存数据
        *输入：data=终端运行的内存数据
        *输出：无
        *返回：!=0错误
        */
        int setMemRuntime(stRuntime *data);

        /************************************************************
        *功能：获取终端运行的内存数据
        *输入：无
        *输出：data=终端运行的内存数据
        *返回：!=0错误
        */
        int getMemRuntime(stRuntime *data);

        /************************************************************
        *功能：保存控制参数内存数据
        *输入：data=控制参数内存数据
        *输出：无
        *返回：!=0错误
        */
        int setMemCtrlInfo(stCtrlInfo *data);

        /************************************************************
        *功能：获取控制参数内存数据
        *输入：无
        *输出：data=控制参数内存数据
        *返回：!=0错误
        */
        int getMemCtrlInfo(stCtrlInfo *data);

        /************************************************************
        *功能：保存游戏内存数据
        *输入：data=游戏内存数据
        *输出：无
        *返回：!=0错误
        */
        int setMemGameRuntime(stGameRuntime *data);

        /************************************************************
        *功能：获取游戏内存数据
        *输入：无
        *输出：data=游戏内存数据
        *返回：!=0错误
        */
        int getMemGameRuntime(stGameRuntime *data);
};

#endif