亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lsutil.cpp

?? 日志模塊代碼
?? CPP
字號:
/*********************************************************************
* 版權所有 (C)2006, 深圳市中興通訊股份有限公司。
* 
* 文件名稱: LSUtil.cpp
* 文件標識: 
* 內(nèi)容摘要: 系統(tǒng)日志服務工具函數(shù)實現(xiàn)
* 其它說明: 
* 當前版本: V1.00
* 作    者: 張 帆
* 完成日期: 2006-07-20
* 
* 修改記錄1:// 修改歷史記錄,包括修改日期、修改者及修改內(nèi)容
*    修改日期:
*    版 本 號:
*    修 改 人:
*    修改內(nèi)容: 
* 修改記錄2:…
**********************************************************************/
#include "LSUtil.h"

#include <windows.h>
#include <io.h>

#include <fstream>
#include "NOPConst.h"


using namespace std;
using namespace NOP;

/**************************************************************************
*                       類CLSUtil的靜態(tài)數(shù)據(jù)成員                           *
**************************************************************************/
map<string, TLogLevel> CLSUtil::m_LogLevelMap; 		// 日志服務工具類的單實例對象

/**************************************************************************
*                          類CLSUtil實現(xiàn)                                  *
**************************************************************************/

/**************************************************************************
* 函數(shù)名稱: GetDefaultPath()
* 功能描述: 取得執(zhí)行文件路徑
* 輸入?yún)?shù): 無
* 輸出參數(shù): 無
* 返 回 值: 得到本模塊自己的可執(zhí)行文件路徑
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/03   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
string CLSUtil::GetDefaultPath(void)
{
    char chFileName[MAX_PATH+1];
    GetModuleFileName(NULL, chFileName, MAX_PATH);
    string strFileName = chFileName;
    string strPath = strFileName.substr(0, strFileName.find_last_of('\\')+1);
    return strPath;
}

/**************************************************************************
* 函數(shù)名稱: FullPath()
* 功能描述: 根據(jù)相對路徑獲取全路徑
* 輸入?yún)?shù): const string& strPartialPath : 相對路徑
* 輸出參數(shù): 無
* 返 回 值: 該文件的全路徑
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/03   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
const string CLSUtil::FullPath(const string& strPartialPath)
{
    char full[_MAX_PATH];
    if( _fullpath( full, strPartialPath.c_str(), _MAX_PATH ) != NULL )
    {
        return string(full);
    }
    else
    {
        return "";
    }
}

/**************************************************************************
* 函數(shù)名稱: make_sure_path_exists()
* 功能描述: 創(chuàng)建路徑
* 輸入?yún)?shù): const char *iPath      : 待確定的目標路徑
*            bool FilenameIncluded  : 該路徑中是否包含文件名稱
* 輸出參數(shù): 無
* 返 回 值: true  : 指定的目標路徑可以創(chuàng)建
*            false : 指定的目標路徑不可以創(chuàng)建
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/03   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
int CLSUtil::make_sure_path_exists( const char *iPath, 
                                     bool FilenameIncluded /*=false*/)
{
    char *Path=(char*)iPath, 
        *TmpPath=Path, 
        TmpSmb=0,
        *LastDPtr=NULL;
    while((TmpPath=strpbrk(TmpPath+1,"\\/")))
    {
        TmpSmb=Path[TmpPath-Path];
        Path[TmpPath-Path]=0;
        CreateDirectory(Path,NULL);
        Path[TmpPath-Path]=TmpSmb;
        LastDPtr=TmpPath;
    }

    int Res=1;
    if(!FilenameIncluded)
    {
        CreateDirectory(iPath,NULL);
        Res=!_access(iPath,0);
    }
    else
    {
        if(LastDPtr)
        {
            Path=(char*)iPath;
            TmpSmb=Path[LastDPtr-Path];
            Path[LastDPtr-Path]=0;
            Res=!_access(Path,0);
            Path[LastDPtr-Path]=TmpSmb;
        }
    }
    return Res;
}


//
//File
//

