2009년 6월 30일 화요일

soruce insight macro : OpenSourceHeader()

이전에 C파일에서 H파일 H파일에서 C파일로 토클 되는 macro를 만든 적이 있다.
개발 소스 환경이 바뀌어 include 디렉토리가 따로 관리되다 보니 C/H가 같은 경로에 있지 않아
적용 되지 않았다.
소스 인사이트에 풀패스를 주지 않아도 되기 때문에 아래와 같이 업글 하였다.
pos 는 .에 위치
pos2는 백슬래쉬에 위치를 찾아
파일이름만 뜯어 내서 거기에 확장자를 붙여 열어 주니 된다.

macro OpenSourceHeader()
{
hbuf = GetCurrentBuf()

bufFileName = tolower(GetBufName(hbuf))
pos = strlen(bufFileName)-1
pos2 = strlen(bufFileName)-1
while(bufFileName[pos] != ".")
pos = pos -1

while(bufFileName[pos2] != "\\") //<--추가된 곳
pos2= pos2 -1


szFileNameOnly = strmid(bufFileName,pos2+1,pos) //<--이름만 얻는다.

szFileExt = strmid(bufFileName, pos + 1, strlen(bufFileName))

if (szFileExt =="c" || szFileExt=="cpp" || szFileExt=="cxx" )
{
openbufFileName = cat(szFileNameOnly , ".h")

hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hpp")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".hxx")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
Msg(openbufFileName)
return
}

SetCurrentBuf (hopenbuf)

}
else if (szFileExt=="h" || szFileExt=="hpp" || szFileExt=="hxx")
{

openbufFileName = cat(szFileNameOnly , ".c")

hopenbuf = OpenBuf(openbufFileName)
if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cpp")
hopenbuf = OpenBuf(openbufFileName)
}

if (hopenbuf == hNil)
{
openbufFileName = cat(szFileNameOnly , ".cxxx")
hopenbuf = OpenBuf(openbufFileName)
}


if (hopenbuf == hNil)
{
Msg(openbufFileName)
return
}

SetCurrentBuf (hopenbuf)


}

}

댓글 없음: