diff options
Diffstat (limited to 'sim/igen/lf.h')
-rw-r--r-- | sim/igen/lf.h | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/sim/igen/lf.h b/sim/igen/lf.h new file mode 100644 index 00000000000..e968f5f6cb6 --- /dev/null +++ b/sim/igen/lf.h @@ -0,0 +1,143 @@ +/* This file is part of the program psim. + + Copyright (C) 1994-1997, Andrew Cagney <cagney@highland.com.au> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + */ + + +/* LF: Line Numbered Output Stream */ + +typedef struct _lf lf; + +typedef enum { + lf_is_h, + lf_is_c, + lf_is_text, +} lf_file_type; + + +typedef enum { + lf_include_references, + lf_omit_references, +} lf_file_references; + + +/* Open the file NAME for writing ("-" for stdout). Use REAL_NAME + when refering to the opened file. Line number information (in the + output) can be suppressed with FILE_REFERENCES == + LF_OMIT_REFERENCES. TYPE is to determine the formatting of some of + the print messages below. */ + +extern lf *lf_open +(char *name, + char *real_name, + lf_file_references file_references, + lf_file_type type, + const char *program); + +extern void lf_close +(lf *file); + + +/* Basic output functions */ + +extern int lf_write +(lf *file, + const char *string, + int len); + +extern int lf_putchr +(lf *file, + const char ch); + +extern int lf_putstr +(lf *file, + const char *string); + +extern int lf_putint +(lf *file, + int decimal); + +extern int lf_putbin +(lf *file, + int decimal, + int width); + +extern int lf_printf +(lf *file, + const char *fmt, + ...) __attribute__((format(printf, 2, 3))); + + +/* Indentation control. + + lf_indent_suppress suppresses indentation on the next line (current + line if that has not yet been started) */ + +extern void lf_indent_suppress +(lf *file); + +extern void lf_indent +(lf *file, + int delta); + + +/* Print generic text: */ + + +extern int lf_print__gnu_copyleft +(lf *file); + +extern int lf_print__file_start +(lf *file); + +extern int lf_print__this_file_is_empty +(lf *file, + const char *reason); + +extern int lf_print__file_finish +(lf *file); + +extern int lf_print__internal_ref +(lf *file); + +extern int lf_print__external_ref +(lf *file, + int line_nr, + const char *file_name); + +extern int lf_print__line_ref +(lf *file, + line_ref *line); + +extern int lf_print__ucase_filename +(lf *file); + +extern int lf_print__function_type +(lf *file, + const char *type, + const char *prefix, + const char *trailing_space); + +typedef int print_function(lf *file); + +extern int lf_print__function_type_function +(lf *file, + print_function *print_type, + const char *prefix, + const char *trailing_space); + |