Wich is best way for list harbour standard function & class?Basically to way: read all source prg & clipper a binary way detect class & function
folowing first way i have get // get from a public post of [email protected] at comp.lang.xharbour follow source at http://groups.google.it/group/comp.lang.xharbour/browse_thread/thread/bf616f29c1ce42a5/d52da4275c05dfed?hl=it&ie=UTF-8&q=cRegExClassTran#d52da4275c05dfed but not able to convert becase i don't know has anybody have alternative? #include "common.ch" #include 'Inkey.ch' #include 'fileio.ch' #include 'hbeol.ch' static aFuncsName:={} static cRegExHbFunc static cRegExFunc static cRegExClass static *cRegExClassTran* static cRegExFunctionTran static cRegExFuncTran static cRegExHb_FuncTran init procedure RegexCompiEgb default cRegExHbFunc to Hb_RegExComp('(?i)^\s*HB_FUNC\s*\ (') default cRegExFunc to Hb_RegExComp('(?i)^\s*(FUNCTION| FUNC)') default cRegExClass to Hb_RegExComp('(?i)^\s*CLASS\s{1,}') default *cRegExClassTran* to Hb_RegExComp('(?i)^CLASS') default cRegExFunctionTran to Hb_RegExComp('(?i)^FUNCTION') default cRegExFuncTran to Hb_RegExComp('(?i)^FUNC') default cRegExHb_FuncTran to Hb_RegExComp('(?i)^HB_FUNC\(') return func Main GetFromPatch({'c:\hbb\source\'},'std') GetFromPatch({'c:\hbb\contrib\firebird\',; 'c:\hbb\contrib\mysql\',; 'c:\hbb\contrib\pgsql\',; 'c:\hbb\contrib\rddads\'; },'Dbases') GetFromPatch({'c:\hbb\contrib\cgilib\',; 'c:\hbb\contrib\freeimage\',; 'c:\hbb\contrib\gd\',; 'c:\hbb\contrib\gtwvw\',; 'c:\hbb\contrib\hbcurl\',; 'c:\hbb\contrib\hbzlib\',; 'c:\hbb\contrib\libnf\',; 'c:\hbb\contrib\pdflib\',; 'c:\hbb\contrib\tp_\',; 'c:\hbb\contrib\unicode\',; 'c:\hbb\contrib\what32\',; 'c:\hbb\contrib\wvtgiu\',; 'c:\hbb\contrib\xwt\',; 'c:\hbb\contrib\xwt2\'; },'contrib') return 0 procedure GetFromPatch(acPatch,cFileName,lClearFile) local aDirs local i local FHandleRead local FHandleWrite local FHandleWriteF local nMode aFuncsName:={} default lClearFile to TRUE if lClearFile nMode:=FO_CREAT | FO_READWRITE | FO_TRUNC else nMode:=FO_CREAT | FO_READWRITE endif aDirs:={} for i:=1 to Len(acPatch) aDirs:AddAll(DirectoryRecurse(acPatch[i]+'*.c','D')) aDirs:AddAll(DirectoryRecurse(acPatch[i]+'*.prg','D')) next for i:=1 to Len(aDirs) AAdd(aDirs[i],HB_REGEXSPLIT('\\',aDirs[i,1])) AAdd(aDirs[i],Len(aDirs[i,6])) next aDirs:=ASort(aDirs,,,<|x,y| local i local nRetVal nRetVal:=FALSE for i:=1 to Min(x[7],y[7]) if x[6,i] < y[6,i] return TRUE elseif x[6,i] > y[6,i] return FALSE endif next return TRUE >) FHandleWrite:=FOPEN(cFileName+'ws.funcs',nMode) FSeek(FHandleWrite,0,FS_END) FHandleWriteF:=FOPEN(cFileName+'.funcs',nMode) FSeek(FHandleWriteF,0,FS_END) for i:=1 to Len(aDirs) FHandleRead:=FOpen(aDirs[i,1]) GenFuncs(FHandleRead,FHandleWrite,aDirs[i,1]) FClose(FHandleRead) next FClose(FHandleWrite) stdFuncs(aFuncsName) aFuncsName:=ASort(aFuncsName) for i:=1 to Len(aFuncsName) FWrite(FHandleWriteF,aFuncsName[i]+EOL_WINDOWS) next FClose(FHandleWriteF) return procedure stdFuncs(aFuncsName) local i for i:=1 to Len(aFuncsName) aFuncsName[i]:=StrTran(aFuncsName[i]," ",'') if aFuncsName[i] HAS *cRegExClassTran* aFuncsName[i]:="CLASS "+SubStr(aFuncsName[i],6) elseif aFuncsName[i] HAS cRegExFunctionTran aFuncsName[i]:="FUNCTION "+SubStr(aFuncsName[i],9) elseif aFuncsName[i] HAS cRegExFuncTran aFuncsName[i]:="FUNCTION "+SubStr(aFuncsName[i],5) elseif aFuncsName[i] HAS cRegExHb_FuncTran aFuncsName[i]:="FUNCTION "+SubStr(aFuncsName[i],9) endif next return proc GenFuncs(FHandleRead,FHandleWrite,cFileNameOpened) local aMaches local cBuffer local lAddLine local lFileSaved:=FALSE do while HB_FREADLINE( FHandleRead, @cBuffer)=0 lAddLine:=FALSE if cBuffer HAS cRegExHbFunc lAddLine:=TRUE elseif cBuffer HAS cRegExFunc lAddLine:=TRUE elseif cBuffer HAS cRegExClass lAddLine:=TRUE endif if lAddLine AAdd(aFuncsName,cBuffer) if !lFileSaved FWrite(FHandleWrite,Space(70)+cFileNameOpened+EOL_WINDOWS) lFileSaved:=TRUE endif FWrite(FHandleWrite,cBuffeR+EOL_WINDOWS) endif enddo return -- Massimo Belgrano
_______________________________________________ Harbour mailing list [email protected] http://lists.harbour-project.org/mailman/listinfo/harbour
