zoukankan      html  css  js  c++  java
  • Source Insight里头文件注释和函数头的注释

    1.将下述代码拷贝入一个文件,扩展名为em

    2.打开BASE工程,添加本文件,并重新同步

    3.添加hh_InsertFuncHeader的快捷键,即为函数头注释,光标需要放在函数名那一行,否则无效

    4.添加hh_InsertFileHeader的快捷键,即为文件头注释,且头文件(目前只是.h)和源文件(非.h文件)不同,头文件里有

    macro hh_InsertFuncHeader()
    {
    hbuf = GetCurrentBuf()
    szFunc = GetCurSymbol()
    if (strlen(szFunc) == 0)
    {
    return
    }

    ln = GetSymbolLine(szFunc)
    if (ln == "-1")
    {
    return
    }

    symbol = GetSymbolLocationFromLn(hbuf, ln)
    if ((symbol == Nil) || (symbol.Type != "Function"))
    {
    return
    }

    szMyName = hh_get_author_name()

    szTime = GetSysTime(1) 
    Day = szTime.Day 
    if (Day < 10)
    {
    Day = "0" # szTime.Day
    }
    Month = szTime.Month 
    if (Month < 10)
    {
    Month = "0" # szTime.Month
    }
    Year = szTime.Year

    funcLen = strlen(szFunc)

    hsyml = SymbolChildren(symbol)
    cchild = SymListCount(hsyml)

    InsBufLine(hbuf, ln++, "/*****************************************************************************/")
    InsBufLine(hbuf, ln++, "/**")

    InsBufLine(hbuf, ln++, "* \author @szMyName@")
    InsBufLine(hbuf, ln++, "* \date @Year@/@Month@/@Day@")
    InsBufLine(hbuf, ln++, "* \brief ")

    ichild = 0
    while (ichild < cchild)
    {
    childsym = SymListItem(hsyml, ichild)
    if (childsym.type == "Parameter")
    {
    symNameLen = strlen(childsym.symbol)
    name = strmid(childsym.symbol, funcLen+1, symNameLen)
    InsBufLine(hbuf, ln++, "* \param " # name)
    }
    ichild = ichild + 1
    }
    SymListFree(hsyml)

    InsBufLine(hbuf, ln++, "* \return ")
    InsBufLine(hbuf, ln++, "* \remarks ")

    InsBufLine(hbuf, ln++, "******************************************************************************/")

    // put the insertion point inside the header comment
    SetBufIns(hbuf, ln, 0)
    }

    macro hh_InsertFileHeader()
    {
    hbuf = GetCurrentBuf()
    fullfileName = GetBufName(hbuf)
    fileName = hh_GetFileNameFromFull(fullfileName)
    szMyName = hh_get_author_name()
    ln = 0

    szTime = GetSysTime(1) 
    Year = szTime.Year
    Month = szTime.Month
    if (Month < 10)
    {
    Month = "0" # szTime.Month
    }
    Day = szTime.Day
    if (Day < 10)
    {
    Day = "0" # szTime.Day
    }

    fileType = strmid(fileName, strlen(fileName)-2, strlen(fileName))

    InsBufLine(hbuf, ln++, "/*****************************************************************************/")
    InsBufLine(hbuf, ln++, "/**")
    InsBufLine(hbuf, ln++, "* \file " # fileName)
    InsBufLine(hbuf, ln++, "* \author " # szMyName)
    InsBufLine(hbuf, ln++, "* \date @Year@/@Month@/@Day@")
    InsBufLine(hbuf, ln++, "* \version V1")
    InsBufLine(hbuf, ln++, "* \brief 文件描述")
    InsBufLine(hbuf, ln++, "* \note Copyright (c) 2000-2020 XXXXX公司")
    InsBufLine(hbuf, ln++, "* \remarks 修改日志")
    InsBufLine(hbuf, ln++, "******************************************************************************/")

    if (fileType == ".h")
    {
    ln = hh_InsertHeaderFileHeader(hbuf, fileName, ln)
    }
    else
    {
    ln = hh_InsertSourceFileHeader(hbuf, fileName, ln)
    }

    SetBufIns(hbuf, ln, 0)
    }

    macro hh_get_author_name()
    {
    var szMyName
    szMyName = getenv(MYNAME)
    if (szMyName == Nil)
    {
    szMyName = ask("What's your name?");
    putenv(MYNAME, szMyName);
    }

    return szMyName
    }

    macro hh_InsertHeaderFileHeader(hbuf, fileName, ln)
    {
    hbuf = GetCurrentBuf()
    szMyName = hh_get_author_name()

    tmpFileName = toupper(fileName)
    i=0
    var upperFileName
    while (i++ < strlen(tmpFileName))
    {
    ch = strmid(tmpFileName, i-1, i)

    if (ch == ".")
    {
    upperFileName = cat(upperFileName, "_")
    }
    else
    {
    upperFileName = cat(upperFileName, ch)
    }
    }
    upperFileName = cat("_", upperFileName)
    upperFileName = cat(upperFileName, "_")

    InsBufLine(hbuf, ln++, "#ifndef " # upperFileName)
    InsBufLine(hbuf, ln++, "#define " # upperFileName)
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 头文件引用 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "#ifdef __cplusplus")
    InsBufLine(hbuf, ln++, "extern \"C\"")
    InsBufLine(hbuf, ln++, "{")
    InsBufLine(hbuf, ln++, "#endif")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 常量定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 宏定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 全局数据类型定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 全局变量声明 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 全局函数声明 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "#ifdef __cplusplus")
    InsBufLine(hbuf, ln++, "}")
    InsBufLine(hbuf, ln++, "#endif")
    InsBufLine(hbuf, ln++, "#endif")
    InsBufLine(hbuf, ln++, "")

    return ln
    }

    macro hh_InsertSourceFileHeader(hbuf, fileName, ln)
    {
    hbuf = GetCurrentBuf()
    szMyName = hh_get_author_name()

    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 头文件引用 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部常量定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部宏定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部数据类型定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部函数声明 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部变量定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 全局变量定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 全局函数定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")
    InsBufLine(hbuf, ln++, "/*****************************************************************************")
    InsBufLine(hbuf, ln++, "* 局部函数定义 *")
    InsBufLine(hbuf, ln++, "*****************************************************************************/")
    InsBufLine(hbuf, ln++, "")

    return ln
    }

    macro hh_GetFileNameFromFull(fullfileName)
    {
    len = strlen(fullfileName)
    i = len

    while (i-- > 0)
    {
    ch = strmid(fullfileName, i, i+1)

    if (ch == "\\")
    {
    return strmid(fullfileName, i+1, len)
    }
    }

    return ""
    }

  • 相关阅读:
    特性和属性
    装箱和拆箱的问题(NET1.1+)
    poj 1013 Counterfeit Dollar(模拟)
    poj 3686 The Windy's( KM算法 )
    二分匹配(匈牙利算法)
    poj 3273 Monthly Expense(二分)
    poj 2115 C Looooops(扩展欧几里德)
    poj 2400 Supervisor, Supervisee
    poj 2195 Going Home (KM算法)
    poj 2513 Colored Sticks(trie树 + 并查集 + 欧拉图)
  • 原文地址:https://www.cnblogs.com/muban/p/5032076.html
Copyright © 2011-2022 走看看