1/* This file is part of the program psim. 2 3 Copyright (C) 1994-1995, Andrew Cagney <cagney@highland.com.au> 4 5 This program is free software; you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 2 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program; if not, write to the Free Software 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 19 */ 20 21 22/* LF: Line Numbered Output Stream */ 23 24typedef struct _lf lf; 25 26typedef enum { 27 lf_is_h, 28 lf_is_c, 29 lf_is_text, 30} lf_file_type; 31 32 33typedef enum { 34 lf_include_references, 35 lf_omit_references, 36} lf_file_references; 37 38 39/* Open the file NAME for writing. REAL_NAME is to be included in any 40 line number outputs. The output of line number information can be 41 suppressed with LINE_NUMBERS */ 42 43extern lf *lf_open 44(char *name, 45 char *real_name, 46 lf_file_references file_references, 47 lf_file_type type, 48 const char *program); 49 50extern void lf_close 51(lf *file); 52 53 54/* Basic output functions */ 55 56extern int lf_putchr 57(lf *file, 58 const char ch); 59 60extern int lf_putstr 61(lf *file, 62 const char *string); 63 64extern int lf_putint 65(lf *file, 66 int decimal); 67 68extern int lf_putbin 69(lf *file, 70 int decimal, 71 int width); 72 73extern int lf_printf 74(lf *file, 75 const char *fmt, 76 ...) __attribute__((format(printf, 2, 3))); 77 78 79/* Indentation control. 80 81 lf_indent_suppress suppresses indentation on the next line (current 82 line if that has not yet been started) */ 83 84extern void lf_indent_suppress 85(lf *file); 86 87extern void lf_indent 88(lf *file, 89 int delta); 90 91 92/* Print generic text: */ 93 94 95extern int lf_print__gnu_copyleft 96(lf *file); 97 98extern int lf_print__file_start 99(lf *file); 100 101extern int lf_print__this_file_is_empty 102(lf *file); 103 104extern int lf_print__file_finish 105(lf *file); 106 107extern int lf_print__internal_reference 108(lf *file); 109 110extern int lf_print__external_reference 111(lf *file, 112 int line_nr, 113 const char *file_name); 114 115extern int lf_print__ucase_filename 116(lf *file); 117 118/* Tab prefix is suppressed */ 119 120extern int lf_print__c_code 121(lf *file, 122 const char *code); 123 124 125extern int lf_print_function_type 126(lf *file, 127 const char *type, 128 const char *prefix, 129 const char *trailing_space); 130