/**************************************************************************
* 函數(shù)名稱: IsAllowedFileName()
* 功能描述: 檢查文件名非法
* 輸入?yún)?shù): const string& strSrc      : 文件名稱
* 輸出參數(shù): 無
* 返 回 值: true  : 文件名合法
*            false : 文件名非法
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsAllowedFileName(const string& strSrc)
{
    static char chUnAllowed[] = 
    {'\\', '/', ':', '*', '?', '\"', '<','>', '|', NULL};

    string::const_iterator iter = strSrc.begin();
    for (; iter != strSrc.end(); iter++)
    {
        int i= 0;
        while (NULL != chUnAllowed[i]) 
        {
            if (*iter == chUnAllowed[i]) 
            {
                return false;
            }
            i++;
        }
    }
    return true;
}

/**************************************************************************
* 函數(shù)名稱: GetFileLineNumber()
* 功能描述: 獲得文件的行數(shù)
* 輸入?yún)?shù): const string& strFile      : 文件名稱
* 輸出參數(shù): 無
* 返 回 值: iNumber  : 文件的行數(shù)
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
int CLSUtil::GetFileLineNumber(const string& strFile)
{
    int iNumber = 0;
    char temp;
    ifstream f;
    f.open(strFile.c_str());
    if (!f.is_open()) 
    {
        return INVALID_LINENUM;
    }

    while(!f.eof())
    {
        temp = f.get();
        if (temp == '\n')
        {
            iNumber++;
        }

    }
    f.close();
    return iNumber;
}

/**************************************************************************
* 函數(shù)名稱: MoveFile()
* 功能描述: 文件更名
* 輸入?yún)?shù): const string& strFileSrc  : 源文件名
*            const string& strFileDest : 目標文件名
* 輸出參數(shù): 無
* 返 回 值: true  : 文件更名成功
*            false : 文件更名失敗
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::MoveFileabc(const string& strFileSrc,
                       const string& strFileDest)
{
    if (!IsFileExists(strFileSrc))
    {
        return true;
    }

    bool bRet = false;
    BOOL bMoved = MoveFileEx(strFileSrc.c_str(), 
                    strFileDest.c_str(),
                    MOVEFILE_REPLACE_EXISTING);
    if (bMoved != 0 ) //重命名成功
    {
        bRet = true;
    }

    return bRet;
}

/**************************************************************************
* 函數(shù)名稱: IsFileExists()
* 功能描述: 檢查文件是否存在
* 輸入?yún)?shù): const string& strFileSrc  : 文件名稱
* 輸出參數(shù): 無
* 返 回 值: true  : 文件存在
*            false : 文件不存在
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsFileExists(const string& strFile)
{
    return ( (_access( strFile.c_str(), 0 )) != -1 );
}

/**************************************************************************
* 函數(shù)名稱: MakeSureFileExists()
* 功能描述: 確認文件存在, 如果文件不存在則創(chuàng)建
* 輸入?yún)?shù): const string& strFileSrc  : 文件名稱
* 輸出參數(shù): 無
* 返 回 值: true  : 成功
*            false : 失敗
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::MakeSureFileExists(const string& strFile)
{
    if(!IsFileExists(strFile))
    {
        fstream f;
        f.open(strFile.c_str(), ios::out | ios::trunc);
        f.close();
    }
    return true;
}


//
//No case compare
//

/**************************************************************************
* 函數(shù)名稱: IsNoCaseStrEqual()
* 功能描述: 不區(qū)分大小比較字符串
* 輸入?yún)?shù): const string& s1 : 源字符串
*            const string& s2 : 目標字符串
* 輸出參數(shù): 無
* 返 回 值: true  : 字符串相同
*            false : 字符串不同
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsNoCaseStrEqual(const string& s1, const string& s2)
{
    bool bRet = false;
    if (s1.size() == s2.size()              //ensure same size
        && equal(s1.begin(), s1.end(),      //first source string
        s2.begin(),             //second source string
        IsNoCaseCharEqual))     //comparison criterion
    {
        bRet = true;
    } 
    return bRet;
}

/**************************************************************************
* 函數(shù)名稱: IsNoCaseCharEqual()
* 功能描述: 不區(qū)分大小比較字符
* 輸入?yún)?shù): char c1 : 源字符
*            char c2 : 目標字符
* 輸出參數(shù): 無
* 返 回 值: true  : 字符相同
*            false : 字符不同
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsNoCaseCharEqual(char c1, char c2)
{
    return (toupper(c1) == toupper(c2));
}

//
//duplicate
//
/**************************************************************************
* 函數(shù)名稱: IsExist()
* 功能描述: 查找字符串向量中是否有指定的字符串
* 輸入?yún)?shù): const vector<string>& vstrSrc : 待查找的字符串向量
*            const string& strChk          : 指定的字符串
*            char c2 : 目標字符
* 輸出參數(shù): 無
* 返 回 值: true  : 存在
*            false : 不存在
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsExist(const vector<string>& vstrSrc, const string& strChk)
{
    bool bRet = false;
    //檢查重復
    vector<string>::const_iterator iter = vstrSrc.begin();
    for (; iter != vstrSrc.end(); iter++)
    {
        if (IsNoCaseStrEqual(strChk, *iter)) 
        {
            bRet = true;
            break;
        }
    }
    return bRet;    
}


//
//Log Level
//

/**************************************************************************
* 函數(shù)名稱: GetLevelString()
* 功能描述: 獲取日志級別的文字表示 
* 輸入?yún)?shù): const TLogLevel& Level : 日志級別項
* 輸出參數(shù): 無
* 返 回 值: const string : 日志級別的名稱
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
const string CLSUtil::GetLevelString(const TLogLevel& Level)
{
    InitLogLevel();
    map<string, TLogLevel>::const_iterator iter = m_LogLevelMap.begin();
    for (; iter != m_LogLevelMap.end(); iter++)
    {
        if (Level == iter->second) 
        {
            return iter->first;
        }
    }
    return "";   
}

/**************************************************************************
* 函數(shù)名稱: IsAllowedLogLevel()
* 功能描述: 檢查日志級別是否非法
* 輸入?yún)?shù): const string& strSrc : 待判斷的日志級別名稱
* 輸出參數(shù): TLogLevel& Level     : 日志級別項
* 返 回 值: true  : 日志級別合法
*            false : 日志級別非法
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
bool CLSUtil::IsAllowedLogLevel(const string& strSrc, NOP::TLogLevel& Level)
{
    InitLogLevel();
    bool bRet = false;
    map<string, TLogLevel>::const_iterator iter = m_LogLevelMap.begin();
    for (; iter != m_LogLevelMap.end(); iter++)
    {
        if (strSrc == iter->first) 
        {
            Level = iter->second;
            bRet = true;
            break;
        }
    }
    return bRet;
}

/**************************************************************************
* 函數(shù)名稱: InitLogLevel()
* 功能描述: 初始化,日志級別對應表
* 輸入?yún)?shù): 無
* 輸出參數(shù): 無
* 返 回 值: 無
* 其它說明: 無
* 修改日期    版本號     修改人	     修改內(nèi)容
* -----------------------------------------------
* 2006/07/04   V1.0	      張 帆	       創(chuàng)建
**************************************************************************/
void CLSUtil::InitLogLevel(void)
{
    //
    //初始化,日志級別對應表
    //
#define LVLINSERT(LVL) \
    m_LogLevelMap.insert(map<string, TLogLevel>::value_type((#LVL), (LOG##LVL)))

    static bool sbInit = false;
    if (!sbInit) 
    {

        LVLINSERT(ALL);
        LVLINSERT(DEBUG);
        LVLINSERT(INFO);
        LVLINSERT(WARN);
        LVLINSERT(ERROR);
        LVLINSERT(FATAL);

        sbInit = true;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区四区在线观看| 爽好久久久欧美精品| 国产精品一二三区| 久久奇米777| 成人av电影观看| 亚洲四区在线观看| 91香蕉国产在线观看软件| 亚洲激情图片小说视频| 欧美中文字幕一区二区三区亚洲| 亚洲影视在线播放| 欧美高清性hdvideosex| 蜜桃视频免费观看一区| 久久综合九色综合97婷婷女人 | 精品黑人一区二区三区久久| 蜜臀99久久精品久久久久久软件| 日韩欧美国产不卡| 懂色av噜噜一区二区三区av| 亚洲欧美日韩国产综合在线| 欧美日韩一区二区三区四区五区| 日韩有码一区二区三区| 久久久一区二区三区| 白白色 亚洲乱淫| 午夜精品aaa| 久久视频一区二区| 色噜噜狠狠色综合欧洲selulu| 亚洲国产综合色| 久久久久国产精品人| 91在线免费看| 日本乱人伦一区| 午夜久久电影网| 久久久久久夜精品精品免费| 91麻豆产精品久久久久久| 亚洲高清三级视频| 国产精品午夜春色av| 欧美日韩一本到| 国产成人免费在线观看不卡| 亚洲综合成人在线视频| 久久午夜色播影院免费高清| 91在线观看美女| 激情综合色播激情啊| 亚洲欧美一区二区久久 | av网站免费线看精品| 香港成人在线视频| 国产精品久久久久精k8| 欧美一级久久久久久久大片| 91在线一区二区三区| 激情国产一区二区| 亚洲国产欧美在线人成| 国产精品久久三| 精品国产一区二区精华| 欧美日韩国产在线播放网站| 国产成人高清在线| 麻豆91在线看| 亚洲高清不卡在线观看| 国产精品美女一区二区| 欧美tk—视频vk| 欧美精品精品一区| 日本精品视频一区二区三区| 成人免费高清在线观看| 激情丁香综合五月| 麻豆精品视频在线观看| 天天综合天天做天天综合| 亚洲精品乱码久久久久久日本蜜臀 | 亚洲久草在线视频| 中文字幕av一区二区三区免费看| 日韩三级在线观看| 91精品国产美女浴室洗澡无遮挡| 色婷婷av一区二区三区软件| 成人午夜电影久久影院| 国产精品一区二区三区网站| 毛片基地黄久久久久久天堂| 亚洲一线二线三线久久久| 自拍av一区二区三区| 国产精品美女久久久久久| 久久精品视频网| 久久综合九色综合97_久久久 | 成人精品视频网站| 国产高清精品久久久久| 久久99精品网久久| 激情伊人五月天久久综合| 免费成人在线网站| 久久99九九99精品| 国产精品456露脸| 粉嫩一区二区三区在线看| 国产91精品免费| 波多野结衣在线一区| 99综合电影在线视频| 91麻豆成人久久精品二区三区| 91在线免费视频观看| 色国产综合视频| 欧美日产在线观看| 欧美电影免费观看高清完整版在 | 久久国产精品99久久人人澡| 麻豆91精品视频| 国产精品综合二区| 国产成人夜色高潮福利影视| 福利视频网站一区二区三区| 国产成人精品亚洲午夜麻豆| 成人免费毛片a| 色美美综合视频| 欧美乱妇20p| 26uuu精品一区二区 | 国产日韩成人精品| 亚洲欧洲精品一区二区三区不卡| 一区二区在线观看视频| 亚洲国产精品一区二区www| 蜜臀a∨国产成人精品| 国产一区三区三区| 色综合久久久久综合99| 欧美日韩高清不卡| 国产日韩欧美不卡| 洋洋av久久久久久久一区| 日韩高清不卡一区| 成人一区二区三区| 欧美性做爰猛烈叫床潮| 日韩精品资源二区在线| 国产精品另类一区| 日韩黄色一级片| 成人免费视频caoporn| 欧美精品一二三| 国产女同性恋一区二区| 亚洲午夜久久久| 国产成人精品免费一区二区| 欧美视频日韩视频在线观看| 精品国产露脸精彩对白| 一区二区三区在线视频免费| 免费看日韩a级影片| 91色婷婷久久久久合中文| 日韩欧美国产wwwww| 亚洲色图视频网站| 精品在线免费观看| 欧美日韩国产欧美日美国产精品| 久久九九全国免费| 日韩影院在线观看| 91在线免费播放| 久久久99精品免费观看| 亚洲一区二区三区在线看| 国产一区二区三区四区五区美女 | 亚洲h精品动漫在线观看| 国产aⅴ精品一区二区三区色成熟| 欧美三级中文字幕在线观看| 国产精品天天摸av网| 麻豆精品视频在线| 欧美日韩在线播放一区| 国产精品国产三级国产普通话99 | 亚洲国产精品麻豆| gogogo免费视频观看亚洲一| 精品处破学生在线二十三| 亚洲高清在线精品| 色婷婷久久久久swag精品 | 视频一区在线视频| 在线精品亚洲一区二区不卡| 国产精品系列在线| 国产一区二区三区在线观看免费视频| 91麻豆精品国产无毒不卡在线观看| 成人免费一区二区三区在线观看| 狠狠v欧美v日韩v亚洲ⅴ| 欧美美女一区二区在线观看| 亚洲少妇中出一区| av爱爱亚洲一区| 国产精品乱码一区二三区小蝌蚪| 久久精品国产99| 欧美成人a∨高清免费观看| 亚洲国产视频一区二区| 色美美综合视频| 一区二区三区久久久| 91麻豆免费视频| **欧美大码日韩| 99久久精品免费精品国产| 欧美韩国日本不卡| 成人福利视频在线| 国产精品久久久久久久午夜片| 成人性生交大片免费看中文| 久久免费的精品国产v∧| 国产福利精品一区| 国产精品青草久久| 99久久99久久精品国产片果冻| 亚洲天堂中文字幕| 91精品福利视频| 无吗不卡中文字幕| 日韩欧美国产wwwww| 国内精品伊人久久久久av一坑| 国产亚洲精品7777| 成年人网站91| 一区二区免费视频| 欧美日韩dvd在线观看| 秋霞成人午夜伦在线观看| 欧美大片一区二区三区| 国产一区二区在线观看视频| 亚洲伊人伊色伊影伊综合网| 欧美日韩一级大片网址| 美女视频免费一区| 国产午夜三级一区二区三| 成+人+亚洲+综合天堂| 亚洲伦在线观看| 777午夜精品免费视频| 精品亚洲国产成人av制服丝袜 | 日本一区中文字幕| 久久婷婷成人综合色| 91色porny|