  
  [1X2 [33X[0;0YFunctionality provided by the [5Xprofiling[105X[101X[1X package[133X[101X
  
  
  [1X2.1 [33X[0;0YReading line-by-line profiles[133X[101X
  
  [1X2.1-1 ReadLineByLineProfile[101X
  
  [33X[1;0Y[29X[2XReadLineByLineProfile[102X( [3Xfilename[103X ) [32X function[133X
  
  [33X[0;0YRead [3Xfilename[103X, a line-by-line profile which was previously generated by [5XGAP[105X,
  using    the    [2XProfileLineByLine[102X    ([14XReference:    ProfileLineByLine[114X)    or
  [2XCoverageLineByLine[102X  ([14XReference: CoverageLineByLine[114X) functions from core [5XGAP[105X.
  A  parsed profile can be transformed into a human-readable form using either
  [2XOutputAnnotatedCodeCoverageFiles[102X ([14X2.3-1[114X) or [2XOutputFlameGraph[102X ([14X2.2-1[114X)[133X
  
  [1X2.1-2 MergeLineByLineProfiles[101X
  
  [33X[1;0Y[29X[2XMergeLineByLineProfiles[102X( [3Xfilenames[103X ) [32X function[133X
  
  [33X[0;0YRead  [3Xfilenames[103X,  a  list  of  line-by-line  profiles  which were previously
  generated by [5XGAP[105X, using the [2XProfileLineByLine[102X ([14XReference: ProfileLineByLine[114X)
  or  [2XCoverageLineByLine[102X  ([14XReference:  CoverageLineByLine[114X) functions from core
  [5XGAP[105X.  The elements of [3Xfilenames[103X can be either filenames, or files previously
  parsed by [2XReadLineByLineProfile[102X ([14X2.1-1[114X).[133X
  
  
  [1X2.2 [33X[0;0YGenerating flame graphs[133X[101X
  
  [33X[0;0YA 'flame graph' is a method of visualising where time is spent by a program.[133X
  
  [1X2.2-1 OutputFlameGraph[101X
  
  [33X[1;0Y[29X[2XOutputFlameGraph[102X( [3Xprofile[103X[, [3Xfilename[103X][, [3Xoptions[103X] ) [32X function[133X
  
  [33X[0;0YGenerate  an  'svg'  file  which  represents  a  'flame  graph', a method of
  visualising where time is spent by a program.[133X
  
  [33X[0;0Y[3Xprofile[103X  should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X), or a string giving the filename of a profile.[133X
  
  [33X[0;0YThe  flame  graph  will  be  written to [3Xfilename[103X (or returned as a string if
  [3Xfilename[103X is not present).[133X
  
  [33X[0;0YThe final (optional) argument is a record of options. Currently, the allowed
  options  are  'squash'  (which  is  a  boolean).  If  'squash'  is true then
  recursive  functions  calls  will  be  squashed,  so the graph will not show
  recursive  functions calling themselves. The other allowed option is 'type',
  which  can  be  "default"  (a  standard  flamegraph), "reverse" (reverse the
  graph, showing the leaf functions first), and "chart" (where the graph shows
  the  flow of time from left-to-right, rather than merging all calls from one
  function to another into one block).[133X
  
  [1X2.2-2 OutputFlameGraphInput[101X
  
  [33X[1;0Y[29X[2XOutputFlameGraphInput[102X( [3Xprofile[103X[, [3Xfilename[103X] ) [32X function[133X
  
  [33X[0;0YGenerate the input required to draw a 'flame graph', a method of visualising
  where time is spent by a program. One program for drawing flame graphs using
  this output can be found at [7Xhttps://github.com/brendangregg/FlameGraph[107X.[133X
  
  [33X[0;0Y[3Xprofile[103X  should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X), or a string giving the filename of a profile.[133X
  
  [33X[0;0YThe  flame  graph input will be written to [3Xfilename[103X (or returned as a string
  if [3Xfilename[103X is not present).[133X
  
  
  [1X2.3 [33X[0;0YGenerating coverage reports[133X[101X
  
  [1X2.3-1 OutputAnnotatedCodeCoverageFiles[101X
  
  [33X[1;0Y[29X[2XOutputAnnotatedCodeCoverageFiles[102X( [3Xcoverage[103X[, [3Xindir[103X], [3Xoutdir[103X[, [3Xoptions[103X] ) [32X function[133X
  
  [33X[0;0YTakes  a previously generated profile and outputs HTML which shows the lines
  of  code  that were executed, and (if this was originally recorded) how long
  was spent executing these lines of code.[133X
  
  [33X[0;0Y[3Xcoverage[103X should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X),  or  a  string giving the filename of a profile which will first be
  read with [11XReadLineByLineProfile[111X.[133X
  
  [33X[0;0YFiles will be written to the directory [3Xoutdir[103X.[133X
  
  [33X[0;0YThe  optional  second  argument  gives  a  filter,  only  information  about
  filenames starting with [3Xindir[103X will be outputted.[133X
  
  [33X[0;0YThe  final  optional argument is a record of configuration options. The only
  currently  allowed  option  is  'title', which will set the title of created
  pages.[133X
  
  [1X2.3-2 OutputJsonCoverage[101X
  
  [33X[1;0Y[29X[2XOutputJsonCoverage[102X( [3Xcoverage[103X, [3Xoutfile[103X ) [32X function[133X
  
  [33X[0;0YTakes  a previously generated profile and outputs a json coverage file which
  is amongst other things accepted by [7Xcodecov.io[107X.[133X
  
  [33X[0;0Y[3Xcoverage[103X should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X),  or  a  string giving the filename of a profile which will first be
  read with [11XReadLineByLineProfile[111X.[133X
  
  [33X[0;0YThe output will be written to the file with name [3Xoutfile[103X (a string).[133X
  
  [1X2.3-3 OutputLcovCoverage[101X
  
  [33X[1;0Y[29X[2XOutputLcovCoverage[102X( [3Xcoverage[103X, [3Xoutfile[103X ) [32X function[133X
  
  [33X[0;0YTakes a previously generated profile and outputs an lcov coverage file.[133X
  
  [33X[0;0Y[3Xcoverage[103X should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X),  or  the  filename  of  a  profile  which  will  first be read with
  [11XReadLineByLineProfile[111X.[133X
  
  [33X[0;0YThe output will be written to the file with name [3Xoutfile[103X (a string).[133X
  
  [1X2.3-4 OutputCoverallsJsonCoverage[101X
  
  [33X[1;0Y[29X[2XOutputCoverallsJsonCoverage[102X( [3Xcoverage[103X, [3Xoutfile[103X, [3Xpathtoremove[103X[, [3Xopt[103X] ) [32X function[133X
  
  [33X[0;0YTakes  a previously generated profile and outputs a json coverage file which
  is accepted by [7Xcoveralls.io[107X.[133X
  
  [33X[0;0Y[3Xcoverage[103X should be either a profile previously read by [2XReadLineByLineProfile[102X
  ([14X2.1-1[114X),  or  a  string giving the filename of a profile which will first be
  read  with  [11XReadLineByLineProfile[111X.  [3Xpathtoremove[103X  is  the path to the tested
  repository; this path prefix will be removed from all filenames in [3Xcoverage[103X.
  Finally, [3Xopt[103X is a record. Its key/value pairs are directly inserted into the
  produced JSON, in the form of a JSON dictionary. This can be used to set the
  [10Xservice_name[110X,  [10Xservice_job_id[110X, and more. If this record is not given, we try
  to  guess  the  correct  values  based  on  the  environment (currently only
  supported for Travis and AppVeyor).[133X
  
  [33X[0;0YThe output will be written to the file with name [3Xoutfile[103X (a string).[133X
  
  
  [1X2.4 [33X[0;0YMiscellaneous[133X[101X
  
  [1X2.4-1 LineByLineProfileFunction[101X
  
  [33X[1;0Y[29X[2XLineByLineProfileFunction[102X( [3Xfunction[103X, [3Xarguments[103X ) [32X function[133X
  
  [33X[0;0YCalls  [3Xfunction[103X  with  the  list  of  arguments  [3Xarguments[103X, and opens a time
  profile of the resulting call in the default web browser.[133X
  
  [1X2.4-2 ProfileFile[101X
  
  [33X[1;0Y[29X[2XProfileFile[102X( [3Xfile[103X[, [3Xopts[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya string[133X
  
  [33X[0;0YTests  the  file  with name [3Xfile[103X in another [5XGAP[105X session, and produces a code
  coverage  report  of  lines  that were executed in the process. If [3Xfile[103X ends
  with [10X.tst[110X it will be called with [10XTest[110X; otherwise, it will be run directly.[133X
  
  [33X[0;0YThe  optional  argument  [3Xopts[103X should be a record, and may contain any of the
  following components:[133X
  
  [30X    [33X[0;6Y[10Xoutdir[110X:  a  string denoting the directory into which the HTML files of
        the report will be placed (a temporary directory by default);[133X
  
  [30X    [33X[0;6Y[10Xindir[110X: a string such that only file paths beginning with [10Xindir[110X will be
        profiled (default [10X""[110X);[133X
  
  [30X    [33X[0;6Y[10XshowOutput[110X:  a  boolean  denoting  whether to print test output to the
        screen (default [9Xtrue[109X);[133X
  
  [30X    [33X[0;6Y[10Xopen[110X:  a  boolean denoting whether to open the report in a web browser
        on completion (default [9Xfalse[109X).[133X
  
  [33X[0;0YThis function returns the location of an HTML file containing the report.[133X
  
  [1X2.4-3 ProfilePackage[101X
  
  [33X[1;0Y[29X[2XProfilePackage[102X( [3Xpkg_name[103X[, [3Xopts[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Ya string[133X
  
  [33X[0;0YIf  [3Xpkg_name[103X  is  the  name of an installed package, then this function runs
  that  package's  test  suite  and  produces a report on the code coverage of
  files  inside  the  package.  The string returned denotes the location of an
  HTML file containing the report. The optional argument [3Xopts[103X behaves the same
  as in [2XProfileFile[102X ([14X2.4-2[114X).[133X
  
