#ifndef __GT_CORE_GT_H__
#define __GT_CORE_GT_H__

class Gt
{
    public:
        virtual ~Gt();
        static Gt *instance();
        static const char _delimiter1;
        static const char _delimiter2;
        static const char _delimiter3;

        /************************************************************
        *功能：设置App应用目录
        *输入：path app应用files目录
        *输出：无
        *返回：无
        */
        void setAppPath(const char *path);

        /************************************************************
        *功能：获取config目录
        *输入：无
        *输出：path config绝对路径
        *返回：无
        */
        void getConfigPath(char *path);

        /************************************************************
        *功能：获取dat目录
        *输入：无
        *输出：path dat绝对路径
        *返回：无
        */
        void getDatPath(char *path);

        /************************************************************
        *功能：获取log目录
        *输入：无
        *输出：path log绝对路径
        *返回：无
        */
        void getLogPath(char *path);

        /************************************************************
        *功能：获取download目录
        *输入：无
        *输出：path download绝对路径
        *返回：无
        */
        void getDownloadPath(char *path);

        /************************************************************
        *功能：获取resource目录
        *输入：无
        *输出：path resource绝对路径
        *返回：无
        */
        void getResourcePath(char *path);

        /************************************************************
        *功能：获取首次启动配置文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getFirstLoadCfgFile(char *fileName);

        /************************************************************
        *功能：获取终端配置文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getTerminalCfgFile(char *fileName);

        /************************************************************
        *功能：获取交易流水号文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getTradingSNDatFile(char *fileName);

        /************************************************************
        *功能：获取最近一张票数据文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getLastTicketDatFile(char *fileName);

        /************************************************************
        *功能：获取终端激活文件
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getRegisterDatFile(char *fileName);

        /************************************************************
        *功能：获取终端编号文件
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getTerminalNoDatFile(char *fileName);

        /************************************************************
        *功能：获取交易日志文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getTradingLogFile(char *fileName);

        /************************************************************
        *功能：获取错误日志文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getErrorLogFile(char *fileName);

        /************************************************************
        *功能：获取Crash日志文件路径
        *输入：无
        *输出：fileName 绝对路径+文件名
        *返回：无
        */
        void getCrashLogFile(char *fileName);

    private:
        Gt();
        static Gt *_instance;
        char _appPath[128];//App应用目录
        char _configPath[16];//配置文件目录
        char _datPath[16];//数据文件目录
        char _logPath[16];//日志文件目录
        char _downloadPath[16];//下载文件目录
        char _resourcePath[128];//资源目录
        char _firstLoadCfgFile[32];
        char _terminalCfgFile[32];
        char _tradingSNDatFile[32];
        char _lastTicketDatFile[32];
        char _registerDatFile[32];
        char _terminalNoDatFile[32];
        char _tradingLogFile[32];
        char _errorLogFile[32];
        char _crashLogFile[32];
        void initConfig();
        bool createDir(char *path);
};

#endif
