sourceinsight 头文件和函数注释的宏实现
插入文件注释代码实现
macro InsertFileComment() { hbuf = GetCurrentBuf() ln = 0 szName = "pengchao" szContent = ""; SysTime = GetSysTime(1) szYear=SysTime.Year InsBufLine(hbuf, ln + 0, "/********************************************************************************") InsBufLine(hbuf, ln + 1, "") InsBufLine(hbuf, ln + 2, " **** Copyright (C), @szYear@, xx xx xx xx info&tech Co., Ltd. ****") InsBufLine(hbuf, ln + 3, "") InsBufLine(hbuf, ln + 4, " ********************************************************************************") sz = GetFileName(GetBufName (hbuf)) InsBufLine(hbuf, ln + 5, " * File Name : @sz@") InsBufLine(hbuf, ln + 6, " * Author : @szName@") SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } InsBufLine(hbuf, ln + 7, " * Date : @sz@-@szMonth@-@szDay@") szTmp = " * Description : " nlnDesc = ln iLen = strlen (szContent) InsBufLine(hbuf, ln + 8, " * Description : @szContent@") InsBufLine(hbuf, ln + 9, " * Version : 1.0") InsBufLine(hbuf, ln + 10," * Function List :") InsBufLine(hbuf, ln + 11," * ") //插入函数列表 InsBufLine(hbuf, ln + 12, " * Record :") InsBufLine(hbuf, ln + 13, " * 1.Date : @sz@-@szMonth@-@szDay@") InsBufLine(hbuf, ln + 14, " * Author : @szName@") InsBufLine(hbuf, ln + 15, " * Modification: Created file") InsBufLine(hbuf, ln + 16, "") InsBufLine(hbuf, ln + 17, "*************************************************************************************************************/") InsBufLine(hbuf, ln + 18, "") if(iLen != 0) { return } //如果没有功能描述内容则提示输入 //szContent = Ask("Description") SetBufIns(hbuf,nlnDesc + 14,0) DelBufLine(hbuf,nlnDesc +10) //注释输出处理,自动换行 CommentContent(hbuf,nlnDesc + 10," Description : ",szContent,0) }
插入函数注释代码实现
macro InsertFuncComment() //macro FuncHeadCommentEN(hbuf, ln, szFunc, szMyName,newFunc) { hbuf = GetCurrentBuf() hwnd = GetCurrentWnd() ln = GetWndSelLnFirst(hwnd) szMyName = "pengchao" szFunc = GetCurSymbol() newFunc = 0 iIns = 0 if(newFunc != 1) { symbol = GetSymbolLocationFromLn(hbuf, ln) if(strlen(symbol) > 0) { hTmpBuf = NewBuf("Tempbuf") //将文件参数头整理成一行并去掉了注释 szLine = GetFunctionDef(hbuf,symbol) iBegin = symbol.ichName //取出返回值定义 szTemp = strmid(szLine,0,iBegin) szTemp = TrimString(szTemp) szRet = GetFirstWord(szTemp) if(symbol.Type == "Method") { szTemp = strmid(szTemp,strlen(szRet),strlen(szTemp)) szTemp = TrimString(szTemp) if(szTemp == "::") { szRet = "" } } if(toupper (szRet) == "MACRO") { //对于宏返回值特殊处理 szRet = "" } //从函数头分离出函数参数 nMaxParamSize = GetWordFromString(hTmpBuf,szLine,iBegin,strlen(szLine),"(",",",")") lnMax = GetBufLineCount(hTmpBuf) ln = symbol.lnFirst SetBufIns (hbuf, ln, 0) } } else { lnMax = 0 szRet = "" szLine = "" } InsBufLine(hbuf, ln, "/*****************************************************************************") InsBufLine(hbuf, ln+1, " * Function : @szFunc@") InsBufLine(hbuf, ln+2, " * Description : ") oldln = ln szIns = " * Input : " if(newFunc != 1) { //对于已经存在的函数输出输入参数表 i = 0 while ( i < lnMax) { szTmp = GetBufLine(hTmpBuf, i) nLen = strlen(szTmp); //对齐参数后面的空格,实际是对齐后面的参数的说明 szBlank = CreateBlankString(nMaxParamSize - nLen + 2) szTmp = cat(szTmp,szBlank) ln = ln + 1 szTmp = cat(szIns,szTmp) InsBufLine(hbuf, ln+2, "@szTmp@") iIns = 1 szIns = " " i = i + 1 } closebuf(hTmpBuf) } if(iIns == 0) { ln = ln + 1 InsBufLine(hbuf, ln+2, " * Input : None") } InsBufLine(hbuf, ln+3, " * Output : None") InsBufLine(hbuf, ln+4, " * Return : @szRet@") /*InsBufLine(hbuf, ln+5, " Calls : ") InsBufLine(hbuf, ln+6, " Called By : ")*/ InsbufLIne(hbuf, ln+5, " * Others : "); SysTime = GetSysTime(1); sz1=SysTime.Year sz2=SysTime.month sz3=SysTime.day if (sz2 < 10) { szMonth = "0@sz2@" } else { szMonth = sz2 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } InsBufLine(hbuf, ln + 6, " * Record") InsBufLine(hbuf, ln + 7, " * 1.Date : @sz1@@szMonth@@szDay@") InsBufLine(hbuf, ln + 8, " * Author : @szMyName@") InsBufLine(hbuf, ln + 9, " * Modification: Created function") InsBufLine(hbuf, ln + 10, "") InsBufLine(hbuf, ln + 11, "*****************************************************************************/") if ((newFunc == 1) && (strlen(szFunc)>0)) { InsBufLine(hbuf, ln+12, "VOS_UINT32 @szFunc@( # )") InsBufLine(hbuf, ln+13, "{"); InsBufLine(hbuf, ln+14, " #"); InsBufLine(hbuf, ln+15, "}"); SearchForward() } hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) sel.ichFirst = 0 sel.ichLim = sel.ichFirst sel.lnFirst = ln + 12 sel.lnLast = ln + 12 //szContent = Ask("Description") DelBufLine(hbuf,oldln + 2) setWndSel(hwnd,sel) newln = CommentContent(hbuf,oldln + 2," * Description : ",szContent,0) - 2 ln = ln + newln - oldln if ((newFunc == 1) && (strlen(szFunc)>0)) { //提示输入函数返回值名 szRet = Ask("Please input return value type") if(strlen(szRet) > 0) { PutBufLine(hbuf, ln+4, " * Return : @szRet@") PutBufLine(hbuf, ln+12, "@szRet@ @szFunc@( # )") SetbufIns(hbuf,ln+12,strlen(szRet)+strlen(szFunc) + 3 } szFuncDef = "" isFirstParam = 1 sel.ichFirst = strlen(szFunc)+strlen(szRet) + 3 sel.ichLim = sel.ichFirst + 1 //循环输入新函数的参数 while (1) { szParam = ask("Please input parameter") szParam = TrimString(szParam) szTmp = cat(szIns,szParam) szParam = cat(szFuncDef,szParam) sel.lnFirst = ln + 12 sel.lnLast = ln + 12 setWndSel(hwnd,sel) sel.ichFirst = sel.ichFirst + strlen(szParam) sel.ichLim = sel.ichFirst oldsel = sel if(isFirstParam == 1) { PutBufLine(hbuf, ln+2, "@szTmp@") isFirstParam = 0 } else { ln = ln + 1 InsBufLine(hbuf, ln+2, "@szTmp@") oldsel.lnFirst = ln + 12 oldsel.lnLast = ln + 12 } SetBufSelText(hbuf,szParam) szIns = " " szFuncDef = ", " oldsel.lnFirst = ln + 14 oldsel.lnLast = ln + 14 oldsel.ichFirst = 4 oldsel.ichLim = 5 setWndSel(hwnd,oldsel) } } return ln + 15 }
使用步骤:
1、创建一个quicker.em文件,添加到base工程
/***************************************************************************** �� �� �� : AutoExpand �������� : ��չ������ں��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �� *****************************************************************************/ macro AutoExpand() { //������Ϣ // get window, sel, and buffer handles hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) if(sel.lnFirst != sel.lnLast) { /*�������*/ BlockCommandProc() } if (sel.ichFirst == 0) stop hbuf = GetWndBuf(hwnd) language = getreg(LANGUAGE) if(language != 1) { language = 0 } nVer = 0 nVer = GetVersion() /*ȡ���û���*/ szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } // get line the selection (insertion point) is on szLine = GetBufLine(hbuf, sel.lnFirst); // parse word just to the left of the insertion point wordinfo = GetWordLeftOfIch(sel.ichFirst, szLine) ln = sel.lnFirst; chTab = CharFromAscii(9) // prepare a new indented blank line to be inserted. // keep white space on left and add a tab to indent. // this preserves the indentation level. chSpace = CharFromAscii(32); ich = 0 while (szLine[ich] == chSpace || szLine[ich] == chTab) { ich = ich + 1 } szLine1 = strmid(szLine,0,ich) szLine = strmid(szLine, 0, ich) # " " sel.lnFirst = sel.lnLast sel.ichFirst = wordinfo.ich sel.ichLim = wordinfo.ich /*�Զ���ɼ������ƥ����ʾ*/ wordinfo.szWord = RestoreCommand(hbuf,wordinfo.szWord) sel = GetWndSel(hwnd) if (wordinfo.szWord == "pn") /*���ⵥ�ŵĴ���*/ { DelBufLine(hbuf, ln) AddPromblemNo() return } /*��������ִ��*/ else if (wordinfo.szWord == "config" || wordinfo.szWord == "co") { DelBufLine(hbuf, ln) ConfigureSystem() return } /*����ʷ��¼����*/ else if (wordinfo.szWord == "hi") { InsertHistory(hbuf,ln+1,language) DelBufLine(hbuf, ln) return } else if (wordinfo.szWord == "abg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseAdd() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } else if (wordinfo.szWord == "dbg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseDel() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } else if (wordinfo.szWord == "mbg") { sel.ichFirst = sel.ichFirst - 3 SetWndSel(hwnd,sel) InsertReviseMod() PutBufLine(hbuf, ln+1 ,szLine1) SetBufIns(hwnd,ln+1,sel.ichFirst) return } if(language == 1) { ExpandProcEN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) } else { ExpandProcCN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) } } /***************************************************************************** �� �� �� : ExpandProcEN �������� : Ӣ��˵������չ����� ������� : szMyName �û��� wordinfo szLine szLine1 nVer ln sel ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� 2.�� �� : 2011��2��16�� �� �� : ��� ������ : �����ⵥ��Ϊmantis�ţ���ʱ���ʽΪxxxxxxxx���ꡢ�¡��գ��� �м�û�зָ�������ӵ���ע�ͣ��Զ���չ��Ϊ"an" 3.�� �� : 2011��2��22�� �� �� : ��� ������ : �ĵ���ע��ͷΪadd by��delete by��modify by���Զ���չ��ֱ�Ϊ"as"��"ds"��"ms" �ĵ���ע��Ϊ��������е����ɾ����������� ɾ��ԭ�Զ���չ��Ϊ"an"�ĵ���ע�� *****************************************************************************/ macro ExpandProcEN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) { szCmd = wordinfo.szWord hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) /*Ӣ��ע��*/ if (szCmd == "/*") { if(wordinfo.ichLim > 70) { Msg("The right margine is small, Please use a new line") stop } szCurLine = GetBufLine(hbuf, sel.lnFirst); szLeft = strmid(szCurLine,0,wordinfo.ichLim) lineLen = strlen(szCurLine) kk = 0 while(wordinfo.ichLim + kk < lineLen) { if((szCurLine[wordinfo.ichLim + kk] != " ")||(szCurLine[wordinfo.ichLim + kk] != "\t") { msg("you must insert /* at the end of a line"); return } kk = kk + 1 } szContent = Ask("Please input comment") DelBufLine(hbuf, ln) szLeft = cat( szLeft, " ") CommentContent(hbuf,ln,szLeft,szContent,1) return } else if(szCmd == "{") { InsBufLine(hbuf, ln + 1, "@szLine@") InsBufLine(hbuf, ln + 2, "@szLine1@" # "}"); SetBufIns (hbuf, ln + 1, strlen(szLine)) return } else if (szCmd == "while" ) { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); } else if( szCmd == "else" ) { InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "#ifd" || szCmd == "#ifdef") //#ifdef { DelBufLine(hbuf, ln) InsIfdef() return } else if (szCmd == "#ifn" || szCmd == "#ifndef") //#ifndef { DelBufLine(hbuf, ln) InsIfndef() return } else if (szCmd == "#if") { DelBufLine(hbuf, ln) InsertPredefIf() return } else if (szCmd == "cpp") { DelBufLine(hbuf, ln) InsertCPP(hbuf,ln) return } else if (szCmd == "if") { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); /* InsBufLine(hbuf, ln + 4, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}");*/ } else if (szCmd == "ef") { PutBufLine(hbuf, ln, szLine1 # "else if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); } else if (szCmd == "ife") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 4, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}"); } else if (szCmd == "ifs") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 4, "@szLine1@" # "else if ( # )"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 8, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 9, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 10, "@szLine@" # ";"); InsBufLine(hbuf, ln + 11, "@szLine1@" # "}"); } else if (szCmd == "for") { SetBufSelText(hbuf, " (#; #; #)") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#") InsBufLine(hbuf, ln + 3, "@szLine1@" # "}") SetWndSel(hwnd, sel) SearchForward() szVar = ask("Please input loop variable") newsel = sel newsel.ichLim = GetBufLineLength (hbuf, ln) SetWndSel(hwnd, newsel) SetBufSelText(hbuf, " (@szVar@ = #; @szVar@ #; @szVar@++)") } else if (szCmd == "fo") { SetBufSelText(hbuf, "r (ulI = 0; ulI < #; ulI++)") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#") InsBufLine(hbuf, ln + 3, "@szLine1@" # "}") symname =GetCurSymbol () symbol = GetSymbolLocation(symname) if(strlen(symbol) > 0) { nIdx = symbol.lnName + 1; while( 1 ) { szCurLine = GetBufLine(hbuf, nIdx); nRet = strstr(szCurLine,"{") if( nRet != 0xffffffff ) { break; } nIdx = nIdx + 1 if(nIdx > symbol.lnLim) { break } } InsBufLine(hbuf, nIdx + 1, " VOS_UINT32 ulI = 0;"); } } else if (szCmd == "switch" ) { nSwitch = ask("Please input the number of case") SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsertMultiCaseProc(hbuf,szLine1,nSwitch) } else if (szCmd == "do") { InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "} while ( # );") } else if (szCmd == "case" ) { SetBufSelText(hbuf, " # :") InsBufLine(hbuf, ln + 1, "@szLine@" # "#") InsBufLine(hbuf, ln + 2, "@szLine@" # "break;") } else if (szCmd == "struct" || szCmd == "st") { DelBufLine(hbuf, ln) szStructName = toupper(Ask("Please input struct name")) InsBufLine(hbuf, ln, "@szLine1@typedef struct @szStructName@"); InsBufLine(hbuf, ln + 1, "@szLine1@{"); InsBufLine(hbuf, ln + 2, "@szLine@ "); szStructName = cat(szStructName,"_STRU") InsBufLine(hbuf, ln + 3, "@szLine1@}@szStructName@;"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "enum" || szCmd == "en") { DelBufLine(hbuf, ln) szStructName = toupper(Ask("Please input enum name")) InsBufLine(hbuf, ln, "@szLine1@typedef enum @szStructName@"); InsBufLine(hbuf, ln + 1, "@szLine1@{"); InsBufLine(hbuf, ln + 2, "@szLine@ "); szStructName = cat(szStructName,"_ENUM") InsBufLine(hbuf, ln + 3, "@szLine1@}@szStructName@;"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "file" || szCmd == "fi") { DelBufLine(hbuf, ln) InsertFileHeaderEN( hbuf,0, szMyName,".C file function description" ) return } else if (szCmd == "func" || szCmd == "fu") { DelBufLine(hbuf,ln) lnMax = GetBufLineCount(hbuf) if(ln != lnMax) { szNextLine = GetBufLine(hbuf,ln) if( (strstr(szNextLine,"(") != 0xffffffff) || (nVer != 2)) { symbol = GetCurSymbol() if(strlen(symbol) != 0) { FuncHeadCommentEN(hbuf, ln, symbol, szMyName,0) return } } } szFuncName = Ask("Please input function name") FuncHeadCommentEN(hbuf, ln, szFuncName, szMyName, 1) } else if (szCmd == "tab") { DelBufLine(hbuf, ln) ReplaceBufTab() return } else if (szCmd == "ap") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = AddPromblemNo() InsBufLine(hbuf, ln, "@szLine1@/* Promblem Number: @szQuestion@ Author:@szMyName@, Date:@sz@-@szMonth@-@szDay@ "); szContent = Ask("Description") szLeft = cat(szLine1," Description : "); if(strlen(szLeft) > 70) { Msg("The right margine is small, Please use a new line") stop } ln = CommentContent(hbuf,ln + 1,szLeft,szContent,1) return } else if (szCmd == "hd") { DelBufLine(hbuf, ln) CreateFunctionDef(hbuf,szMyName,1) return } else if (szCmd == "hdn") { DelBufLine(hbuf, ln) /*���ɲ�Ҫ�ļ�������ͷ�ļ�*/ CreateNewHeaderFile() return } else if (szCmd == "ab") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@*/"); } else { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@*/"); } return } else if (szCmd == "ae") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* add end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "db") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "de") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln + 0) InsBufLine(hbuf, ln, "@szLine1@/* delete end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "mb") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "me") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* modify end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "as") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* add by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* add by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "cs")/*���һ������cs ��������ע��comment by xxx . �������������2014-5-4*/ { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* comment by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* comment by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "ds") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* delete by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* delete by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "ms") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* modify by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* modify by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else { SearchForward() // ExpandBraceLarge() stop } SetWndSel(hwnd, sel) SearchForward() } /***************************************************************************** �� �� �� : ExpandProcCN �������� : ����˵������չ���� ������� : szMyName wordinfo szLine szLine1 nVer ln sel ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� 2.�� �� : 2011��2��16�� �� �� : ��� ������ : �����ⵥ��Ϊmantis�ţ���ʱ���ʽΪxxxxxxxx���ꡢ�¡��գ��� �м�û�зָ�������ӵ���ע�ͣ��Զ���չ��Ϊ"an" 3.�� �� : 2011��2��22�� �� �� : ��� ������ : �ĵ���ע��ͷΪadd by��delete by��modify by���Զ���չ��ֱ�Ϊ"as"��"ds"��"ms" �ĵ���ע��Ϊ��������е����ɾ����������� ɾ��ԭ�Զ���չ��Ϊ"an"�ĵ���ע�� 4.�� �� : 2011��3��18�� �� �� : ��� ������ : ���ļ���ע�Ͳ���������(�������������ļ�ͷע�ͺ������Զ���ʾ�û�����) *****************************************************************************/ macro ExpandProcCN(szMyName,wordinfo,szLine,szLine1,nVer,ln,sel) { szCmd = wordinfo.szWord hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) //����ע�� if (szCmd == "/*") { if(wordinfo.ichLim > 70) { Msg("�ұ߿ռ�̫С,�����µ���") stop } szCurLine = GetBufLine(hbuf, sel.lnFirst); szLeft = strmid(szCurLine,0,wordinfo.ichLim) lineLen = strlen(szCurLine) kk = 0 /*ע��ֻ������β������ע�͵����ô���*/ while(wordinfo.ichLim + kk < lineLen) { if(szCurLine[wordinfo.ichLim + kk] != " ") { msg("ֻ������β����"); return } kk = kk + 1 } szContent = Ask("������ע�͵�����") DelBufLine(hbuf, ln) szLeft = cat( szLeft, " ") //��/*���һ���ո��������ĸ�ʽ��/* Ҫע�͵����� */ CommentContent(hbuf,ln,szLeft,szContent,1) return } else if(szCmd == "{") { InsBufLine(hbuf, ln + 1, "@szLine@") InsBufLine(hbuf, ln + 2, "@szLine1@" # "}"); SetBufIns (hbuf, ln + 1, strlen(szLine)) return } else if (szCmd == "while" || szCmd == "wh") { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); } else if( szCmd == "else" || szCmd == "el") { InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "#ifd" || szCmd == "#ifdef") //#ifdef { DelBufLine(hbuf, ln) InsIfdef() return } else if (szCmd == "#ifn" || szCmd == "#ifndef") //#ifndef { DelBufLine(hbuf, ln) InsIfndef() return } else if (szCmd == "#if") { DelBufLine(hbuf, ln) InsertPredefIf() return } else if (szCmd == "cpp") { DelBufLine(hbuf, ln) InsertCPP(hbuf,ln) return } else if (szCmd == "if") { SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); /* InsBufLine(hbuf, ln + 4, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}");*/ } else if (szCmd == "ef") { PutBufLine(hbuf, ln, szLine1 # "else if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); } else if (szCmd == "ife") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 4, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}"); } else if (szCmd == "ifs") { PutBufLine(hbuf, ln, szLine1 # "if ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 4, "@szLine1@" # "else if ( # )"); InsBufLine(hbuf, ln + 5, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 6, "@szLine@" # ";"); InsBufLine(hbuf, ln + 7, "@szLine1@" # "}"); InsBufLine(hbuf, ln + 8, "@szLine1@" # "else"); InsBufLine(hbuf, ln + 9, "@szLine1@" # "{"); InsBufLine(hbuf, ln + 10, "@szLine@" # ";"); InsBufLine(hbuf, ln + 11, "@szLine1@" # "}"); } else if (szCmd == "for") { SetBufSelText(hbuf, " (#; #; #)") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#") InsBufLine(hbuf, ln + 3, "@szLine1@" # "}") SetWndSel(hwnd, sel) SearchForward() szVar = ask("������ѭ������") newsel = sel newsel.ichLim = GetBufLineLength (hbuf, ln) SetWndSel(hwnd, newsel) SetBufSelText(hbuf, " (@szVar@ = #; @szVar@ #; @szVar@++)") } else if (szCmd == "fo") { SetBufSelText(hbuf, "r (ulI = 0; ulI < #; ulI++)") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#") InsBufLine(hbuf, ln + 3, "@szLine1@" # "}") symname =GetCurSymbol () symbol = GetSymbolLocation(symname) if(strlen(symbol) > 0) { nIdx = symbol.lnName + 1; while( 1 ) { szCurLine = GetBufLine(hbuf, nIdx); nRet = strstr(szCurLine,"{") if( nRet != 0xffffffff ) { break; } nIdx = nIdx + 1 if(nIdx > symbol.lnLim) { break } } InsBufLine(hbuf, nIdx + 1, " VOS_UINT32 ulI = 0;"); } } else if (szCmd == "switch" || szCmd == "sw") { nSwitch = ask("������case�ĸ���") SetBufSelText(hbuf, " ( # )") InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsertMultiCaseProc(hbuf,szLine1,nSwitch) } else if (szCmd == "do") { InsBufLine(hbuf, ln + 1, "@szLine1@" # "{") InsBufLine(hbuf, ln + 2, "@szLine@" # "#"); InsBufLine(hbuf, ln + 3, "@szLine1@" # "} while ( # );") } else if (szCmd == "case" || szCmd == "ca" ) { SetBufSelText(hbuf, " # :") InsBufLine(hbuf, ln + 1, "@szLine@" # "#") InsBufLine(hbuf, ln + 2, "@szLine@" # "break;") } else if (szCmd == "struct" || szCmd == "st" ) { DelBufLine(hbuf, ln) szStructName = toupper(Ask("������ṹ��:")) InsBufLine(hbuf, ln, "@szLine1@typedef struct @szStructName@"); InsBufLine(hbuf, ln + 1, "@szLine1@{"); InsBufLine(hbuf, ln + 2, "@szLine@ "); szStructName = cat(szStructName,"_STRU") InsBufLine(hbuf, ln + 3, "@szLine1@}@szStructName@;"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "enum" || szCmd == "en") { DelBufLine(hbuf, ln) //��ʾ����ö������ת��Ϊ��д szStructName = toupper(Ask("������ö����:")) InsBufLine(hbuf, ln, "@szLine1@typedef enum @szStructName@"); InsBufLine(hbuf, ln + 1, "@szLine1@{"); InsBufLine(hbuf, ln + 2, "@szLine@ "); szStructName = cat(szStructName,"_ENUM") InsBufLine(hbuf, ln + 3, "@szLine1@}@szStructName@;"); SetBufIns (hbuf, ln + 2, strlen(szLine)) return } else if (szCmd == "file" || szCmd == "fi" ) { DelBufLine(hbuf, ln) /*�����ļ�ͷ˵��*/ InsertFileHeaderCN( hbuf,0, szMyName,"" ) return } else if (szCmd == "hd") { DelBufLine(hbuf, ln) /*����C���Ե�ͷ�ļ�*/ CreateFunctionDef(hbuf,szMyName,0) return } else if (szCmd == "hdn") { DelBufLine(hbuf, ln) /*���ɲ�Ҫ�ļ�������ͷ�ļ�*/ CreateNewHeaderFile() return } else if (szCmd == "func" || szCmd == "fu") { DelBufLine(hbuf,ln) lnMax = GetBufLineCount(hbuf) //���һ�п϶����º��� if(ln != lnMax) { szNextLine = GetBufLine(hbuf,ln) /*����2.1���si����ǷǷ�symbol�ͻ��ж�ִ�У��ʸ�Ϊ�Ժ�һ�� �Ƿ��С��������ж��Ƿ����º���*/ if( (strstr(szNextLine,"(") != 0xffffffff) || (nVer != 2)) { /*���Ѿ����ڵĺ���*/ symbol = GetCurSymbol() if(strlen(symbol) != 0) { FuncHeadCommentCN(hbuf, ln, symbol, szMyName,0) return } } } szFuncName = Ask("�����뺯������:") /*���º���*/ FuncHeadCommentCN(hbuf, ln, szFuncName, szMyName, 1) } else if (szCmd == "tab") /*��tab��չΪ�ո�*/ { DelBufLine(hbuf, ln) ReplaceBufTab() } else if (szCmd == "ap") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = AddPromblemNo() InsBufLine(hbuf, ln, "@szLine1@/* �� �� ��: @szQuestion@ ����:@szMyName@, ʱ��:@sz@-@szMonth@-@szDay@ "); szContent = Ask("��ԭ��") szLeft = cat(szLine1," ��ԭ��: "); if(strlen(szLeft) > 70) { Msg("�ұ߿ռ�̫С,�����µ���") stop } ln = CommentContent(hbuf,ln + 1,szLeft,szContent,1) return } else if (szCmd == "ab") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else if (szCmd == "ae") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* add end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "db") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else if (szCmd == "de") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln + 0) InsBufLine(hbuf, ln, "@szLine1@/* delete end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "mb") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else if (szCmd == "me") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* modify end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "as") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* add by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@, ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* add by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else if (szCmd == "ds") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* delete by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@, ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* delete by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else if (szCmd == "ms") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szLine1 = strmid (GetBufLine(hbuf, ln), 0, GetBufLineLength (hbuf, ln)-2) DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* modify by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@, ԭ��: */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* modify by @szMyName@, @sz@-@szMonth@-@szDay@, ԭ��: */"); } return } else { SearchForward() stop } SetWndSel(hwnd, sel) SearchForward() } /***************************************************************************** �� �� �� : BlockCommandProc �������� : ���������� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro BlockCommandProc() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) if(sel.lnFirst > 0) { ln = sel.lnFirst - 1 } else { stop } szLine = GetBufLine(hbuf,ln) szLine = TrimString(szLine) if(szLine == "while" || szLine == "wh") { InsertWhile() /*����while*/ } else if(szLine == "do") { InsertDo() //����do while��� } else if(szLine == "for") { InsertFor() //����for��� } else if(szLine == "if") { InsertIf() //����if��� } else if(szLine == "el" || szLine == "else") { InsertElse() //����else��� DelBufLine(hbuf,ln) stop } else if((szLine == "#ifd") || (szLine == "#ifdef")) { InsIfdef() //����#ifdef DelBufLine(hbuf,ln) stop } else if((szLine == "#ifn") || (szLine == "#ifndef")) { InsIfndef() //����#ifdef DelBufLine(hbuf,ln) stop } else if (szLine == "abg") { InsertReviseAdd() DelBufLine(hbuf, ln) stop } else if (szLine == "dbg") { InsertReviseDel() DelBufLine(hbuf, ln) stop } else if (szLine == "mbg") { InsertReviseMod() DelBufLine(hbuf, ln) stop } else if(szLine == "#if") { InsertPredefIf() DelBufLine(hbuf,ln) stop } DelBufLine(hbuf,ln) SearchForward() stop } /***************************************************************************** �� �� �� : RestoreCommand �������� : ��������ָ����� ������� : hbuf szCmd ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro RestoreCommand(hbuf,szCmd) { if(szCmd == "ca") { SetBufSelText(hbuf, "se") szCmd = "case" } else if(szCmd == "sw") { SetBufSelText(hbuf, "itch") szCmd = "switch" } else if(szCmd == "el") { SetBufSelText(hbuf, "se") szCmd = "else" } else if(szCmd == "wh") { SetBufSelText(hbuf, "ile") szCmd = "while" } return szCmd } /***************************************************************************** �� �� �� : SearchForward �������� : ��ǰ����# ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro SearchForward() { LoadSearchPattern("#", 1, 0, 1); Search_Forward } /***************************************************************************** �� �� �� : SearchBackward �������� : �������# ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro SearchBackward() { LoadSearchPattern("#", 1, 0, 1); Search_Backward } /***************************************************************************** �� �� �� : InsertFuncName �������� : �ڵ�ǰλ�ò��뵫ǰ������ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertFuncName() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) symbolname = GetCurSymbol() SetBufSelText (hbuf, symbolname) } /***************************************************************************** �� �� �� : strstr �������� : �ַ���ƥ���ѯ���� ������� : str1 Դ�� str2 ��ƥ���Ӵ� ������� : �� �� �� ֵ : 0xffffffffΪû���ҵ�ƥ���ַ�����V2.1��֧��-1�ʲ��ø�ֵ ����Ϊƥ���ַ�������ʼλ�� ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro strstr(str1,str2) { i = 0 j = 0 len1 = strlen(str1) len2 = strlen(str2) if((len1 == 0) || (len2 == 0)) { return 0xffffffff } while( i < len1) { if(str1[i] == str2[j]) { while(j < len2) { j = j + 1 if(str1[i+j] != str2[j]) { break } } if(j == len2) { return i } j = 0 } i = i + 1 } return 0xffffffff } /***************************************************************************** �� �� �� : InsertTraceInfo �������� : �ں�������ںͳ��ڲ����ӡ,��֧��һ���ж���������� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertTraceInfo() { hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) sel = GetWndSel(hwnd) symbol = GetSymbolLocationFromLn(hbuf, sel.lnFirst) InsertTraceInCurFunction(hbuf,symbol) } /***************************************************************************** �� �� �� : InsertTraceInCurFunction �������� : �ں�������ںͳ��ڲ����ӡ,��֧��һ���ж���������� ������� : hbuf symbol ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertTraceInCurFunction(hbuf,symbol) { ln = GetBufLnCur (hbuf) symbolname = symbol.Symbol nLineEnd = symbol.lnLim nExitCount = 1; InsBufLine(hbuf, ln, " VOS_Debug_Trace(\"\\r\\n |@symbolname@() entry--- \");") ln = ln + 1 fIsEnd = 1 fIsNeedPrt = 1 fIsSatementEnd = 1 szLeftOld = "" while(ln < nLineEnd) { szLine = GetBufLine(hbuf, ln) iCurLineLen = strlen(szLine) /*�����е�ע�����*/ RetVal = SkipCommentFromString(szLine,fIsEnd) szLine = RetVal.szContent fIsEnd = RetVal.fIsEnd //�����Ƿ���return��� /* ret =strstr(szLine,"return") if(ret != 0xffffffff) { if( (szLine[ret+6] == " " ) || (szLine[ret+6] == "\t" ) || (szLine[ret+6] == ";" ) || (szLine[ret+6] == "(" )) { szPre = strmid(szLine,0,ret) } SetBufIns(hbuf,ln,ret) Paren_Right sel = GetWndSel(hwnd) if( sel.lnLast != ln ) { GetbufLine(hbuf,sel.lnLast) RetVal = SkipCommentFromString(szLine,1) szLine = RetVal.szContent fIsEnd = RetVal.fIsEnd } }*/ //�����߿հ״�С nLeft = GetLeftBlank(szLine) if(nLeft == 0) { szLeft = " " } else { szLeft = strmid(szLine,0,nLeft) } szLine = TrimString(szLine) iLen = strlen(szLine) if(iLen == 0) { ln = ln + 1 continue } szRet = GetFirstWord(szLine) // if( (szRet == "if") || (szRet == "else") //�����Ƿ���return��� // ret =strstr(szLine,"return") if( szRet == "return") { if( fIsSatementEnd == 0) { fIsNeedPrt = 1 InsBufLine(hbuf,ln+1,"@szLeftOld@}") szEnd = cat(szLeft,"VOS_Debug_Trace(\"\\r\\n |@symbolname@() exit---: @nExitCount@ \");") InsBufLine(hbuf, ln, szEnd ) InsBufLine(hbuf,ln,"@szLeftOld@{") nExitCount = nExitCount + 1 nLineEnd = nLineEnd + 3 ln = ln + 3 } else { fIsNeedPrt = 0 szEnd = cat(szLeft,"VOS_Debug_Trace(\"\\r\\n |@symbolname@() exit---: @nExitCount@ \");") InsBufLine(hbuf, ln, szEnd ) nExitCount = nExitCount + 1 nLineEnd = nLineEnd + 1 ln = ln + 1 } } else { ret =strstr(szLine,"}") if( ret != 0xffffffff ) { fIsNeedPrt = 1 } } szLeftOld = szLeft ch = szLine[iLen-1] if( ( ch == ";" ) || ( ch == "{" ) || ( ch == ":" )|| ( ch == "}" ) || ( szLine[0] == "#" )) { fIsSatementEnd = 1 } else { fIsSatementEnd = 0 } ln = ln + 1 } //ֻҪǰ���return����һ��}��˵�������Ľ�βû�з��أ���Ҫ�ټ�һ�����ڴ�ӡ if(fIsNeedPrt == 1) { InsBufLine(hbuf, ln, " VOS_Debug_Trace(\"\\r\\n |@symbolname@() exit---: @nExitCount@ \");") InsBufLine(hbuf, ln, "") } } /***************************************************************************** �� �� �� : GetFirstWord �������� : ȡ���ַ����ĵ�һ������ ������� : szLine ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFirstWord(szLine) { szLine = TrimLeft(szLine) nIdx = 0 iLen = strlen(szLine) while(nIdx < iLen) { if( (szLine[nIdx] == " ") || (szLine[nIdx] == "\t") || (szLine[nIdx] == ";") || (szLine[nIdx] == "(") || (szLine[nIdx] == ".") || (szLine[nIdx] == "{") || (szLine[nIdx] == ",") || (szLine[nIdx] == ":") ) { return strmid(szLine,0,nIdx) } nIdx = nIdx + 1 } return "" } /***************************************************************************** �� �� �� : AutoInsertTraceInfoInBuf �������� : �Զ���ǰ�ļ���ȫ����������ڼ����ӡ��ֻ��֧��C++ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro AutoInsertTraceInfoInBuf() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) isymMax = GetBufSymCount(hbuf) isym = 0 while (isym < isymMax) { symbol = GetBufSymLocation(hbuf, isym) isCodeBegin = 0 fIsEnd = 1 isBlandLine = 0 if(strlen(symbol) > 0) { if(symbol.Type == "Class Placeholder") { hsyml = SymbolChildren(symbol) cchild = SymListCount(hsyml) ichild = 0 while (ichild < cchild) { symbol = GetBufSymLocation(hbuf, isym) hsyml = SymbolChildren(symbol) childsym = SymListItem(hsyml, ichild) ln = childsym.lnName isCodeBegin = 0 fIsEnd = 1 isBlandLine = 0 while( ln < childsym.lnLim ) { szLine = GetBufLine (hbuf, ln) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) szNew = RetVal.szContent fIsEnd = RetVal.fIsEnd if(isCodeBegin == 1) { szNew = TrimLeft(szNew) //����Ƿ��ǿ�ִ�д��뿪ʼ iRet = CheckIsCodeBegin(szNew) if(iRet == 1) { if( isBlandLine != 0 ) { ln = isBlandLine } InsBufLine(hbuf,ln,"") childsym.lnLim = childsym.lnLim + 1 SetBufIns(hbuf, ln+1 , 0) InsertTraceInCurFunction(hbuf,childsym) break } if(strlen(szNew) == 0) { if( isBlandLine == 0 ) { isBlandLine = ln; } } else { isBlandLine = 0 } } //���ҵ������Ŀ�ʼ if(isCodeBegin == 0) { iRet = strstr(szNew,"{") if(iRet != 0xffffffff) { isCodeBegin = 1 } } ln = ln + 1 } ichild = ichild + 1 } SymListFree(hsyml) } else if( ( symbol.Type == "Function") || (symbol.Type == "Method") ) { ln = symbol.lnName while( ln < symbol.lnLim ) { szLine = GetBufLine (hbuf, ln) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) szNew = RetVal.szContent fIsEnd = RetVal.fIsEnd if(isCodeBegin == 1) { szNew = TrimLeft(szNew) //����Ƿ��ǿ�ִ�д��뿪ʼ iRet = CheckIsCodeBegin(szNew) if(iRet == 1) { if( isBlandLine != 0 ) { ln = isBlandLine } SetBufIns(hbuf, ln , 0) InsertTraceInCurFunction(hbuf,symbol) InsBufLine(hbuf,ln,"") break } if(strlen(szNew) == 0) { if( isBlandLine == 0 ) { isBlandLine = ln; } } else { isBlandLine = 0 } } //���ҵ������Ŀ�ʼ if(isCodeBegin == 0) { iRet = strstr(szNew,"{") if(iRet != 0xffffffff) { isCodeBegin = 1 } } ln = ln + 1 } } } isym = isym + 1 } } /***************************************************************************** �� �� �� : CheckIsCodeBegin �������� : �Ƿ�Ϊ�����ĵ�һ����ִ�д��� ������� : szLine ���û�пո��ע�͵��ַ��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CheckIsCodeBegin(szLine) { iLen = strlen(szLine) if(iLen == 0) { return 0 } nIdx = 0 nWord = 0 if( (szLine[nIdx] == "(") || (szLine[nIdx] == "-") || (szLine[nIdx] == "*") || (szLine[nIdx] == "+")) { return 1 } if( szLine[nIdx] == "#" ) { return 0 } while(nIdx < iLen) { if( (szLine[nIdx] == " ")||(szLine[nIdx] == "\t") || (szLine[nIdx] == "(")||(szLine[nIdx] == "{") || (szLine[nIdx] == ";") ) { if(nWord == 0) { if( (szLine[nIdx] == "(")||(szLine[nIdx] == "{") || (szLine[nIdx] == ";") ) { return 1 } szFirstWord = StrMid(szLine,0,nIdx) if(szFirstWord == "return") { return 1 } } while(nIdx < iLen) { if( (szLine[nIdx] == " ")||(szLine[nIdx] == "\t") ) { nIdx = nIdx + 1 } else { break } } nWord = nWord + 1 if(nIdx == iLen) { return 1 } } if(nWord == 1) { asciiA = AsciiFromChar("A") asciiZ = AsciiFromChar("Z") ch = toupper(szLine[nIdx]) asciiCh = AsciiFromChar(ch) if( ( szLine[nIdx] == "_" ) || ( szLine[nIdx] == "*" ) || ( ( asciiCh >= asciiA ) && ( asciiCh <= asciiZ ) ) ) { return 0 } else { return 1 } } nIdx = nIdx + 1 } return 1 } /***************************************************************************** �� �� �� : AutoInsertTraceInfoInPrj �������� : �Զ���ǰ����ȫ���ļ���ȫ����������ڼ����ӡ��ֻ��֧��C++ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro AutoInsertTraceInfoInPrj() { hprj = GetCurrentProj() ifileMax = GetProjFileCount (hprj) ifile = 0 while (ifile < ifileMax) { filename = GetProjFileName (hprj, ifile) szExt = toupper(GetFileNameExt(filename)) if( (szExt == "C") || (szExt == "CPP") ) { hbuf = OpenBuf (filename) if(hbuf != 0) { SetCurrentBuf(hbuf) AutoInsertTraceInfoInBuf() } } //�Զ�������ļ����ɸ�����Ҫ�� /* if( IsBufDirty (hbuf) ) { SaveBuf (hbuf) } CloseBuf(hbuf)*/ ifile = ifile + 1 } } /***************************************************************************** �� �� �� : RemoveTraceInfo �������� : ɾ���ú����ij���ڴ�ӡ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro RemoveTraceInfo() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) if(hbuf == hNil) stop symbolname = GetCurSymbol() symbol = GetSymbolLocationFromLn(hbuf, sel.lnFirst) // symbol = GetSymbolLocation (symbolname) nLineEnd = symbol.lnLim szEntry = "VOS_Debug_Trace(\"\\r\\n |@symbolname@() entry--- \");" szExit = "VOS_Debug_Trace(\"\\r\\n |@symbolname@() exit---:" ln = symbol.lnName fIsEntry = 0 while(ln < nLineEnd) { szLine = GetBufLine(hbuf, ln) /*�����е�ע�����*/ RetVal = TrimString(szLine) if(fIsEntry == 0) { ret = strstr(szLine,szEntry) if(ret != 0xffffffff) { DelBufLine(hbuf,ln) nLineEnd = nLineEnd - 1 fIsEntry = 1 ln = ln + 1 continue } } ret = strstr(szLine,szExit) if(ret != 0xffffffff) { DelBufLine(hbuf,ln) nLineEnd = nLineEnd - 1 } ln = ln + 1 } } /***************************************************************************** �� �� �� : RemoveCurBufTraceInfo �������� : �ӵ�ǰ��buf��ɾ����ӵij���ڴ�ӡ��Ϣ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro RemoveCurBufTraceInfo() { hbuf = GetCurrentBuf() isymMax = GetBufSymCount(hbuf) isym = 0 while (isym < isymMax) { isLastLine = 0 symbol = GetBufSymLocation(hbuf, isym) fIsEnd = 1 if(strlen(symbol) > 0) { if(symbol.Type == "Class Placeholder") { hsyml = SymbolChildren(symbol) cchild = SymListCount(hsyml) ichild = 0 while (ichild < cchild) { hsyml = SymbolChildren(symbol) childsym = SymListItem(hsyml, ichild) SetBufIns(hbuf,childsym.lnName,0) RemoveTraceInfo() ichild = ichild + 1 } SymListFree(hsyml) } else if( ( symbol.Type == "Function") || (symbol.Type == "Method") ) { SetBufIns(hbuf,symbol.lnName,0) RemoveTraceInfo() } } isym = isym + 1 } } /***************************************************************************** �� �� �� : RemovePrjTraceInfo �������� : ɾ�������е�ȫ������ĺ����ij���ڴ�ӡ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro RemovePrjTraceInfo() { hprj = GetCurrentProj() ifileMax = GetProjFileCount (hprj) ifile = 0 while (ifile < ifileMax) { filename = GetProjFileName (hprj, ifile) hbuf = OpenBuf (filename) if(hbuf != 0) { SetCurrentBuf(hbuf) RemoveCurBufTraceInfo() } //�Զ�������ļ����ɸ�����Ҫ�� /* if( IsBufDirty (hbuf) ) { SaveBuf (hbuf) } CloseBuf(hbuf)*/ ifile = ifile + 1 } } /***************************************************************************** �� �� �� : InsertFileHeaderEN �������� : ����Ӣ���ļ�ͷ���� ������� : hbuf ln �к� szName ������ szContent ������������ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� 2.�� �� : 2011��2��22�� �� �� : ��� ������ : ���ļ�ͷ������Ϊ���� *****************************************************************************/ macro InsertFileHeaderEN(hbuf, ln,szName,szContent) { hnewbuf = newbuf("") if(hnewbuf == hNil) { stop } SysTime = GetSysTime(1) szYear=SysTime.Year GetFunctionList(hbuf,hnewbuf) InsBufLine(hbuf, ln + 0, "/********************************************************************************") InsBufLine(hbuf, ln + 1, "") InsBufLine(hbuf, ln + 2, " **** Copyright (C), @szYear@, xx xx xx xx info&tech Co., Ltd. ****") InsBufLine(hbuf, ln + 3, "") InsBufLine(hbuf, ln + 4, " ********************************************************************************") sz = GetFileName(GetBufName (hbuf)) InsBufLine(hbuf, ln + 5, " * File Name : @sz@") InsBufLine(hbuf, ln + 6, " * Author : @szName@") SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } InsBufLine(hbuf, ln + 7, " * Date : @sz@-@szMonth@-@szDay@") /*InsBufLine(hbuf, ln + 8, " Created : @sz@-@szMonth@-@szDay@") InsBufLine(hbuf, ln + 9, " Last Modified :")*/ szTmp = " * Description : " nlnDesc = ln iLen = strlen (szContent) InsBufLine(hbuf, ln + 8, " * Description : @szContent@") InsBufLine(hbuf, ln + 9, " * Version : 1.0") InsBufLine(hbuf, ln + 10," * Function List :") InsBufLine(hbuf, ln + 11," * ") //���뺯���б� /*ln = InsertFileList(hbuf,hnewbuf,ln + 12) - 12 closebuf(hnewbuf) */ InsBufLine(hbuf, ln + 12, " * Record :") InsBufLine(hbuf, ln + 13, " * 1.Date : @sz@-@szMonth@-@szDay@") InsBufLine(hbuf, ln + 14, " * Author : @szName@") InsBufLine(hbuf, ln + 15, " * Modification: Created file") InsBufLine(hbuf, ln + 16, "") InsBufLine(hbuf, ln + 17, "*************************************************************************************************************/") InsBufLine(hbuf, ln + 18, "") //InsBufLine(hbuf, ln + 19, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 20, " * external variables *") //InsBufLine(hbuf, ln + 21, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 22, "") //InsBufLine(hbuf, ln + 23, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 24, " * external routine prototypes *") //InsBufLine(hbuf, ln + 25, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 26, "") //InsBufLine(hbuf, ln + 27, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 28, " * internal routine prototypes *") //InsBufLine(hbuf, ln + 29, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 30, "") //InsBufLine(hbuf, ln + 31, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 32, " * project-wide global variables *") //InsBufLine(hbuf, ln + 33, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 34, "") //InsBufLine(hbuf, ln + 35, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 36, " * module-wide global variables *") //InsBufLine(hbuf, ln + 37, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 38, "") //InsBufLine(hbuf, ln + 39, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 40, " * constants *") //InsBufLine(hbuf, ln + 41, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 42, "") //InsBufLine(hbuf, ln + 43, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 44, " * macros *") //InsBufLine(hbuf, ln + 45, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 46, "") //InsBufLine(hbuf, ln + 47, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 48, " * routines' implementations *") //InsBufLine(hbuf, ln + 49, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 50, "") if(iLen != 0) { return } //���û�й���������������ʾ���� szContent = Ask("Description") SetBufIns(hbuf,nlnDesc + 14,0) DelBufLine(hbuf,nlnDesc +10) //ע���������,�Զ����� CommentContent(hbuf,nlnDesc + 10," Description : ",szContent,0) } /***************************************************************************** �� �� �� : InsertFileHeaderCN �������� : �������������ļ�ͷ˵�� ������� : hbuf ln szName szContent ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� 2.�� �� : 2011��2��22�� �� �� : ��� ������ : ���ļ�ͷ������Ϊ���� *****************************************************************************/ macro InsertFileHeaderCN(hbuf, ln,szName,szContent) { hnewbuf = newbuf("") if(hnewbuf == hNil) { stop } SysTime = GetSysTime(1) szYear=SysTime.Year szMonth=SysTime.month szDay=SysTime.day GetFunctionList(hbuf,hnewbuf) InsBufLine(hbuf, ln + 0, "/***********************************************************************************") sz = GetFileName(GetBufName (hbuf)) InsBufLine(hbuf, ln + 1, " * �� �� �� : @sz@") /*InsBufLine(hbuf, ln + 6, " �� �� �� : ����")*/ InsBufLine(hbuf, ln + 2, " * �� �� �� : @szName@") InsBufLine(hbuf, ln + 3, " * �������� : @szYear@��@szMonth@��@szDay@��") /*InsBufLine(hbuf, ln + 9, " ����� :")*/ iLen = strlen (szContent) nlnDesc = ln szTmp = " * �ļ����� : " InsBufLine(hbuf, ln + 4, " * �ļ����� : @szContent@") InsBufLine(hbuf, ln + 5, " * ��Ȩ˵�� : Copyright (c) 2008-@szYear@ xx xx xx xx ��������˾") InsBufLine(hbuf, ln + 6, " * �� �� : ") InsBufLine(hbuf, ln + 7, " * ����־ : ") InsBufLine(hbuf, ln + 8, "***********************************************************************************/") InsBufLine(hbuf, ln + 9, "") // InsBufLine(hbuf, ln + 9, " * �� �� �� : 1.0") // InsBufLine(hbuf, ln + 10," * �����б� :") // InsBufLine(hbuf, ln + 11," * ") // //���뺯���б� // /*ln = InsertFileList(hbuf,hnewbuf,ln + 12) - 12 // closebuf(hnewbuf) // */ // InsBufLine(hbuf, ln + 12, " * ��ʷ��¼ :") // InsBufLine(hbuf, ln + 13, " * 1.�� �� : @sz@-@szMonth@-@szDay@") // // if( strlen(szMyName)>0 ) // { // InsBufLine(hbuf, ln + 14, " * �� �� : @szName@") // } // else // { // InsBufLine(hbuf, ln + 14, " * �� �� : #") // } // InsBufLine(hbuf, ln + 15, " * ������ : �����ļ�") // InsBufLine(hbuf, ln + 16, "") // InsBufLine(hbuf, ln + 17, "***********************************************************************************/") // InsBufLine(hbuf, ln + 18, "") //InsBufLine(hbuf, ln + 19, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 20, " * �ⲿ����˵�� *") //InsBufLine(hbuf, ln + 21, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 22, "") //InsBufLine(hbuf, ln + 23, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 24, " * �ⲿ����ԭ��˵�� *") //InsBufLine(hbuf, ln + 25, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 26, "") //InsBufLine(hbuf, ln + 27, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 28, " * �ڲ�����ԭ��˵�� *") //InsBufLine(hbuf, ln + 29, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 30, "") //InsBufLine(hbuf, ln + 31, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 32, " * ȫ�ֱ��� *") //InsBufLine(hbuf, ln + 33, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 34, "") //InsBufLine(hbuf, ln + 35, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 36, " * ģ�鼶���� *") //InsBufLine(hbuf, ln + 37, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 38, "") //InsBufLine(hbuf, ln + 39, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 40, " * �������� *") //InsBufLine(hbuf, ln + 41, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 42, "") //InsBufLine(hbuf, ln + 43, "/*----------------------------------------------*") //InsBufLine(hbuf, ln + 44, " * �궨�� *") //InsBufLine(hbuf, ln + 45, " *----------------------------------------------*/") //InsBufLine(hbuf, ln + 46, "") if(strlen(szContent) != 0) { return } //���û�����빦�������Ļ���ʾ���� szContent = Ask("�������ļ���������������") //���ù��λ��Ϊע�͵����һ�� SetBufIns(hbuf,nlnDesc + 9,0) //��ԭ"�ļ�����"��ɾ�� DelBufLine(hbuf,nlnDesc +4) //�Զ�������ʾ�������� CommentContent(hbuf,nlnDesc+4," * �ļ����� : ",szContent,0) } /***************************************************************************** �� �� �� : GetFunctionList �������� : ��ú����б� ������� : hbuf hnewbuf ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFunctionList(hbuf,hnewbuf) { isymMax = GetBufSymCount (hbuf) isym = 0 //����ȡ��ȫ���ĵ�ǰbuf���ű��е�ȫ������ while (isym < isymMax) { symbol = GetBufSymLocation(hbuf, isym) if(symbol.Type == "Class Placeholder") { hsyml = SymbolChildren(symbol) cchild = SymListCount(hsyml) ichild = 0 while (ichild < cchild) { childsym = SymListItem(hsyml, ichild) AppendBufLine(hnewbuf,childsym.symbol) ichild = ichild + 1 } SymListFree(hsyml) } if(strlen(symbol) > 0) { if( (symbol.Type == "Method") || (symbol.Type == "Function") || ("Editor Macro" == symbol.Type) ) { //ȡ�������Ǻ����ͺ�ķ��� symname = symbol.Symbol //�����Ų��뵽��buf����������Ϊ�˼���V2.1 AppendBufLine(hnewbuf,symname) } } isym = isym + 1 } } /***************************************************************************** �� �� �� : InsertFileList �������� : �����б���� ������� : hbuf ln ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertFileList(hbuf,hnewbuf,ln) { if(hnewbuf == hNil) { return ln } isymMax = GetBufLineCount (hnewbuf) isym = 0 while (isym < isymMax) { szLine = GetBufLine(hnewbuf, isym) InsBufLine(hbuf,ln," @szLine@") ln = ln + 1 isym = isym + 1 } return ln } /***************************************************************************** �� �� �� : CommentContent1 �������� : �Զ�������ʾ�ı�,��Ϊmsg�Ի����ܴ�����е���������Ҳ��ܳ���255 ���ַ�����Ϊ���У������˴Ӽ�����ȡ���ݵİ취���������������Ǽ� ���������ݵ�ǰ���ֵĻ�����Ϊ�û��ǿ��������ݣ���������Ȼ�п����� �����ָ��ʷdz��͡���CommentContent��ͬ���������������е����� �ϲ���һ������������Ը�����Ҫѡ�������ַ�ʽ ������� : hbuf ln �к� szPreStr ������Ҫ������ַ��� szContent ��Ҫ������ַ������� isEnd �Ƿ���Ҫ��ĩβ����'*'��'/' ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CommentContent1 (hbuf,ln,szPreStr,szContent,isEnd) { //���������еĶ���ı��ϲ� szClip = MergeString() //ȥ�����Ŀո� szTmp = TrimString(szContent) //������봰���е������Ǽ������е�����˵���Ǽ��������� ret = strstr(szClip,szTmp) if(ret == 0) { szContent = szClip } szLeftBlank = szPreStr iLen = strlen(szPreStr) k = 0 while(k < iLen) { szLeftBlank[k] = " "; k = k + 1; } iLen = strlen (szContent) szTmp = cat(szPreStr,"#"); if( iLen == 0) { InsBufLine(hbuf, ln, "@szTmp@") } else { i = 0 while (iLen - i > 75 - k ) { j = 0 while(j < 75 - k) { iNum = szContent[i + j] //��������ı���ɶԴ��� if( AsciiFromChar (iNum) > 160 ) { j = j + 2 } else { j = j + 1 } if( (j > 70 - k) && (szContent[i + j] == " ") ) { break } } if( (szContent[i + j] != " " ) ) { n = 0; iNum = szContent[i + j + n] while( (iNum != " " ) && (AsciiFromChar (iNum) < 160)) { n = n + 1 if((n >= 3) ||(i + j + n >= iLen)) break; iNum = szContent[i + j + n] } if(n < 3) { j = j + n sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) } else { sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) if(sz1[strlen(sz1)-1] != "-") { sz1 = cat(sz1,"-") } } } else { sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) } InsBufLine(hbuf, ln, "@sz1@") ln = ln + 1 szPreStr = szLeftBlank i = i + j while(szContent[i] == " ") { i = i + 1 } } sz1 = strmid(szContent,i,iLen) sz1 = cat(szPreStr,sz1) if(isEnd) { sz1 = cat(sz1,"*/") } InsBufLine(hbuf, ln, "@sz1@") } return ln } /***************************************************************************** �� �� �� : CommentContent �������� : �Զ�������ʾ�ı�,��Ϊmsg�Ի����ܴ�����е���������Ҳ��ܳ���255 ���ַ�����Ϊ���У������˴Ӽ�����ȡ���ݵİ취���������������Ǽ� ���������ݵ�ǰ���ֵĻ�����Ϊ�û��ǿ��������ݣ���������Ȼ�п����� �����ָ��ʷdz��� ������� : hbuf ln �к� szPreStr ������Ҫ������ַ��� szContent ��Ҫ������ַ������� isEnd �Ƿ���Ҫ��ĩβ����' '��'*'��'/' ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CommentContent (hbuf,ln,szPreStr,szContent,isEnd) { szLeftBlank = szPreStr iLen = strlen(szPreStr) k = 0 while(k < iLen) { szLeftBlank[k] = " "; k = k + 1; } hNewBuf = newbuf("clip") if(hNewBuf == hNil) return SetCurrentBuf(hNewBuf) PasteBufLine (hNewBuf, 0) lnMax = GetBufLineCount( hNewBuf ) szTmp = TrimString(szContent) //�ж������������0��ʱ������Щ�汾�������⣬Ҫ�ų��� if(lnMax != 0) { szLine = GetBufLine(hNewBuf , 0) ret = strstr(szLine,szTmp) if(ret == 0) { /*������봰����������Ǽ������һ����˵���Ǽ���������ȡ�������е��� ��*/ szContent = TrimString(szLine) } else { lnMax = 1 } } else { lnMax = 1 } szRet = "" nIdx = 0 while ( nIdx < lnMax) { if(nIdx != 0) { szLine = GetBufLine(hNewBuf , nIdx) szContent = TrimLeft(szLine) szPreStr = szLeftBlank } iLen = strlen (szContent) szTmp = cat(szPreStr,"#"); if( (iLen == 0) && (nIdx == (lnMax - 1)) { InsBufLine(hbuf, ln, "@szTmp@") } else { i = 0 //��ÿ��75���ַ����� while (iLen - i > 75 - k ) { j = 0 while(j < 75 - k) { iNum = szContent[i + j] if( AsciiFromChar (iNum) > 160 ) { j = j + 2 } else { j = j + 1 } if( (j > 70 - k) && (szContent[i + j] == " ") ) { break } } if( (szContent[i + j] != " " ) ) { n = 0; iNum = szContent[i + j + n] //����������ַ�ֻ�ܳɶԴ��� while( (iNum != " " ) && (AsciiFromChar (iNum) < 160)) { n = n + 1 if((n >= 3) ||(i + j + n >= iLen)) break; iNum = szContent[i + j + n] } if(n < 3) { //�ֶκ�ֻ��С��3�����ַ������¶���������ȥ j = j + n sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) } else { //����3���ַ��ļ����ַ��ֶ� sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) if(sz1[strlen(sz1)-1] != "-") { sz1 = cat(sz1,"-") } } } else { sz1 = strmid(szContent,i,i+j) sz1 = cat(szPreStr,sz1) } InsBufLine(hbuf, ln, "@sz1@") ln = ln + 1 szPreStr = szLeftBlank i = i + j while(szContent[i] == " ") { i = i + 1 } } sz1 = strmid(szContent,i,iLen) sz1 = cat(szPreStr,sz1) if((isEnd == 1) && (nIdx == (lnMax - 1)) { sz1 = cat(sz1," */") } InsBufLine(hbuf, ln, "@sz1@") } ln = ln + 1 nIdx = nIdx + 1 } closebuf(hNewBuf) return ln - 1 } /***************************************************************************** �� �� �� : FormatLine �������� : ��һ�г��ı������Զ����� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro FormatLine() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) if(sel.ichFirst > 70) { Msg("ѡ��̫������") stop } hbuf = GetWndBuf(hwnd) // get line the selection (insertion point) is on szCurLine = GetBufLine(hbuf, sel.lnFirst); lineLen = strlen(szCurLine) szLeft = strmid(szCurLine,0,sel.ichFirst) szContent = strmid(szCurLine,sel.ichFirst,lineLen) DelBufLine(hbuf, sel.lnFirst) CommentContent(hbuf,sel.lnFirst,szLeft,szContent,0) } /***************************************************************************** �� �� �� : CreateBlankString �������� : ���������ո���ַ��� ������� : nBlankCount ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CreateBlankString(nBlankCount) { szBlank="" nIdx = 0 while(nIdx < nBlankCount) { szBlank = cat(szBlank," ") nIdx = nIdx + 1 } return szBlank } /***************************************************************************** �� �� �� : TrimLeft �������� : ȥ���ַ�����ߵĿո� ������� : szLine ������� : ȥ����ո����ַ��� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro TrimLeft(szLine) { nLen = strlen(szLine) if(nLen == 0) { return szLine } nIdx = 0 while( nIdx < nLen ) { if( ( szLine[nIdx] != " ") && (szLine[nIdx] != "\t") ) { break } nIdx = nIdx + 1 } return strmid(szLine,nIdx,nLen) } /***************************************************************************** �� �� �� : TrimRight �������� : ȥ���ַ����ұߵĿո� ������� : szLine ������� : ȥ���ҿո����ַ��� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro TrimRight(szLine) { nLen = strlen(szLine) if(nLen == 0) { return szLine } nIdx = nLen while( nIdx > 0 ) { nIdx = nIdx - 1 if( ( szLine[nIdx] != " ") && (szLine[nIdx] != "\t") ) { break } } return strmid(szLine,0,nIdx+1) } /***************************************************************************** �� �� �� : TrimString �������� : ȥ���ַ������ҿո� ������� : szLine ������� : ȥ�����ҿո����ַ��� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro TrimString(szLine) { szLine = TrimLeft(szLine) szLIne = TrimRight(szLine) return szLine } /***************************************************************************** �� �� �� : GetFunctionDef �������� : ���ֳɶ��еĺ�������ͷ�ϲ���һ�� ������� : hbuf symbol �������� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFunctionDef(hbuf,symbol) { ln = symbol.lnName szFunc = "" if(strlen(symbol) == 0) { return szFunc } fIsEnd = 1 // msg(symbol) while(ln < symbol.lnLim) { szLine = GetBufLine (hbuf, ln) //ȥ���ע�͵������ RetVal = SkipCommentFromString(szLine,fIsEnd) szLine = RetVal.szContent szLine = TrimString(szLine) fIsEnd = RetVal.fIsEnd //�����{��ʾ��������ͷ������ ret = strstr(szLine,"{") if(ret != 0xffffffff) { szLine = strmid(szLine,0,ret) szFunc = cat(szFunc,szLine) break } szFunc = cat(szFunc,szLine) ln = ln + 1 } return szFunc } /***************************************************************************** �� �� �� : GetWordFromString �������� : ���ַ�����ȡ����ij�ַ�ʽ�ָ���ַ����� ������� : hbuf ���ɷָ���ַ�����buf szLine �ַ��� nBeg ��ʼ����λ�� nEnd ��������λ�� chBeg ��ʼ���ַ���־ chSeparator �ָ��ַ� chEnd �����ַ���־ ������� : ����ַ����� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetWordFromString(hbuf,szLine,nBeg,nEnd,chBeg,chSeparator,chEnd) { if((nEnd > strlen(szLine) || (nBeg > nEnd)) { return 0 } nMaxLen = 0 nIdx = nBeg //�ȶ�λ����ʼ�ַ���Ǵ� while(nIdx < nEnd) { if(szLine[nIdx] == chBeg) { //nIdx����1���ڷָ��Ϊ��ǵ������е�һ�ξͻ��ѵ���ʼ�� break } nIdx = nIdx + 1 } nBegWord = nIdx + 1 //���ڼ��chBeg��chEnd������������λ����ʼ����nIdxû�м�1������iCount=0 iCount = 0 nEndWord = 0 //�Էָ��Ϊ��ǽ������� while(nIdx < nEnd) { if(szLine[nIdx] == chSeparator) { szWord = strmid(szLine,nBegWord,nIdx) szWord = TrimString(szWord) nLen = strlen(szWord) if(nMaxLen < nLen) { nMaxLen = nLen } AppendBufLine(hbuf,szWord) nBegWord = nIdx + 1 } if(szLine[nIdx] == chBeg) { iCount = iCount + 1 } if(szLine[nIdx] == chEnd) { iCount = iCount - 1 nEndWord = nIdx if( iCount == 0 ) { break } } nIdx = nIdx + 1 } //��ȡ�ָ���������֮����ַ����� if(nEndWord > nBegWord) { szWord = strmid(szLine,nBegWord,nEndWord) szWord = TrimString(szWord) nLen = strlen(szWord) if(nMaxLen < nLen) { nMaxLen = nLen } AppendBufLine(hbuf,szWord) } return nMaxLen } /***************************************************************************** �� �� �� : FuncHeadCommentCN �������� : �������ĵĺ���ͷע�� ������� : hbuf ln �к� szFunc ������ szMyName ������ newFunc �Ƿ��º��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro FuncHeadCommentCN(hbuf, ln, szFunc, szMyName,newFunc) { iIns = 0 if(newFunc != 1) { symbol = GetSymbolLocationFromLn(hbuf, ln) if(strlen(symbol) > 0) { hTmpBuf = NewBuf("Tempbuf") if(hTmpBuf == hNil) { stop } //���ֳɶ��еĺ�������ͷ�ϲ���һ�в�ȥ����ע�� szLine = GetFunctionDef(hbuf,symbol) iBegin = symbol.ichName //ȡ������ֵ���� szTemp = strmid(szLine,0,iBegin) szTemp = TrimString(szTemp) szRet = GetFirstWord(szTemp) if(symbol.Type == "Method") { szTemp = strmid(szTemp,strlen(szRet),strlen(szTemp)) szTemp = TrimString(szTemp) if(szTemp == "::") { szRet = "" } } if(toupper (szRet) == "MACRO") { //���ں귵��ֵ����� szRet = "" } //�Ӻ���ͷ������������� nMaxParamSize = GetWordFromString(hTmpBuf,szLine,iBegin,strlen(szLine),"(",",",")") lnMax = GetBufLineCount(hTmpBuf) ln = symbol.lnFirst SetBufIns (hbuf, ln, 0) } } else { lnMax = 0 szLine = "" szRet = "" } InsBufLine(hbuf, ln, "/*****************************************************************************") if( strlen(szFunc)>0 ) { InsBufLine(hbuf, ln+1, " * �� �� �� : @szFunc@") } else { InsBufLine(hbuf, ln+1, " * �� �� �� : #") } oldln = ln InsBufLine(hbuf, ln+2, " * �� �� �� : @szMyName@") SysTime = GetSysTime(1); /*szTime = SysTime.Date*/ SysTime = GetSysTime(1); sz1=SysTime.Year sz2=SysTime.month sz3=SysTime.day InsBufLine(hbuf, ln+3, " * �������� : @sz1@��@sz2@��@sz3@��") InsBufLine(hbuf, ln+4, " * �������� : ") szIns = " * ������� : " if(newFunc != 1) { //�����Ѿ����ڵĺ������뺯������ i = 0 while ( i < lnMax) { szTmp = GetBufLine(hTmpBuf, i) nLen = strlen(szTmp); szBlank = CreateBlankString(nMaxParamSize - nLen + 2) szTmp = cat(szTmp,szBlank) //����������� szParamAsk = cat("�������������: ",szTmp) szParamDescribe = Ask(szParamAsk) szTmp = cat(szTmp,szParamDescribe) ln = ln + 1 //����ǹؼ���ÿ�ҵ�һ��������ln��1����֤�����ln+?�ж��������в���������ӵ� szTmp = cat(szIns,szTmp) InsBufLine(hbuf, ln+4, "@szTmp@") //�ڵ�ln+4�в�������Ϊǰ��ÿ��������ln=ln+1����ʵ�Ǵ�ln5�п�ʼÿ����������һ�� iIns = 1 //�����Ƿ���ڲ������ szIns = " " //�ڶ�������ǰ����ո���� i = i + 1 } closebuf(hTmpBuf) } if(iIns == 0) { ln = ln + 1 //Ϊ�˱������в�����һ�� InsBufLine(hbuf, ln+4, " * ������� : ��") //�ڵ�ln+4�в�������Ϊǰ��ÿ��������ln=ln+1����ʵ�Ǵ�ln5�п�ʼÿ����������һ�� } InsBufLine(hbuf, ln+5, " * ������� : ��") InsBufLine(hbuf, ln+6, " * �� �� ֵ : @szRet@") InsBufLine(hbuf, ln+7, " * ���ù�ϵ : ") InsBufLine(hbuf, ln+8, " * �� �� : ") /*InsBufLine(hbuf, ln+6, " �� �� �� : @szMyName@") InsbufLIne(hbuf, ln+7, " ����ʱ�� : @szTime@")*/ // InsBufLine(hbuf, ln+6, " * �� ¼") // SysTime = GetSysTime(1); // /*szTime = SysTime.Date*/ // SysTime = GetSysTime(1); // sz1=SysTime.Year // sz2=SysTime.month // sz3=SysTime.day // if (sz2 < 10) // { // szMonth = "0@sz2@" // } // else // { // szMonth = sz2 // } // if (sz3 < 10) // { // szDay = "0@sz3@" // } // else // { // szDay = sz3 // } // // InsBufLine(hbuf, ln+7, " * 1.�� ��: @sz1@@szMonth@@szDay@") // // if( strlen(szMyName)>0 ) // { // InsBufLine(hbuf, ln+8, " * �� ��: @szMyName@") // } // else // { // InsBufLine(hbuf, ln+8, " * �� ��: #") // } // InsBufLine(hbuf, ln+9, " * ������: �����ɺ���") InsBufLine(hbuf, ln+9, "") InsBufLine(hbuf, ln+10, "*****************************************************************************/") //�����˺��������º�����ע�ͺ���Ϻ����� if ((newFunc == 1) && (strlen(szFunc)>0)) { InsBufLine(hbuf, ln+11, "VOS_UINT32 @szFunc@( # )") InsBufLine(hbuf, ln+12, "{"); InsBufLine(hbuf, ln+13, " #"); InsBufLine(hbuf, ln+14, "}"); SearchForward() //��궨λ����ǰ�浥�����ֵ�#�ϣ���ѡ��#���������������#(�����IJ���λ��) } hwnd = GetCurrentWnd() if (hwnd == 0) stop //��궨λ��"{"�� sel = GetWndSel(hwnd) sel.ichFirst = 1 sel.ichLim = sel.ichFirst sel.lnFirst = ln + 12 sel.lnLast = ln + 12 szContent = Ask("�����뺯����������������") setWndSel(hwnd,sel) DelBufLine(hbuf,oldln + 4) //��ʾ����Ĺ����������� newln = CommentContent(hbuf,oldln+4," * �������� : ",szContent,0) - 4//�˴���4����ΪCommentContent���ص�ֵ�Ǵ���ȥ��oldln+4֮����������� ln = ln + newln - oldln //������������ if ((newFunc == 1) && (strlen(szFunc)>0)) { isFirstParam = 1 //��ʾ�����º����ķ���ֵ szRet = Ask("�����뷵��ֵ����") if(strlen(szRet) > 0) { PutBufLine(hbuf, ln+6, " * �� �� ֵ : @szRet@") PutBufLine(hbuf, ln+11, "@szRet@ @szFunc@( )") SetbufIns(hbuf,ln+11,strlen(szRet)+strlen(szFunc) + 3 //��궨λ��������������"("��һ���ո� } szFuncDef = "" sel.ichFirst = strlen(szFunc)+strlen(szRet) + 3 sel.ichLim = sel.ichFirst + 1 //ѭ��������� while (1) { szParam = ask("�����뺯��������") szParam = TrimString(szParam) szParamOriginal = szParam szTmp = cat(szIns,szParam) szParam = cat(szFuncDef,szParam) //��궨λ�����������һ�������� sel.lnFirst = ln + 11 sel.lnLast = ln + 11 setWndSel(hwnd,sel) sel.ichFirst = sel.ichFirst + strlen(szParam) sel.ichLim = sel.ichFirst oldsel = sel //����������� szParamAsk = cat("�������������: ",szParamOriginal) szParamDescribe = Ask(szParamAsk) szTmp = cat(szTmp," ") szTmp = cat(szTmp,szParamDescribe) //�ں���ͷע���в������ if(isFirstParam == 1) { PutBufLine(hbuf, ln+4, "@szTmp@") isFirstParam = 0 } else { ln = ln + 1 InsBufLine(hbuf, ln+4, "@szTmp@") oldsel.lnFirst = ln + 11 oldsel.lnLast = ln + 11 } //�ڹ�����ڵ�λ�ò������ SetBufSelText(hbuf,szParam) //����ͷע�͵Ķ��� szIns = " " //�������һ���ո� szFuncDef = ", " //��궨λ������"{"���"#"������ѡ��"#" oldsel.lnFirst = ln + 13 oldsel.lnLast = ln + 13 oldsel.ichFirst = 4 oldsel.ichLim = 5 setWndSel(hwnd,oldsel) } } return ln + 14 } /***************************************************************************** �� �� �� : FuncHeadCommentEN �������� : ����ͷӢ��˵�� ������� : hbuf ln szFunc szMyName newFunc ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro FuncHeadCommentEN(hbuf, ln, szFunc, szMyName,newFunc) { iIns = 0 if(newFunc != 1) { symbol = GetSymbolLocationFromLn(hbuf, ln) if(strlen(symbol) > 0) { hTmpBuf = NewBuf("Tempbuf") //���ļ�����ͷ�����һ�в�ȥ����ע�� szLine = GetFunctionDef(hbuf,symbol) iBegin = symbol.ichName //ȡ������ֵ���� szTemp = strmid(szLine,0,iBegin) szTemp = TrimString(szTemp) szRet = GetFirstWord(szTemp) if(symbol.Type == "Method") { szTemp = strmid(szTemp,strlen(szRet),strlen(szTemp)) szTemp = TrimString(szTemp) if(szTemp == "::") { szRet = "" } } if(toupper (szRet) == "MACRO") { //���ں귵��ֵ����� szRet = "" } //�Ӻ���ͷ������������� nMaxParamSize = GetWordFromString(hTmpBuf,szLine,iBegin,strlen(szLine),"(",",",")") lnMax = GetBufLineCount(hTmpBuf) ln = symbol.lnFirst SetBufIns (hbuf, ln, 0) } } else { lnMax = 0 szRet = "" szLine = "" } InsBufLine(hbuf, ln, "/*****************************************************************************") InsBufLine(hbuf, ln+1, " * Function : @szFunc@") InsBufLine(hbuf, ln+2, " * Description : ") oldln = ln szIns = " * Input : " if(newFunc != 1) { //�����Ѿ����ڵĺ��������������� i = 0 while ( i < lnMax) { szTmp = GetBufLine(hTmpBuf, i) nLen = strlen(szTmp); //�����������Ŀո�ʵ���Ƕ������IJ�����˵�� szBlank = CreateBlankString(nMaxParamSize - nLen + 2) szTmp = cat(szTmp,szBlank) ln = ln + 1 szTmp = cat(szIns,szTmp) InsBufLine(hbuf, ln+2, "@szTmp@") iIns = 1 szIns = " " i = i + 1 } closebuf(hTmpBuf) } if(iIns == 0) { ln = ln + 1 InsBufLine(hbuf, ln+2, " * Input : None") } InsBufLine(hbuf, ln+3, " * Output : None") InsBufLine(hbuf, ln+4, " * Return : @szRet@") /*InsBufLine(hbuf, ln+5, " Calls : ") InsBufLine(hbuf, ln+6, " Called By : ")*/ InsbufLIne(hbuf, ln+5, " * Others : "); SysTime = GetSysTime(1); sz1=SysTime.Year sz2=SysTime.month sz3=SysTime.day if (sz2 < 10) { szMonth = "0@sz2@" } else { szMonth = sz2 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } InsBufLine(hbuf, ln + 6, " * Record") InsBufLine(hbuf, ln + 7, " * 1.Date : @sz1@@szMonth@@szDay@") InsBufLine(hbuf, ln + 8, " * Author : @szMyName@") InsBufLine(hbuf, ln + 9, " * Modification: Created function") InsBufLine(hbuf, ln + 10, "") InsBufLine(hbuf, ln + 11, "*****************************************************************************/") if ((newFunc == 1) && (strlen(szFunc)>0)) { InsBufLine(hbuf, ln+12, "VOS_UINT32 @szFunc@( # )") InsBufLine(hbuf, ln+13, "{"); InsBufLine(hbuf, ln+14, " #"); InsBufLine(hbuf, ln+15, "}"); SearchForward() } hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) sel.ichFirst = 0 sel.ichLim = sel.ichFirst sel.lnFirst = ln + 12 sel.lnLast = ln + 12 szContent = Ask("Description") DelBufLine(hbuf,oldln + 2) setWndSel(hwnd,sel) newln = CommentContent(hbuf,oldln + 2," * Description : ",szContent,0) - 2 ln = ln + newln - oldln if ((newFunc == 1) && (strlen(szFunc)>0)) { //��ʾ���뺯������ֵ�� szRet = Ask("Please input return value type") if(strlen(szRet) > 0) { PutBufLine(hbuf, ln+4, " * Return : @szRet@") PutBufLine(hbuf, ln+12, "@szRet@ @szFunc@( # )") SetbufIns(hbuf,ln+12,strlen(szRet)+strlen(szFunc) + 3 } szFuncDef = "" isFirstParam = 1 sel.ichFirst = strlen(szFunc)+strlen(szRet) + 3 sel.ichLim = sel.ichFirst + 1 //ѭ�������º����IJ��� while (1) { szParam = ask("Please input parameter") szParam = TrimString(szParam) szTmp = cat(szIns,szParam) szParam = cat(szFuncDef,szParam) sel.lnFirst = ln + 12 sel.lnLast = ln + 12 setWndSel(hwnd,sel) sel.ichFirst = sel.ichFirst + strlen(szParam) sel.ichLim = sel.ichFirst oldsel = sel if(isFirstParam == 1) { PutBufLine(hbuf, ln+2, "@szTmp@") isFirstParam = 0 } else { ln = ln + 1 InsBufLine(hbuf, ln+2, "@szTmp@") oldsel.lnFirst = ln + 12 oldsel.lnLast = ln + 12 } SetBufSelText(hbuf,szParam) szIns = " " szFuncDef = ", " oldsel.lnFirst = ln + 14 oldsel.lnLast = ln + 14 oldsel.ichFirst = 4 oldsel.ichLim = 5 setWndSel(hwnd,oldsel) } } return ln + 15 } /***************************************************************************** �� �� �� : InsertHistory �������� : ��������ʷ��¼ ������� : hbuf ln �к� language ���� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertHistory(hbuf,ln,language) { iHistoryCount = 1 // isLastLine = ln // i = 0 // while(ln-i>0) // { // szCurLine = GetBufLine(hbuf, ln-i); // iBeg1 = strstr(szCurLine,"�� �� ") // iBeg2 = strstr(szCurLine,"Date ") // if((iBeg1 != 0xffffffff) || (iBeg2 != 0xffffffff)) // { // iHistoryCount = iHistoryCount + 1 // i = i + 1 // continue // } // iBeg1 = strstr(szCurLine,"����ʷ") // iBeg2 = strstr(szCurLine,"History ") // if((iBeg1 != 0xffffffff) || (iBeg2 != 0xffffffff)) // { // break // } // iBeg = strstr(szCurLine,"/**********************") // if( iBeg != 0xffffffff ) // { // break // } // i = i + 1 // } if(language == 0) { InsertHistoryContentCN(hbuf,ln,iHistoryCount) } else { InsertHistoryContentEN(hbuf,ln,iHistoryCount) } } /***************************************************************************** �� �� �� : UpdateFunctionList �������� : ���º����б� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro UpdateFunctionList() { hnewbuf = newbuf("") if(hnewbuf == hNil) { stop } hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) GetFunctionList(hbuf,hnewbuf) ln = sel.lnFirst iHistoryCount = 1 isLastLine = ln iTotalLn = GetBufLineCount (hbuf) while(ln < iTotalLn) { szCurLine = GetBufLine(hbuf, ln); iLen = strlen(szCurLine) j = 0; while(j < iLen) { if(szCurLine[j] != " ") break j = j + 1 } //���ļ�ͷ˵����ǰ�д���10���ո��Ϊ�����б��¼ if(j > 10) { DelBufLine(hbuf, ln) } else { break } iTotalLn = GetBufLineCount (hbuf) } //���뺯���б� InsertFileList( hbuf,hnewbuf,ln ) closebuf(hnewbuf) } /***************************************************************************** �� �� �� : InsertHistoryContentCN �������� : ������ʷ�ļ�¼����˵�� ������� : hbuf ln iHostoryCount ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertHistoryContentCN(hbuf,ln,iHostoryCount) { //��ȡʱ�� SysTime = GetSysTime(1); szYear=SysTime.Year szMonth=SysTime.month if (szMonth < 10) { szMonth = "0@szMonth@" } szDay=SysTime.day if (szDay < 10) { szDay = "0@szDay@" } //��ȡ�û��� szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } //��ȡ�������λ�õ������ַ��������õ�"hi"�ַ��� hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) szLine = GetBufLine (hbuf, sel.lnFirst) wordinfo = GetWordLeftOfIch(sel.ichFirst, szLine) //��ȡ"hi"�����ַ� strLeft = strmid (szLine, 0, wordinfo.ich) //�ж������ַ��Ƿ���" * ����־ :" ret =strstr(strLeft, " * ����־ :") if(ret != 0xffffffff) //����־�ĵ�һ�У�����"����־"�ַ��� { szTmp = strLeft } else //����־�������У�ǰ�油�ո� { szTmp = CreateBlankString(16) } //���������ڣ����� szTmp = cat(szTmp,"@szYear@@szMonth@@szDay@ by @szMyName@, ") szContent = Ask("�������ĵ�����") CommentContent(hbuf,ln,szTmp,szContent,0) // SysTime = GetSysTime(1); // szTime = SysTime.Date // szMyName = getreg(MYNAME) // // InsBufLine(hbuf, ln, "") // InsBufLine(hbuf, ln + 1, " @iHostoryCount@.�� �� : @szTime@") // // if( strlen(szMyName) > 0 ) // { // InsBufLine(hbuf, ln + 2, " �� �� : @szMyName@") // } // else // { // InsBufLine(hbuf, ln + 2, " �� �� : #") // } // szContent = Ask("�������ĵ�����") // CommentContent(hbuf,ln + 3," ������ : ",szContent,0) } /***************************************************************************** �� �� �� : InsertHistoryContentEN �������� : ������ʷ�ļ�¼Ӣ��˵�� ������� : hbuf ��ǰbuf ln ��ǰ�к� iHostoryCount �ļ�¼�ı�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertHistoryContentEN(hbuf,ln,iHostoryCount) { SysTime = GetSysTime(1); szTime = SysTime.Date sz1=SysTime.Year sz2=SysTime.month sz3=SysTime.day if (sz2 < 10) { szMonth = "0@sz2@" } else { szMonth = sz2 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } szMyName = getreg(MYNAME) InsBufLine(hbuf, ln, "") InsBufLine(hbuf, ln + 1, " @iHostoryCount@.Date : @sz1@@szMonth@@szDay@") InsBufLine(hbuf, ln + 2, " Author : @szMyName@") szContent = Ask("Please input modification") CommentContent(hbuf,ln + 3," Modification : ",szContent,0) } /***************************************************************************** �� �� �� : CreateFunctionDef �������� : ����C����ͷ�ļ� ������� : hbuf szName language ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CreateFunctionDef(hbuf, szName, language) { ln = 0 //��õ�ǰû�к����ļ��� szFileName = GetFileNameNoExt(GetBufName (hbuf)) if(strlen(szFileName) == 0) { sz = ask("������ͷ�ļ���") szFileName = GetFileNameNoExt(sz) szExt = GetFileNameExt(szFileName) szPreH = toupper (szFileName) szPreH = cat("__",szPreH) szExt = toupper(szExt) szPreH = cat(szPreH,"_@szExt@__") } szPreH = toupper (szFileName) sz = cat(szFileName,".h") szPreH = cat("__",szPreH) szPreH = cat(szPreH,"_H__") hOutbuf = NewBuf(sz) // create output buffer if (hOutbuf == 0) stop //�������ű�ȡ�ú����� SetCurrentBuf(hOutbuf) isymMax = GetBufSymCount(hbuf) isym = 0 while (isym < isymMax) { isLastLine = 0 symbol = GetBufSymLocation(hbuf, isym) fIsEnd = 1 if(strlen(symbol) > 0) { if(symbol.Type == "Class Placeholder") { hsyml = SymbolChildren(symbol) cchild = SymListCount(hsyml) ichild = 0 szClassName = symbol.Symbol InsBufLine(hOutbuf, ln, "}") InsBufLine(hOutbuf, ln, "{") InsBufLine(hOutbuf, ln, "class @szClassName@") ln = ln + 2 while (ichild < cchild) { childsym = SymListItem(hsyml, ichild) childsym.Symbol = szClassName ln = CreateClassPrototype(hbuf,ln,childsym) ichild = ichild + 1 } SymListFree(hsyml) InsBufLine(hOutbuf, ln + 1, "") ln = ln + 2 } else if( symbol.Type == "Function" ) { ln = CreateFuncPrototype(hbuf,ln,"extern",symbol) } else if( symbol.Type == "Method" ) { szLine = GetBufline(hbuf,symbol.lnName) szClassName = GetLeftWord(szLine,symbol.ichName) symbol.Symbol = szClassName ln = CreateClassPrototype(hbuf,ln,symbol) } } isym = isym + 1 } InsertCPP(hOutbuf,0) HeadIfdefStr(szPreH) szContent = GetFileName(GetBufName (hbuf)) if(language == 0) { szContent = cat(szContent," ��ͷ�ļ�") //�����ļ�ͷ˵�� InsertFileHeaderCN(hOutbuf,0,szName,szContent) } else { szContent = cat(szContent," header file") //�����ļ�ͷ˵�� InsertFileHeaderEN(hOutbuf,0,szName,szContent) } } /***************************************************************************** �� �� �� : GetLeftWord �������� : ȡ����ߵĵ��� ������� : szLine ichRight ��ʼȡ��λ�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��7��05�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetLeftWord(szLine,ichRight) { if(ich == 0) { return "" } ich = ichRight while(ich > 0) { if( (szLine[ich] == " ") || (szLine[ich] == "\t") || ( szLine[ich] == ":") || (szLine[ich] == ".")) { ich = ich - 1 ichRight = ich } else { break } } while(ich > 0) { if(szLine[ich] == " ") { ich = ich + 1 break } ich = ich - 1 } return strmid(szLine,ich,ichRight) } /***************************************************************************** �� �� �� : CreateClassPrototype �������� : ����Class�Ķ��� ������� : hbuf ��ǰ�ļ� hOutbuf ����ļ� ln ����к� symbol ���� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��7��05�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CreateClassPrototype(hbuf,ln,symbol) { isLastLine = 0 fIsEnd = 1 hOutbuf = GetCurrentBuf() szLine = GetBufLine (hbuf, symbol.lnName) sline = symbol.lnFirst szClassName = symbol.Symbol ret = strstr(szLine,szClassName) if(ret == 0xffffffff) { return ln } szPre = strmid(szLine,0,ret) szLine = strmid(szLine,symbol.ichName,strlen(szLine)) szLine = cat(szPre,szLine) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) fIsEnd = RetVal.fIsEnd szNew = RetVal.szContent szLine = cat(" ",szLine) szNew = cat(" ",szNew) while((isLastLine == 0) && (sline < symbol.lnLim)) { i = 0 j = 0 iLen = strlen(szNew) while(i < iLen) { if(szNew[i]=="(") { j = j + 1; } else if(szNew[i]==")") { j = j - 1; if(j <= 0) { //��������ͷ���� isLastLine = 1 //ȥ����������ַ� szLine = strmid(szLine,0,i+1); szLine = cat(szLine,";") break } } i = i + 1 } InsBufLine(hOutbuf, ln, "@szLine@") ln = ln + 1 sline = sline + 1 if(isLastLine != 1) { //��������ͷ��û�н�����ȡһ�� szLine = GetBufLine (hbuf, sline) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) szNew = RetVal.szContent fIsEnd = RetVal.fIsEnd } } return ln } /***************************************************************************** �� �� �� : CreateFuncPrototype �������� : ����C����ԭ�Ͷ��� ������� : hbuf ��ǰ�ļ� hOutbuf ����ļ� ln ����к� szType ԭ������ symbol ���� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��7��05�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CreateFuncPrototype(hbuf,ln,szType,symbol) { isLastLine = 0 hOutbuf = GetCurrentBuf() szLine = GetBufLine (hbuf,symbol.lnName) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) szNew = RetVal.szContent fIsEnd = RetVal.fIsEnd szLine = cat("@szType@ ",szLine) szNew = cat("@szType@ ",szNew) sline = symbol.lnFirst while((isLastLine == 0) && (sline < symbol.lnLim)) { i = 0 j = 0 iLen = strlen(szNew) while(i < iLen) { if(szNew[i]=="(") { j = j + 1; } else if(szNew[i]==")") { j = j - 1; if(j <= 0) { //��������ͷ���� isLastLine = 1 //ȥ����������ַ� szLine = strmid(szLine,0,i+1); szLine = cat(szLine,";") break } } i = i + 1 } InsBufLine(hOutbuf, ln, "@szLine@") ln = ln + 1 sline = sline + 1 if(isLastLine != 1) { //��������ͷ��û�н�����ȡһ�� szLine = GetBufLine (hbuf, sline) szLine = cat(" ",szLine) //ȥ��ע�͵ĸ��� RetVal = SkipCommentFromString(szLine,fIsEnd) szNew = RetVal.szContent fIsEnd = RetVal.fIsEnd } } return ln } /***************************************************************************** �� �� �� : CreateNewHeaderFile �������� : ����һ���µ�ͷ�ļ����ļ��������� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CreateNewHeaderFile() { hbuf = GetCurrentBuf() language = getreg(LANGUAGE) if(language != 1) { language = 0 } szName = getreg(MYNAME) if(strlen( szName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } isymMax = GetBufSymCount(hbuf) isym = 0 ln = 0 //��õ�ǰû�к����ļ��� sz = ask("Please input header file name") szFileName = GetFileNameNoExt(sz) szExt = GetFileNameExt(sz) szPreH = toupper (szFileName) szPreH = cat("__",szPreH) szExt = toupper(szExt) szPreH = cat(szPreH,"_@szExt@__") hOutbuf = NewBuf(sz) // create output buffer if (hOutbuf == 0) stop SetCurrentBuf(hOutbuf) InsertCPP(hOutbuf,0) HeadIfdefStr(szPreH) szContent = GetFileName(GetBufName (hbuf)) if(language == 0) { szContent = cat(szContent," ��ͷ�ļ�") //�����ļ�ͷ˵�� InsertFileHeaderCN(hOutbuf,0,szName,szContent) } else { szContent = cat(szContent," header file") //�����ļ�ͷ˵�� InsertFileHeaderEN(hOutbuf,0,szName,szContent) } lnMax = GetBufLineCount(hOutbuf) if(lnMax > 9) { ln = lnMax - 9 } else { return } hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) sel.lnFirst = ln sel.ichFirst = 0 sel.ichLim = 0 SetBufIns(hOutbuf,ln,0) szType = Ask ("Please prototype type : extern or static") //�������ű�ȡ�ú����� while (isym < isymMax) { isLastLine = 0 symbol = GetBufSymLocation(hbuf, isym) fIsEnd = 1 if(strlen(symbol) > 0) { if(symbol.Type == "Class Placeholder") { hsyml = SymbolChildren(symbol) cchild = SymListCount(hsyml) ichild = 0 szClassName = symbol.Symbol InsBufLine(hOutbuf, ln, "}") InsBufLine(hOutbuf, ln, "{") InsBufLine(hOutbuf, ln, "class @szClassName@") ln = ln + 2 while (ichild < cchild) { childsym = SymListItem(hsyml, ichild) childsym.Symbol = szClassName ln = CreateClassPrototype(hbuf,ln,childsym) ichild = ichild + 1 } SymListFree(hsyml) InsBufLine(hOutbuf, ln + 1, "") ln = ln + 2 } else if( symbol.Type == "Function" ) { ln = CreateFuncPrototype(hbuf,ln,szType,symbol) } else if( symbol.Type == "Method" ) { szLine = GetBufline(hbuf,symbol.lnName) szClassName = GetLeftWord(szLine,symbol.ichName) symbol.Symbol = szClassName ln = CreateClassPrototype(hbuf,ln,symbol) } } isym = isym + 1 } sel.lnLast = ln SetWndSel(hwnd,sel) } /* G E T W O R D L E F T O F I C H */ /*------------------------------------------------------------------------- Given an index to a character (ich) and a string (sz), return a "wordinfo" record variable that describes the text word just to the left of the ich. Output: wordinfo.szWord = the word string wordinfo.ich = the first ich of the word wordinfo.ichLim = the limit ich of the word -------------------------------------------------------------------------*/ macro GetWordLeftOfIch(ich, sz) { wordinfo = "" // create a "wordinfo" structure chTab = CharFromAscii(9) // scan backwords over white space, if any ich = ich - 1; if (ich >= 0) while (sz[ich] == " " || sz[ich] == chTab) { ich = ich - 1; if (ich < 0) break; } // scan backwords to start of word ichLim = ich + 1; asciiA = AsciiFromChar("A") asciiZ = AsciiFromChar("Z") while (ich >= 0) { ch = toupper(sz[ich]) asciiCh = AsciiFromChar(ch) /* if ((asciiCh < asciiA || asciiCh > asciiZ) && !IsNumber(ch) && (ch != "#") ) break // stop at first non-identifier character */ //ֻ��ȡ�ַ���# { / *��Ϊ���� if ((asciiCh < asciiA || asciiCh > asciiZ) && !IsNumber(ch) && ( ch != "#" && ch != "{" && ch != "/" && ch != "*")) break; ich = ich - 1; } ich = ich + 1 wordinfo.szWord = strmid(sz, ich, ichLim) wordinfo.ich = ich wordinfo.ichLim = ichLim; return wordinfo } /***************************************************************************** �� �� �� : ReplaceBufTab �������� : �滻tabΪ�ո� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ReplaceBufTab() { hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) iTotalLn = GetBufLineCount (hbuf) nBlank = Ask("һ��Tab�滻�����ո�") if(nBlank == 0) { nBlank = 4 } szBlank = CreateBlankString(nBlank) ReplaceInBuf(hbuf,"\t",szBlank,0, iTotalLn, 1, 0, 0, 1) } /***************************************************************************** �� �� �� : ReplaceTabInProj �������� : �������������滻tabΪ�ո� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ReplaceTabInProj() { hprj = GetCurrentProj() ifileMax = GetProjFileCount (hprj) nBlank = Ask("һ��Tab�滻�����ո�") if(nBlank == 0) { nBlank = 4 } szBlank = CreateBlankString(nBlank) ifile = 0 while (ifile < ifileMax) { filename = GetProjFileName (hprj, ifile) hbuf = OpenBuf (filename) if(hbuf != 0) { iTotalLn = GetBufLineCount (hbuf) ReplaceInBuf(hbuf,"\t",szBlank,0, iTotalLn, 1, 0, 0, 1) } if( IsBufDirty (hbuf) ) { SaveBuf (hbuf) } CloseBuf(hbuf) ifile = ifile + 1 } } /***************************************************************************** �� �� �� : ReplaceInBuf �������� : �滻tabΪ�ո�,ֻ��2.1����Ч ������� : hbuf chOld chNew nBeg nEnd fMatchCase fRegExp fWholeWordsOnly fConfirm ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ReplaceInBuf(hbuf,chOld,chNew,nBeg,nEnd,fMatchCase, fRegExp, fWholeWordsOnly, fConfirm) { hwnd = GetCurrentWnd() if (hwnd == 0) stop hbuf = GetWndBuf(hwnd) sel = GetWndSel(hwnd) sel.ichLim = 0 sel.lnLast = 0 sel.ichFirst = sel.ichLim sel.lnFirst = sel.lnLast SetWndSel(hwnd, sel) LoadSearchPattern(chOld, 0, 0, 0); while(1) { Search_Forward selNew = GetWndSel(hwnd) if(sel == selNew) { break } SetBufSelText(hbuf, chNew) selNew.ichLim = selNew.ichFirst SetWndSel(hwnd, selNew) sel = selNew } } /***************************************************************************** �� �� �� : ConfigureSystem �������� : ����ϵͳ ������� : �� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ConfigureSystem() { szLanguage = ASK("Please select language: 0 Chinese ,1 English"); if(szLanguage == "#") { SetReg ("LANGUAGE", "0") } else { SetReg ("LANGUAGE", szLanguage) } szName = ASK("Please input your name"); if(szName == "#") { SetReg ("MYNAME", "") } else { SetReg ("MYNAME", szName) } } /***************************************************************************** �� �� �� : GetLeftBlank �������� : �õ��ַ�����ߵĿո��ַ��� ������� : szLine ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetLeftBlank(szLine) { nIdx = 0 nEndIdx = strlen(szLine) while( nIdx < nEndIdx ) { if( (szLine[nIdx] !=" ") && (szLine[nIdx] !="\t") ) { break; } nIdx = nIdx + 1 } return nIdx } /***************************************************************************** �� �� �� : ExpandBraceLittle �������� : С������չ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ExpandBraceLittle() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() if( (sel.lnFirst == sel.lnLast) && (sel.ichFirst == sel.ichLim) ) { SetBufSelText (hbuf, "( )") SetBufIns (hbuf, sel.lnFirst, sel.ichFirst + 2) } else { SetBufIns (hbuf, sel.lnFirst, sel.ichFirst) SetBufSelText (hbuf, "( ") SetBufIns (hbuf, sel.lnLast, sel.ichLim + 2) SetBufSelText (hbuf, " )") } } /***************************************************************************** �� �� �� : ExpandBraceMid �������� : ��������չ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ExpandBraceMid() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() if( (sel.lnFirst == sel.lnLast) && (sel.ichFirst == sel.ichLim) ) { SetBufSelText (hbuf, "[]") SetBufIns (hbuf, sel.lnFirst, sel.ichFirst + 1) } else { SetBufIns (hbuf, sel.lnFirst, sel.ichFirst) SetBufSelText (hbuf, "[") SetBufIns (hbuf, sel.lnLast, sel.ichLim + 1) SetBufSelText (hbuf, "]") } } /***************************************************************************** �� �� �� : ExpandBraceLarge �������� : ��������չ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��18�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ExpandBraceLarge() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst nlineCount = 0 retVal = "" szLine = GetBufLine( hbuf, ln ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); szRight = "" szMid = "" if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { //����û�п�ѡ��������ֱ�Ӳ���{}���� if( nLeft == strlen(szLine) ) { SetBufSelText (hbuf, "{") } else { ln = ln + 1 InsBufLine(hbuf, ln, "@szLeft@{") nlineCount = nlineCount + 1 } InsBufLine(hbuf, ln + 1, "@szLeft@ ") InsBufLine(hbuf, ln + 2, "@szLeft@}") nlineCount = nlineCount + 2 SetBufIns (hbuf, ln + 1, strlen(szLeft)+4) } else { //�����п�ѡ���������ÿ��ǽ���ѡ�����ֿ��� //���ѡ�������Ƿ��������ԣ������̫����ע�͵�������ж� RetVal= CheckBlockBrace(hbuf) if(RetVal.iCount != 0) { msg("Invalidated brace number") stop } //ȡ��ѡ����ǰ������ szOld = strmid(szLine,0,sel.ichFirst) if(sel.lnFirst != sel.lnLast) { //���ڶ��е���� //��һ�е�ѡ�в��� szMid = strmid(szLine,sel.ichFirst,strlen(szLine)) szMid = TrimString(szMid) szLast = GetBufLine(hbuf,sel.lnLast) if( sel.ichLim > strlen(szLast) ) { //���ѡ�������ȴ��ڸ��еij��ȣ����ȡ���еij��� szLineselichLim = strlen(szLast) } else { szLineselichLim = sel.ichLim } //�õ����һ��ѡ����Ϊ���ַ� szRight = strmid(szLast,szLineselichLim,strlen(szLast)) szRight = TrimString(szRight) } else { //����ѡ��ֻ��һ�е���� if(sel.ichLim >= strlen(szLine)) { sel.ichLim = strlen(szLine) } //���ѡ���������� szMid = strmid(szLine,sel.ichFirst,sel.ichLim) szMid = TrimString(szMid) if( sel.ichLim > strlen(szLine) ) { szLineselichLim = strlen(szLine) } else { szLineselichLim = sel.ichLim } //ͬ���õ�ѡ����������� szRight = strmid(szLine,szLineselichLim,strlen(szLine)) szRight = TrimString(szRight) } nIdx = sel.lnFirst while( nIdx < sel.lnLast) { szCurLine = GetBufLine(hbuf,nIdx+1) if( sel.ichLim > strlen(szCurLine) ) { szLineselichLim = strlen(szCurLine) } else { szLineselichLim = sel.ichLim } szCurLine = cat(" ",szCurLine) if(nIdx == sel.lnLast - 1) { //�������һ��Ӧ����ѡ�����ڵ����ݺ�����λ szCurLine = strmid(szCurLine,0,szLineselichLim + 4) PutBufLine(hbuf,nIdx+1,szCurLine) } else { //������������е����ݺ�����λ PutBufLine(hbuf,nIdx+1,szCurLine) } nIdx = nIdx + 1 } if(strlen(szRight) != 0) { //���������һ��û�б�ѡ������� InsBufLine(hbuf, sel.lnLast + 1, "@szLeft@@szRight@") } InsBufLine(hbuf, sel.lnLast + 1, "@szLeft@}") nlineCount = nlineCount + 1 if(nLeft < sel.ichFirst) { //���ѡ����ǰ�����ݲ��ǿո���Ҫ����ò������� PutBufLine(hbuf,ln,szOld) InsBufLine(hbuf, ln+1, "@szLeft@{") nlineCount = nlineCount + 1 ln = ln + 1 } else { //���ѡ����ǰû������ֱ��ɾ������ DelBufLine(hbuf,ln) InsBufLine(hbuf, ln, "@szLeft@{") } if(strlen(szMid) > 0) { //�����һ��ѡ���������� InsBufLine(hbuf, ln+1, "@szLeft@ @szMid@") nlineCount = nlineCount + 1 ln = ln + 1 } } retVal.szLeft = szLeft retVal.nLineCount = nlineCount //������������ߵĿհ� return retVal } /* macro ScanStatement(szLine,iBeg) { nIdx = 0 iLen = strlen(szLine) while(nIdx < iLen -1) { if(szLine[nIdx] == "/" && szLine[nIdx + 1] == "/") { return 0xffffffff } if(szLine[nIdx] == "/" && szLine[nIdx + 1] == "*") { while(nIdx < iLen) { if(szLine[nIdx] == "*" && szLine[nIdx + 1] == "/") { break } nIdx = nIdx + 1 } } if( (szLine[nIdx] != " ") && (szLine[nIdx] != "\t" )) { return nIdx } nIdx = nIdx + 1 } if( (szLine[iLen -1] == " ") || (szLine[iLen -1] == "\t" )) { return 0xffffffff } return nIdx } */ /* macro MoveCommentLeftBlank(szLine) { nIdx = 0 iLen = strlen(szLine) while(nIdx < iLen - 1) { if(szLine[nIdx] == "/" && szLine[nIdx+1] == "*") { szLine[nIdx] = " " szLine[nIdx + 1] = " " nIdx = nIdx + 2 while(nIdx < iLen - 1) { if(szLine[nIdx] != " " && szLine[nIdx] != "\t") { szLine[nIdx - 2] = "/" szLine[nIdx - 1] = "*" return szLine } nIdx = nIdx + 1 } } if(szLine[nIdx] == "/" && szLine[nIdx+1] == "/") { szLine[nIdx] = " " szLine[nIdx + 1] = " " nIdx = nIdx + 2 while(nIdx < iLen - 1) { if(szLine[nIdx] != " " && szLine[nIdx] != "\t") { szLine[nIdx - 2] = "/" szLine[nIdx - 1] = "/" return szLine } nIdx = nIdx + 1 } } nIdx = nIdx + 1 } return szLine }*/ /***************************************************************************** �� �� �� : DelCompoundStatement �������� : ɾ��һ��������� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro DelCompoundStatement() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst szLine = GetBufLine(hbuf,ln ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); Msg("@szLine@ will be deleted !") fIsEnd = 1 while(1) { RetVal = SkipCommentFromString(szLine,fIsEnd) szTmp = RetVal.szContent fIsEnd = RetVal.fIsEnd //���Ҹ������Ŀ�ʼ ret = strstr(szTmp,"{") if(ret != 0xffffffff) { szNewLine = strmid(szLine,ret+1,strlen(szLine)) szNew = strmid(szTmp,ret+1,strlen(szTmp)) szNew = TrimString(szNew) if(szNew != "") { InsBufLine(hbuf,ln + 1,"@szLeft@ @szNewLine@"); } sel.lnFirst = ln sel.lnLast = ln sel.ichFirst = ret sel.ichLim = ret //���Ҷ�Ӧ�Ĵ����� //ʹ���Լ���д�Ĵ����ٶ�̫�� retTmp = SearchCompoundEnd(hbuf,ln,ret) if(retTmp.iCount == 0) { DelBufLine(hbuf,retTmp.ln) sel.ichFirst = 0 sel.ichLim = 0 DelBufLine(hbuf,ln) sel.lnLast = retTmp.ln - 1 SetWndSel(hwnd,sel) Indent_Left } //ʹ��Si�Ĵ�������Է�������V2.1ʱ��ע��Ƕ��ʱ�������� /* SetWndSel(hwnd,sel) Block_Down selNew = GetWndSel(hwnd) if(selNew != sel) { DelBufLine(hbuf,selNew.lnFirst) sel.ichFirst = 0 sel.ichLim = 0 DelBufLine(hbuf,ln) sel.lnLast = selNew.lnFirst - 1 SetWndSel(hwnd,sel) Indent_Left }*/ break } szTmp = TrimString(szTmp) iLen = strlen(szTmp) if(iLen != 0) { if(szTmp[iLen-1] == ";") { break } } DelBufLine(hbuf,ln) if( ln == GetBufLineCount(hbuf )) { break } szLine = GetBufLine(hbuf,ln) } } /***************************************************************************** �� �� �� : CheckBlockBrace �������� : ��ⶨ����еĴ����������� ������� : hbuf ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CheckBlockBrace(hbuf) { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) ln = sel.lnFirst nCount = 0 RetVal = "" szLine = GetBufLine( hbuf, ln ) if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { RetVal.iCount = 0 RetVal.ich = sel.ichFirst return RetVal } if(sel.lnFirst == sel.lnLast && sel.ichFirst != sel.ichLim) { RetTmp = SkipCommentFromString(szLine,fIsEnd) szTmp = RetTmp.szContent RetVal = CheckBrace(szTmp,sel.ichFirst,sel.ichLim,"{","}",0,1) return RetVal } if(sel.lnFirst != sel.lnLast) { fIsEnd = 1 while(ln <= sel.lnLast) { if(ln == sel.lnFirst) { RetVal = CheckBrace(szLine,sel.ichFirst,strlen(szLine)-1,"{","}",nCount,fIsEnd) } else if(ln == sel.lnLast) { RetVal = CheckBrace(szLine,0,sel.ichLim,"{","}",nCount,fIsEnd) } else { RetVal = CheckBrace(szLine,0,strlen(szLine)-1,"{","}",nCount,fIsEnd) } fIsEnd = RetVal.fIsEnd ln = ln + 1 nCount = RetVal.iCount szLine = GetBufLine( hbuf, ln ) } } return RetVal } /***************************************************************************** �� �� �� : SearchCompoundEnd �������� : ����һ���������Ľ����� ������� : hbuf ln ��ѯ��ʼ�� ichBeg ��ѯ��ʼ�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro SearchCompoundEnd(hbuf,ln,ichBeg) { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) ln = sel.lnFirst nCount = 0 SearchVal = "" // szLine = GetBufLine( hbuf, ln ) lnMax = GetBufLineCount(hbuf) fIsEnd = 1 while(ln < lnMax) { szLine = GetBufLine( hbuf, ln ) RetVal = CheckBrace(szLine,ichBeg,strlen(szLine)-1,"{","}",nCount,fIsEnd) fIsEnd = RetVal.fIsEnd ichBeg = 0 nCount = RetVal.iCount //���nCount=0��˵��{}����Ե� if(nCount == 0) { break } ln = ln + 1 // szLine = GetBufLine( hbuf, ln ) } SearchVal.iCount = RetVal.iCount SearchVal.ich = RetVal.ich SearchVal.ln = ln return SearchVal } /***************************************************************************** �� �� �� : CheckBrace �������� : ������ŵ������� ������� : szLine �����ַ��� ichBeg �����ʼ ichEnd ������ chBeg ��ʼ�ַ�(������) chEnd �����ַ�(������) nCheckCount ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro CheckBrace(szLine,ichBeg,ichEnd,chBeg,chEnd,nCheckCount,isCommentEnd) { retVal = "" retVal.ich = 0 nIdx = ichBeg nLen = strlen(szLine) if(ichEnd >= nLen) { ichEnd = nLen - 1 } fIsEnd = 1 while(nIdx <= ichEnd) { //�����/*ע�����������ö� if( (isCommentEnd == 0) || (szLine[nIdx] == "/" && szLine[nIdx+1] == "*")) { fIsEnd = 0 while(nIdx <= ichEnd ) { if(szLine[nIdx] == "*" && szLine[nIdx+1] == "/") { nIdx = nIdx + 1 fIsEnd = 1 isCommentEnd = 1 break } nIdx = nIdx + 1 } if(nIdx > ichEnd) { break } } //�����//ע����ֹͣ���� if(szLine[nIdx] == "/" && szLine[nIdx+1] == "/") { break } if(szLine[nIdx] == chBeg) { nCheckCount = nCheckCount + 1 } if(szLine[nIdx] == chEnd) { nCheckCount = nCheckCount - 1 if(nCheckCount == 0) { retVal.ich = nIdx } } nIdx = nIdx + 1 } retVal.iCount = nCheckCount retVal.fIsEnd = fIsEnd return retVal } /***************************************************************************** �� �� �� : InsertElse �������� : ����else��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertElse() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) InsBufLine(hbuf, ln,szLeft) SetWndSel(hwnd,sel) } val = ExpandBraceLarge() szLeft = val.szLeft InsBufLine(hbuf, ln, "@szLeft@else") if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { PutBufLine(hbuf,ln+2, "@szLeft@ ") SetBufIns (hbuf, ln+2, strlen(szLeft)+4) return } SetBufIns (hbuf, ln, strlen(szLeft)+7) } /***************************************************************************** �� �� �� : InsertCase �������� : ����case��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertCase() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst szLine = GetBufLine( hbuf, ln ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); InsBufLine(hbuf, ln, "@szLeft@" # "case # :") InsBufLine(hbuf, ln + 1, "@szLeft@" # " " # "#") InsBufLine(hbuf, ln + 2, "@szLeft@" # " " # "break;") SearchForward() } /***************************************************************************** �� �� �� : InsertSwitch �������� : ����swich��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertSwitch() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst szLine = GetBufLine( hbuf, ln ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); InsBufLine(hbuf, ln, "@szLeft@switch ( # )") InsBufLine(hbuf, ln + 1, "@szLeft@" # "{") nSwitch = ask("������case�ĸ���") InsertMultiCaseProc(hbuf,szLeft,nSwitch) SearchForward() } /***************************************************************************** �� �� �� : InsertMultiCaseProc �������� : ������case ������� : hbuf szLeft nSwitch ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertMultiCaseProc(hbuf,szLeft,nSwitch) { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) ln = sel.lnFirst nIdx = 0 if(nSwitch == 0) { hNewBuf = newbuf("clip") if(hNewBuf == hNil) return SetCurrentBuf(hNewBuf) PasteBufLine (hNewBuf, 0) nLeftMax = 0 lnMax = GetBufLineCount(hNewBuf ) i = 0 fIsEnd = 1 while ( i < lnMax) { szLine = GetBufLine(hNewBuf , i) //��ȥ�������ע�͵����� RetVal = SkipCommentFromString(szLine,fIsEnd) szLine = RetVal.szContent fIsEnd = RetVal.fIsEnd // nLeft = GetLeftBlank(szLine) //�Ӽ�������ȡ��caseֵ szLine = GetSwitchVar(szLine) if(strlen(szLine) != 0 ) { ln = ln + 3 InsBufLine(hbuf, ln - 1, "@szLeft@ " # "case @szLine@:") InsBufLine(hbuf, ln , "@szLeft@ " # " " # "#") InsBufLine(hbuf, ln + 1, "@szLeft@ " # " " # "break;") } i = i + 1 } closebuf(hNewBuf) } else { while(nIdx < nSwitch) { ln = ln + 3 InsBufLine(hbuf, ln - 1, "@szLeft@ " # "case # :") InsBufLine(hbuf, ln , "@szLeft@ " # " " # "#") InsBufLine(hbuf, ln + 1, "@szLeft@ " # " " # "break;") nIdx = nIdx + 1 } } InsBufLine(hbuf, ln + 2, "@szLeft@ " # "default:") InsBufLine(hbuf, ln + 3, "@szLeft@ " # " " # "#") InsBufLine(hbuf, ln + 4, "@szLeft@" # "}") SetWndSel(hwnd, sel) SearchForward() } /***************************************************************************** �� �� �� : GetSwitchVar �������� : ��ö�١��궨��ȡ��caseֵ ������� : szLine ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetSwitchVar(szLine) { if( (szLine == "{") || (szLine == "}") ) { return "" } ret = strstr(szLine,"#define" ) if(ret != 0xffffffff) { szLine = strmid(szLine,ret + 8,strlen(szLine)) } szLine = TrimLeft(szLine) nIdx = 0 nLen = strlen(szLine) while( nIdx < nLen) { if((szLine[nIdx] == " ") || (szLine[nIdx] == ",") || (szLine[nIdx] == "=")) { szLine = strmid(szLine,0,nIdx) return szLine } nIdx = nIdx + 1 } return szLine } /* macro SkipControlCharFromString(szLine) { nLen = strlen(szLine) nIdx = 0 newStr = "" while(nIdx < nLen - 1) { if(szLine[nIdx] == "\t") { newStr = cat(newStr," ") } else if(szLine[nIdx] < " ") { newStr = cat(newStr," ") } else { newStr = cat(newStr," ") } } } */ /***************************************************************************** �� �� �� : SkipCommentFromString �������� : ȥ��ע�͵����ݣ���ע��������Ϊ�ո� ������� : szLine �����е����� isCommentEnd �Ƿ�ǰ�еĿ�ʼ�Ѿ���ע�ͽ����� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro SkipCommentFromString(szLine,isCommentEnd) { RetVal = "" fIsEnd = 1 nLen = strlen(szLine) nIdx = 0 while(nIdx < nLen ) { //�����ǰ�п�ʼ���DZ�ע�ͣ���������ע�Ϳ�ʼ�ı��ǣ�ע�����ݸ�Ϊ�ո� if( (isCommentEnd == 0) || (szLine[nIdx] == "/" && szLine[nIdx+1] == "*")) { fIsEnd = 0 while(nIdx < nLen ) { if(szLine[nIdx] == "*" && szLine[nIdx+1] == "/") { szLine[nIdx+1] = " " szLine[nIdx] = " " nIdx = nIdx + 1 fIsEnd = 1 isCommentEnd = 1 break } szLine[nIdx] = " " //����ǵ����ڶ��������һ��Ҳ�϶�����ע���� // if(nIdx == nLen -2 ) // { // szLine[nIdx + 1] = " " // } nIdx = nIdx + 1 } //����Ѿ�������β��ֹ���� if(nIdx == nLen) { break } } //�����������//��ע�͵�˵�����涼Ϊע�� if(szLine[nIdx] == "/" && szLine[nIdx+1] == "/") { szLine = strmid(szLine,0,nIdx) break } nIdx = nIdx + 1 } RetVal.szContent = szLine; RetVal.fIsEnd = fIsEnd return RetVal } /***************************************************************************** �� �� �� : InsertDo �������� : ����Do��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertDo() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) InsBufLine(hbuf, ln,szLeft) SetWndSel(hwnd,sel) } val = ExpandBraceLarge() szLeft = val.szLeft if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { PutBufLine(hbuf,ln+1, "@szLeft@ #") } PutBufLine(hbuf, sel.lnLast + val.nLineCount, "@szLeft@}while ( # );") // SetBufIns (hbuf, sel.lnLast + val.nLineCount, strlen(szLeft)+8) InsBufLine(hbuf, ln, "@szLeft@do") SearchForward() } /***************************************************************************** �� �� �� : InsertWhile �������� : ����While��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertWhile() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) InsBufLine(hbuf, ln,szLeft) SetWndSel(hwnd,sel) } val = ExpandBraceLarge() szLeft = val.szLeft InsBufLine(hbuf, ln, "@szLeft@while ( # )") if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { PutBufLine(hbuf,ln+2, "@szLeft@ #") } SetBufIns (hbuf, ln, strlen(szLeft)+7) SearchForward() } /***************************************************************************** �� �� �� : InsertFor �������� : ����for��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertFor() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) InsBufLine(hbuf, ln,szLeft) SetWndSel(hwnd,sel) } val = ExpandBraceLarge() szLeft = val.szLeft InsBufLine(hbuf, ln,"@szLeft@for ( # ; # ; # )") if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { PutBufLine(hbuf,ln+2, "@szLeft@ #") } sel.lnFirst = ln sel.lnLast = ln sel.ichFirst = 0 sel.ichLim = 0 SetWndSel(hwnd, sel) SearchForward() szVar = ask("������ѭ������") PutBufLine(hbuf,ln, "@szLeft@for ( @szVar@ = # ; @szVar@ # ; @szVar@++ )") SearchForward() } /***************************************************************************** �� �� �� : InsertIf �������� : ����If��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertIf() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() ln = sel.lnFirst if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) InsBufLine(hbuf, ln,szLeft) SetWndSel(hwnd,sel) } val = ExpandBraceLarge() szLeft = val.szLeft InsBufLine(hbuf, ln, "@szLeft@if ( # )") if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { PutBufLine(hbuf,ln+2, "@szLeft@ #") } // SetBufIns (hbuf, ln, strlen(szLeft)+4) SearchForward() } /***************************************************************************** �� �� �� : MergeString �������� : ���������е����ϲ���һ�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro MergeString() { hbuf = newbuf("clip") if(hbuf == hNil) return SetCurrentBuf(hbuf) PasteBufLine (hbuf, 0) //�����������û�����ݣ��� lnMax = GetBufLineCount(hbuf ) if( lnMax == 0 ) { closebuf(hbuf) return "" } lnLast = 0 if(lnMax > 1) { lnLast = lnMax - 1 i = lnMax - 1 } while ( i > 0) { szLine = GetBufLine(hbuf , i-1) szLine = TrimLeft(szLine) nLen = strlen(szLine) if(szLine[nLen - 1] == "-") { szLine = strmid(szLine,0,nLen - 1) } nLen = strlen(szLine) if( (szLine[nLen - 1] != " ") && (AsciiFromChar (szLine[nLen - 1]) <= 160)) { szLine = cat(szLine," ") } SetBufIns (hbuf, lnLast, 0) SetBufSelText(hbuf,szLine) i = i - 1 } szLine = GetBufLine(hbuf,lnLast) closebuf(hbuf) return szLine } /***************************************************************************** �� �� �� : ClearPrombleNo �������� : ������ⵥ�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ClearPrombleNo() { SetReg ("PNO", "") } /***************************************************************************** �� �� �� : AddPromblemNo �������� : ������ⵥ�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro AddPromblemNo() { szQuestion = ASK("Please Input problem number "); if(szQuestion == "#") { szQuestion = "" SetReg ("PNO", "") } else { SetReg ("PNO", szQuestion) } return szQuestion } /* this macro convet selected C++ coment block to C comment block for example: line " // aaaaa " convert to /* aaaaa */ */ /*macro ComentCPPtoC() { hwnd = GetCurrentWnd() lnFirst = GetWndSelLnFirst( hwnd ) lnLast = GetWndSelLnLast( hwnd ) lnCurrent = lnFirst fIsEnd = 1 while ( lnCurrent <= lnLast ) { fIsEnd = CmtCvtLine( lnCurrent,fIsEnd ) lnCurrent = lnCurrent + 1; } }*/ /***************************************************************************** �� �� �� : ComentCPPtoC �������� : ת��C++ע��ΪCע�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��7��02�� �� �� : ��ǿ ������ : �����ɺ���,֧�ֿ�ע�� *****************************************************************************/ macro ComentCPPtoC() { hwnd = GetCurrentWnd() hbuf = GetCurrentBuf() lnFirst = GetWndSelLnFirst( hwnd ) lnCurrent = lnFirst lnLast = GetWndSelLnLast( hwnd ) ch_comment = CharFromAscii(47) isCommentEnd = 1 isCommentContinue = 0 while ( lnCurrent <= lnLast ) { ich = 0 szLine = GetBufLine(hbuf,lnCurrent) ilen = strlen(szLine) while ( ich < ilen ) { if( (szLine[ich] != " ") && (szLine[ich] != "\t") ) { break } ich = ich + 1 } /*����ǿ��У���������*/ if(ich == ilen) { lnCurrent = lnCurrent + 1 szOldLine = szLine continue } /*�������ֻ��һ���ַ�*/ if(ich > ilen - 2) { if( isCommentContinue == 1 ) { szOldLine = cat(szOldLine," */") PutBufLine(hbuf,lnCurrent-1,szOldLine) isCommentContinue = 0 } lnCurrent = lnCurrent + 1 szOldLine = szLine continue } if( isCommentEnd == 1 ) { /*���������ע������*/ if(( szLine[ich]==ch_comment ) && (szLine[ich+1]==ch_comment)) { /* ȥ���м�Ƕ��ע�� */ nIdx = ich + 2 while ( nIdx < ilen -1 ) { if( (( szLine[nIdx] == "/" ) && (szLine[nIdx+1] == "*")|| ( szLine[nIdx] == "*" ) && (szLine[nIdx+1] == "/") ) { szLine[nIdx] = " " szLine[nIdx+1] = " " } nIdx = nIdx + 1 } if( isCommentContinue == 1 ) { /* �����������ע��*/ szLine[ich] = " " szLine[ich+1] = " " } else { /*�������������ע��������ע�͵Ŀ�ʼ*/ szLine[ich] = "/" szLine[ich+1] = "*" } if ( lnCurrent == lnLast ) { /*��������һ��������β��ӽ���ע�ͷ�*/ szLine = cat(szLine," */") isCommentContinue = 0 } /*���¸���*/ PutBufLine(hbuf,lnCurrent,szLine) isCommentContinue = 1 szOldLine = szLine lnCurrent = lnCurrent + 1 continue } else { /*������е���ʼ����//ע��*/ if( isCommentContinue == 1 ) { szOldLine = cat(szOldLine," */") PutBufLine(hbuf,lnCurrent-1,szOldLine) isCommentContinue = 0 } } } while ( ich < ilen - 1 ) { //�����/*ע�����������ö� if( (isCommentEnd == 0) || (szLine[ich] == "/" && szLine[ich+1] == "*")) { isCommentEnd = 0 while(ich < ilen - 1 ) { if(szLine[ich] == "*" && szLine[ich+1] == "/") { ich = ich + 1 isCommentEnd = 1 break } ich = ich + 1 } if(ich >= ilen - 1) { break } } if(( szLine[ich]==ch_comment ) && (szLine[ich+1]==ch_comment)) { /* �����//ע��*/ isCommentContinue = 1 nIdx = ich //ȥ���ڼ��/* �� */ע�ͷ��������ע��Ƕ�״��� while ( nIdx < ilen -1 ) { if( (( szLine[nIdx] == "/" ) && (szLine[nIdx+1] == "*")|| ( szLine[nIdx] == "*" ) && (szLine[nIdx+1] == "/") ) { szLine[nIdx] = " " szLine[nIdx+1] = " " } nIdx = nIdx + 1 } szLine[ich+1] = "*" if( lnCurrent == lnLast ) { szLine = cat(szLine," */") } PutBufLine(hbuf,lnCurrent,szLine) break } ich = ich + 1 } szOldLine = szLine lnCurrent = lnCurrent + 1 } } macro ComentLine() { hwnd = GetCurrentWnd() hbuf = GetCurrentBuf() lnFirst = GetWndSelLnFirst( hwnd ) lnCurrent = lnFirst lnLast = GetWndSelLnLast( hwnd ) lnOld = 0 while ( lnCurrent <= lnLast ) { szLine = GetBufLine(hbuf,lnCurrent) DelBufLine(hbuf,lnCurrent) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); szLine = TrimString(szLine) ilen = strlen(szLine) if(iLen == 0) { continue } nIdx = 0 //ȥ���ڼ��/* �� */ע�ͷ��������ע��Ƕ�״��� while ( nIdx < ilen -1 ) { if( (( szLine[nIdx] == "/" ) && (szLine[nIdx+1] == "*")|| ( szLine[nIdx] == "*" ) && (szLine[nIdx+1] == "/") ) { szLine[nIdx] = " " szLine[nIdx+1] = " " } nIdx = nIdx + 1 } szLine = cat("/* ",szLine) lnOld = lnCurrent lnCurrent = CommentContent(hbuf,lnCurrent,szLeft,szLine,1) lnLast = lnCurrent - lnOld + lnLast lnCurrent = lnCurrent + 1 } } /***************************************************************************** �� �� �� : CmtCvtLine �������� : ��//ת����/*ע�� ������� : lnCurrent ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : �� �� : ������ : 2.�� �� : 2008��7��02�� �� �� : ��ǿ ������ : ����ע��Ƕ�������������� *****************************************************************************/ macro CmtCvtLine(lnCurrent, isCommentEnd) { hbuf = GetCurrentBuf() szLine = GetBufLine(hbuf,lnCurrent) ch_comment = CharFromAscii(47) ich = 0 ilen = strlen(szLine) fIsEnd = 1 iIsComment = 0; while ( ich < ilen - 1 ) { //�����/*ע�����������ö� if( (isCommentEnd == 0) || (szLine[ich] == "/" && szLine[ich+1] == "*")) { fIsEnd = 0 while(ich < ilen - 1 ) { if(szLine[ich] == "*" && szLine[ich+1] == "/") { ich = ich + 1 fIsEnd = 1 isCommentEnd = 1 break } ich = ich + 1 } if(ich >= ilen - 1) { break } } if(( szLine[ich]==ch_comment ) && (szLine[ich+1]==ch_comment)) { nIdx = ich while ( nIdx < ilen -1 ) { if( (( szLine[nIdx] == "/" ) && (szLine[nIdx+1] == "*")|| ( szLine[nIdx] == "*" ) && (szLine[nIdx+1] == "/") ) { szLine[nIdx] = " " szLine[nIdx+1] = " " } nIdx = nIdx + 1 } szLine[ich+1] = "*" szLine = cat(szLine," */") DelBufLine(hbuf,lnCurrent) InsBufLine(hbuf,lnCurrent,szLine) return fIsEnd } ich = ich + 1 } return fIsEnd } /***************************************************************************** �� �� �� : GetFileNameExt �������� : �õ��ļ���չ�� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFileNameExt(sz) { i = 1 j = 0 szName = sz iLen = strlen(sz) if(iLen == 0) return "" while( i <= iLen) { if(sz[iLen-i] == ".") { j = iLen-i szExt = strmid(sz,j + 1,iLen) return szExt } i = i + 1 } return "" } /***************************************************************************** �� �� �� : GetFileNameNoExt �������� : �õ�������û����չ�� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFileNameNoExt(sz) { i = 1 szName = sz iLen = strlen(sz) j = iLen if(iLen == 0) return "" while( i <= iLen) { if(sz[iLen-i] == ".") { j = iLen-i } if( sz[iLen-i] == "\\" ) { szName = strmid(sz,iLen-i+1,j) return szName } i = i + 1 } szName = strmid(sz,0,j) return szName } /***************************************************************************** �� �� �� : GetFileName �������� : �õ�����չ�����ļ��� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetFileName(sz) { i = 1 szName = sz iLen = strlen(sz) if(iLen == 0) return "" while( i <= iLen) { if(sz[iLen-i] == "\\") { szName = strmid(sz,iLen-i+1,iLen) break } i = i + 1 } return szName } /***************************************************************************** �� �� �� : InsIfdef �������� : ����#ifdef��� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsIfdef() { sz = Ask("Enter #ifdef condition:") if (sz != "") IfdefStr(sz); } /***************************************************************************** �� �� �� : InsIfndef �������� : ��ifndef���Բ������ڵ��ú� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsIfndef() { sz = Ask("Enter #ifndef condition:") if (sz != "") IfndefStr(sz); } /***************************************************************************** �� �� �� : InsertCPP �������� : ��buf�в���C���Ͷ��� ������� : hbuf ln ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertCPP(hbuf,ln) { InsBufLine(hbuf, ln, "") InsBufLine(hbuf, ln, "#endif /* __cplusplus */") InsBufLine(hbuf, ln, "#endif") InsBufLine(hbuf, ln, "extern \"C\"{") InsBufLine(hbuf, ln, "#if __cplusplus") InsBufLine(hbuf, ln, "#ifdef __cplusplus") InsBufLine(hbuf, ln, "") iTotalLn = GetBufLineCount (hbuf) InsBufLine(hbuf, iTotalLn, "") InsBufLine(hbuf, iTotalLn, "#endif /* __cplusplus */") InsBufLine(hbuf, iTotalLn, "#endif") InsBufLine(hbuf, iTotalLn, "}") InsBufLine(hbuf, iTotalLn, "#if __cplusplus") InsBufLine(hbuf, iTotalLn, "#ifdef __cplusplus") InsBufLine(hbuf, iTotalLn, "") } /***************************************************************************** �� �� �� : ReviseCommentProc �������� : ���ⵥ������� ������� : hbuf ln szCmd szMyName szLine1 ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro ReviseCommentProc(hbuf,ln,szCmd,szMyName,szLine1) { if (szCmd == "ap") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = AddPromblemNo() InsBufLine(hbuf, ln, "@szLine1@/* �� �� ��: @szQuestion@ ����:@szMyName@, ʱ��:@sz@-@szMonth@-@szDay@ "); szContent = Ask("��ԭ��") szLeft = cat(szLine1," ��ԭ��: "); if(strlen(szLeft) > 70) { Msg("The right margine is small, Please use a new line") stop } ln = CommentContent(hbuf,ln + 1,szLeft,szContent,1) return } else if (szCmd == "ab") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "ae") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* add end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "db") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "de") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln + 0) InsBufLine(hbuf, ln, "@szLine1@/* delete end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } else if (szCmd == "mb") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) szQuestion = GetReg ("PNO") if(strlen(szQuestion) > 0) { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ */"); } else { InsBufLine(hbuf, ln, "@szLine1@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } return } else if (szCmd == "me") { SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } DelBufLine(hbuf, ln) InsBufLine(hbuf, ln, "@szLine1@/* modify end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); return } } /***************************************************************************** �� �� �� : InsertReviseAdd �������� : ���������ע�Ͷ� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertReviseAdd() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) } else { szLine = GetBufLine( hbuf, sel.lnFirst ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); } szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ */"); } else { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* add begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"; } if(sel.lnLast < lnMax - 1) { InsBufLine(hbuf, sel.lnLast + 2, "@szLeft@/* add end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { AppendBufLine(hbuf, "@szLeft@/* add end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } SetBufIns(hbuf,sel.lnFirst + 1,strlen(szLeft)) } /***************************************************************************** �� �� �� : InsertReviseDel �������� : ����ɾ����ע�Ͷ� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertReviseDel() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) } else { szLine = GetBufLine( hbuf, sel.lnFirst ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); } szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@*/"); } else { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* delete begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } if(sel.lnLast < lnMax - 1) { InsBufLine(hbuf, sel.lnLast + 2, "@szLeft@/* delete end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { AppendBufLine(hbuf, "@szLeft@/* delete end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } SetBufIns(hbuf,sel.lnFirst + 1,strlen(szLeft)) } /***************************************************************************** �� �� �� : InsertReviseMod �������� : ������ע�Ͷ� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertReviseMod() { hwnd = GetCurrentWnd() sel = GetWndSel(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } SysTime = GetSysTime(1) sz=SysTime.Year sz1=SysTime.month sz3=SysTime.day if (sz1 < 10) { szMonth = "0@sz1@" } else { szMonth = sz1 } if (sz3 < 10) { szDay = "0@sz3@" } else { szDay = sz3 } //�õ������ѡ���ַ����Ŀհײ��֣�������szLeft��,Ŀ���DZ�֤���� if(sel.lnFirst == sel.lnLast && sel.ichFirst == sel.ichLim) { szLeft = CreateBlankString(sel.ichFirst) } else { szLine = GetBufLine( hbuf, sel.lnFirst ) nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); } szQuestion = GetReg ("PNO") if(strlen(szQuestion)>0) { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@, Mantis��:@szQuestion@ */"); } else { InsBufLine(hbuf, sel.lnFirst, "@szLeft@/* modify begin by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } if(sel.lnLast < lnMax - 1) { InsBufLine(hbuf, sel.lnLast + 2, "@szLeft@/* modify end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } else { AppendBufLine(hbuf, "@szLeft@/* modif end by @szMyName@, @sz@-@szMonth@-@szDay@ */"); } SetBufIns(hbuf,sel.lnFirst + 1,strlen(szLeft)) } // Wrap ifdef <sz> .. endif around the current selection macro IfdefStr(sz) { hwnd = GetCurrentWnd() lnFirst = GetWndSelLnFirst(hwnd) lnLast = GetWndSelLnLast(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) if(lnMax != 0) { szLine = GetBufLine( hbuf, lnFirst ) } nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); hbuf = GetCurrentBuf() if(lnLast + 1 < lnMax) { InsBufLine(hbuf, lnLast+1, "@szLeft@#endif /* @sz@ */") } else if(lnLast + 1 == lnMax) { AppendBufLine(hbuf, "@szLeft@#endif /* @sz@ */") } else { AppendBufLine(hbuf, "") AppendBufLine(hbuf, "@szLeft@#endif /* @sz@ */") } InsBufLine(hbuf, lnFirst, "@szLeft@#ifdef @sz@") SetBufIns(hbuf,lnFirst + 1,strlen(szLeft)) } /***************************************************************************** �� �� �� : IfndefStr �������� : ���룣ifndef���� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro IfndefStr(sz) { hwnd = GetCurrentWnd() lnFirst = GetWndSelLnFirst(hwnd) lnLast = GetWndSelLnLast(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) if(lnMax != 0) { szLine = GetBufLine( hbuf, lnFirst ) } nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); hbuf = GetCurrentBuf() if(lnLast + 1 < lnMax) { InsBufLine(hbuf, lnLast+1, "@szLeft@#endif /* @sz@ */") } else if(lnLast + 1 == lnMax) { AppendBufLine(hbuf, "@szLeft@#endif /* @sz@ */") } else { AppendBufLine(hbuf, "") AppendBufLine(hbuf, "@szLeft@#endif /* @sz@ */") } InsBufLine(hbuf, lnFirst, "@szLeft@#ifndef @sz@") SetBufIns(hbuf,lnFirst + 1,strlen(szLeft)) } /***************************************************************************** �� �� �� : InsertPredefIf �������� : ���룣if���Ե���ڵ��ú� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro InsertPredefIf() { sz = Ask("Enter #if condition:") PredefIfStr(sz) } /***************************************************************************** �� �� �� : PredefIfStr �������� : ��ѡ����ǰ����룣if���� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro PredefIfStr(sz) { hwnd = GetCurrentWnd() lnFirst = GetWndSelLnFirst(hwnd) lnLast = GetWndSelLnLast(hwnd) hbuf = GetCurrentBuf() lnMax = GetBufLineCount(hbuf) if(lnMax != 0) { szLine = GetBufLine( hbuf, lnFirst ) } nLeft = GetLeftBlank(szLine) szLeft = strmid(szLine,0,nLeft); hbuf = GetCurrentBuf() if(lnLast + 1 < lnMax) { InsBufLine(hbuf, lnLast+1, "@szLeft@#endif /* #if @sz@ */") } else if(lnLast + 1 == lnMax) { AppendBufLine(hbuf, "@szLeft@#endif /* #if @sz@ */") } else { AppendBufLine(hbuf, "") AppendBufLine(hbuf, "@szLeft@#endif /* #if @sz@ */") } InsBufLine(hbuf, lnFirst, "@szLeft@#if @sz@") SetBufIns(hbuf,lnFirst + 1,strlen(szLeft)) } /***************************************************************************** �� �� �� : HeadIfdefStr �������� : ��ѡ����ǰ�����#ifdef���� ������� : sz ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro HeadIfdefStr(sz) { hwnd = GetCurrentWnd() lnFirst = GetWndSelLnFirst(hwnd) hbuf = GetCurrentBuf() InsBufLine(hbuf, lnFirst, "") InsBufLine(hbuf, lnFirst, "#define @sz@") InsBufLine(hbuf, lnFirst, "#ifndef @sz@") iTotalLn = GetBufLineCount (hbuf) InsBufLine(hbuf, iTotalLn, "#endif /* @sz@ */") InsBufLine(hbuf, iTotalLn, "") } /***************************************************************************** �� �� �� : GetSysTime �������� : ȡ��ϵͳʱ�䣬ֻ��V2.1ʱ���� ������� : a ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��24�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetSysTime(a) { //��sidateȡ��ʱ�� RunCmd ("sidate") SysTime="" SysTime.Year=getreg(Year) if(strlen(SysTime.Year)==0) { setreg(Year,"2008") setreg(Month,"05") setreg(Day,"02") SysTime.Year="2008" SysTime.month="05" SysTime.day="20" SysTime.Date="2008��05��20��" } else { SysTime.Month=getreg(Month) SysTime.Day=getreg(Day) SysTime.Date=getreg(Date) /* SysTime.Date=cat(SysTime.Year,"��") SysTime.Date=cat(SysTime.Date,SysTime.Month) SysTime.Date=cat(SysTime.Date,"��") SysTime.Date=cat(SysTime.Date,SysTime.Day) SysTime.Date=cat(SysTime.Date,"��")*/ } return SysTime } /***************************************************************************** �� �� �� : HeaderFileCreate �������� : ����ͷ�ļ� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro HeaderFileCreate() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) hbuf = GetWndBuf(hwnd) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } CreateFunctionDef(hbuf,szMyName,language) } /***************************************************************************** �� �� �� : FunctionHeaderCreate �������� : ���ɺ���ͷ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro FunctionHeaderCreate() { hwnd = GetCurrentWnd() if (hwnd == 0) stop sel = GetWndSel(hwnd) ln = sel.lnFirst hbuf = GetWndBuf(hwnd) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } nVer = GetVersion() lnMax = GetBufLineCount(hbuf) if(ln != lnMax) { szNextLine = GetBufLine(hbuf,ln) if( (strstr(szNextLine,"(") != 0xffffffff) || (nVer != 2 )) { symbol = GetCurSymbol() if(strlen(symbol) != 0) { if(language == 0) { FuncHeadCommentCN(hbuf, ln, symbol, szMyName,0) } else { FuncHeadCommentEN(hbuf, ln, symbol, szMyName,0) } return } } } if(language == 0 ) { szFuncName = Ask("�����뺯������:") FuncHeadCommentCN(hbuf, ln, szFuncName, szMyName, 1) } else { szFuncName = Ask("Please input function name") FuncHeadCommentEN(hbuf, ln, szFuncName, szMyName, 1) } } /***************************************************************************** �� �� �� : GetVersion �������� : �õ�Si�İ汾�� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetVersion() { Record = GetProgramInfo () return Record.versionMajor } /***************************************************************************** �� �� �� : GetProgramInfo �������� : ��ó�����Ϣ��V2.1���� ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro GetProgramInfo () { Record = "" Record.versionMajor = 2 Record.versionMinor = 1 return Record } /***************************************************************************** �� �� �� : FileHeaderCreate �������� : �����ļ�ͷ ������� : �� �� �� ֵ : ���ú��� : �������� : ����ʷ : 1.�� �� : 2008��6��19�� �� �� : ��ǿ ������ : �����ɺ��� *****************************************************************************/ macro FileHeaderCreate() { hwnd = GetCurrentWnd() if (hwnd == 0) stop ln = 0 hbuf = GetWndBuf(hwnd) language = getreg(LANGUAGE) if(language != 1) { language = 0 } szMyName = getreg(MYNAME) if(strlen( szMyName ) == 0) { szMyName = Ask("Enter your name:") setreg(MYNAME, szMyName) } SetBufIns (hbuf, 0, 0) if(language == 0) { InsertFileHeaderCN( hbuf,ln, szMyName,"" ) } else { InsertFileHeaderEN( hbuf,ln, szMyName,"" ) } }
2、将上述个宏函数拷贝到sourceinsight的base工程的utils.em中
3、option->Key Assignments中,找到对应的宏函数,添加快捷键
4、头文件注释将在鼠标位置添加,函数注释将出现在函数上方