Table of Contents
Scripts > CountSLOC
Script contents// Author: A. Torpy // Updated: 14 Jul 2011 // select directory to scan dirsel DS dirsel.Init &DS NULL if <not <EditUI &DS "Select directory">> return 0 endif string DirName set DirName <dirsel.GetPathA &DS> // count .cpp files varlist filels set filels <file.FindFile DirName "*.cpp" 0> if <not <varlist.nItems &filels>> return 0 endif // also count .c files varlist ls2 set ls2 <file.FindFile DirName "*.c" 0> if <varlist.nItems &ls2> if <not <varlist.Append &filels &ls2>> return 0 endif endif // also count .h files set ls2 <file.FindFile DirName "*.h" 0> if <varlist.nItems &ls2> if <not <varlist.Append &filels &ls2>> return 0 endif endif // also count .def files set ls2 <file.FindFile DirName "*.def" 0> if <varlist.nItems &ls2> if <not <varlist.Append &filels &ls2>> return 0 endif endif // ...and finally, .zs files set ls2 <file.FindFile DirName "*.zs" 0> if <varlist.nItems &ls2> if <not <varlist.Append &filels &ls2>> return 0 endif endif int nFiles set nFiles <varlist.nItems &filels> int64 nLines set nLines 0 progbox pb progbox.ShowWnd2 &pb 0x5 int i set i 0 do // get filename from list hvar hString set hString <varlist.GetItemI &filels i> progbox.SetTitle &pb <strcat "Processing file " <file.TrimDir *hString>> if <not <progbox.SetProgress &pb i nFiles>> return 0 endif // echo filename to event log echo *hString // open file voidptr fp if <not <fopen_s fp *hString "r">> return 0 endif // prepare variables int64 nLinesInFile set nLinesInFile 0 bool IsLineEmpty set IsLineEmpty true int c // begin reading char by char do set c <fgetc fp> // read a character if <iseq c '\n'> // newline found; increment counter if line isn't empty if <not IsLineEmpty> incr nLines incr nLinesInFile endif set IsLineEmpty true // reset flag elseif <iseq c '\r'> // ignore carriage returns // do nothing elseif <iseq c '\t'> // ignore tabs // do nothing elseif <iseq c ' '> // ignore spaces // do nothing else set IsLineEmpty false // otherwise, the line is valid endif while <not <iseq c -1>> // -1 == EOF // close file fclose fp // echo count in file to event log echo <strcat " > " <strcat nLinesInFile " lines in file">> while <islt <incr i> nFiles> // echo count in all files to event log echo <strcat nLines " lines in total"> CommentsNone. Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Share Alike 3.0 Unported
|