#include "common.h" ////////////////////////// // ブレークポイント ////////////////////////// CDBBreakPoint *pobj_DBBreakPoint; CFileBreakPoint::CFileBreakPoint(char *lpszFileName,int iLineNum){ this->lpszFileName=(char *)HeapAlloc(hHeap,0,lstrlen(lpszFileName)+1); lstrcpy(this->lpszFileName,lpszFileName); piLine=(int *)HeapAlloc(hHeap,0,sizeof(int)); piLine[0]=iLineNum; num=1; } CFileBreakPoint::~CFileBreakPoint(){ HeapDefaultFree(lpszFileName); HeapDefaultFree(piLine); } void CFileBreakPoint::add(int iLineNum){ piLine=(int *)HeapReAlloc(hHeap,0,piLine,(num+1)*sizeof(int)); piLine[num]=iLineNum; num++; } void CFileBreakPoint::remove(int iLineNum){ int i; for(i=0;i=num) break; } } } CDBBreakPoint::CDBBreakPoint(){ ppItem=(CFileBreakPoint **)HeapAlloc(hHeap,0,1); num=0; HANDLE hFile; char temporary[MAX_PATH]; GetTempPath(MAX_PATH,temporary); if(temporary[lstrlen(temporary)-1]!='\\') lstrcat(temporary,"\\"); lstrcat(temporary,"ab_breakpoint.tmp"); //未完成 sprintf(temporary,"%sab_breakpoint.tmp",BasicSystemDir); char *buffer; buffer=(char *)HeapAlloc(hHeap,0,65535); hFile=CreateFile(temporary,GENERIC_READ,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); if(hFile!=INVALID_HANDLE_VALUE){ DWORD dwAccBytes; ReadFile(hFile,buffer,MAX_PATH,&dwAccBytes,NULL); CloseHandle(hFile); buffer[dwAccBytes]=0; } else buffer[0]=0; int i=0,i2; char szFilePath[MAX_PATH]; while(buffer[i]){ //ファイルパス i=GetOneParameter(buffer,i,szFilePath); RemoveStringQuotes(szFilePath); while(buffer[i]!='\n'&&buffer[i]!='\0'){ //行番号 i=GetOneParameter(buffer,i,temporary); i2=atoi(temporary); insert(szFilePath,i2); } while(buffer[i]=='\n') i++; if(buffer[i]=='\0') break; } HeapDefaultFree(buffer); } CDBBreakPoint::~CDBBreakPoint(){ int i; for(i=0;ilpszFileName,lpszFileName)==0){ ppItem[i]->add(iLineNum); return; } } if(i==num){ ppItem=(CFileBreakPoint **)HeapReAlloc(hHeap,0,ppItem,(num+1)*sizeof(CFileBreakPoint *)); ppItem[num]=new CFileBreakPoint(lpszFileName,iLineNum); num++; } } void CDBBreakPoint::remove(char *lpszFileName,int iLineNum){ int i; for(i=0;ilpszFileName)==0){ ppItem[i]->remove(iLineNum); break; } } if(i==num) return; if(ppItem[i]->num==0){ delete ppItem[i]; num--; for(;iupdate(buffer); } return buffer; }