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;
-#if !defined (__attribute__) && (!defined(__GNUC__) || __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
-#define __attribute__(arg)
-#endif
/* Open the file NAME for writing. REAL_NAME is to be included in any
line number outputs. The output of line number information can be
suppressed with LINE_NUMBERS */
+
extern lf *lf_open
(char *name,
char *real_name,
- int number_lines);
+ lf_file_references file_references,
+ lf_file_type type,
+ const char *program);
extern void lf_close
(lf *file);
-/* Suppress indentation for the next new line (current if not yet
- started) */
-extern void lf_indent_suppress
-(lf *file);
+/* Basic output functions */
-extern void lf_putchr
+extern int lf_putchr
(lf *file,
const char ch);
-extern void lf_putstr
+extern int lf_putstr
(lf *file,
const char *string);
-extern void lf_putint
+extern int lf_putint
(lf *file,
int decimal);
-extern void lf_printf
+extern int lf_putbin
+(lf *file,
+ int decimal,
+ int width);
+
+extern int lf_printf
(lf *file,
const char *fmt,
...) __attribute__((format(printf, 2, 3)));
-extern void lf_print_lf_c_line_nr
+
+/* 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);
-extern void lf_print_copyleft
+
+/* Print generic text: */
+
+
+extern int lf_print__gnu_copyleft
(lf *file);
-extern void lf_print_binary
+extern int lf_print__file_start
+(lf *file);
+
+extern int lf_print__this_file_is_empty
+(lf *file);
+
+extern int lf_print__file_finish
+(lf *file);
+
+extern int lf_print__internal_reference
+(lf *file);
+
+extern int lf_print__external_reference
(lf *file,
- int decimal,
- int width);
+ int line_nr,
+ const char *file_name);
-/* it is assumed that each line of code is prefixed by a tab character
- that should be suppressed */
-extern void lf_print_c_code
+extern int lf_print__ucase_filename
+(lf *file);
+
+/* Tab prefix is suppressed */
+
+extern int lf_print__c_code
(lf *file,
- char *code);
+ const char *code);
-extern void lf_print_c_line_nr
+extern int lf_print_function_type
(lf *file,
- int line_nr,
- char *file_name);
+ const char *type,
+ const char *prefix,
+ const char *trailing_space);