(root)/
binutils-2.41/
gprof/
source.h
       1  /* source.h
       2  
       3     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       4  
       5     This file is part of GNU Binutils.
       6  
       7     This program is free software; you can redistribute it and/or modify
       8     it under the terms of the GNU General Public License as published by
       9     the Free Software Foundation; either version 3 of the License, or
      10     (at your option) any later version.
      11  
      12     This program is distributed in the hope that it will be useful,
      13     but WITHOUT ANY WARRANTY; without even the implied warranty of
      14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      15     GNU General Public License for more details.
      16  
      17     You should have received a copy of the GNU General Public License
      18     along with this program; if not, write to the Free Software
      19     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      20     MA 02110-1301, USA.  */
      21  
      22  #ifndef source_h
      23  #define source_h
      24  
      25  typedef struct source_file
      26    {
      27      struct source_file *next;
      28      const char *name;		/* Name of source file.  */
      29      unsigned long ncalls;	/* # of "calls" to this file.  */
      30      int num_lines;		/* # of lines in file.  */
      31      int nalloced;		/* Number of lines allocated.  */
      32      void **line;		/* Usage-dependent per-line data.  */
      33    }
      34  Source_File;
      35  
      36  /* Options.  */
      37  
      38  /* Create annotated output files?  */
      39  extern bool create_annotation_files;
      40  
      41  /* List of directories to search for source files.  */
      42  extern Search_List src_search_list;
      43  
      44  /* Chain of source-file descriptors.  */
      45  extern Source_File *first_src_file;
      46  
      47  /* Returns pointer to source file descriptor for PATH/FILENAME.  */
      48  extern Source_File *source_file_lookup_path (const char *);
      49  extern Source_File *source_file_lookup_name (const char *);
      50  
      51  /* Read source file SF output annotated source.  The annotation is at
      52     MAX_WIDTH characters wide and for each source-line an annotation is
      53     obtained by invoking function ANNOTE.  ARG is an argument passed to
      54     ANNOTE that is left uninterpreted by annotate_source().
      55  
      56     Returns a pointer to the output file (which maybe stdout) such
      57     that summary statistics can be printed.  If the returned file
      58     is not stdout, it should be closed when done with it.  */
      59  extern FILE *annotate_source
      60    (Source_File *sf, unsigned int max_width,
      61  	   void (*annote) (char *, unsigned int, int, void *),
      62  	   void *arg);
      63  #endif /* source_h */