1 // -*- C++ -*- 2 /* Copyright (C) 1989, 1990, 1991, 1992, 2001, 2004 3 Free Software Foundation, Inc. 4 Written by James Clark (jjc@jclark.com) 5 6 This file is part of groff. 7 8 groff is free software; you can redistribute it and/or modify it under 9 the terms of the GNU General Public License as published by the Free 10 Software Foundation; either version 2, or (at your option) any later 11 version. 12 13 groff is distributed in the hope that it will be useful, but WITHOUT ANY 14 WARRANTY; without even the implied warranty of MERCHANTABILITY or 15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16 for more details. 17 18 You should have received a copy of the GNU General Public License along 19 with groff; see the file COPYING. If not, write to the Free Software 20 Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ 21 22 #include "lib.h" 23 24 #include <stdlib.h> 25 #include <assert.h> 26 #include <errno.h> 27 28 #include "errarg.h" 29 #include "error.h" 30 #include "stringclass.h" 31 #include "cset.h" 32 #include "cmap.h" 33 34 #include "defs.h" 35 36 unsigned hash_string(const char *, int); 37 int next_size(int); 38 39 extern string capitalize_fields; 40 extern string reverse_fields; 41 extern string abbreviate_fields; 42 extern string period_before_last_name; 43 extern string period_before_initial; 44 extern string period_before_hyphen; 45 extern string period_before_other; 46 extern string sort_fields; 47 extern int annotation_field; 48 extern string annotation_macro; 49 extern string discard_fields; 50 extern string articles; 51 extern int abbreviate_label_ranges; 52 extern string label_range_indicator; 53 extern int date_as_label; 54 extern string join_authors_exactly_two; 55 extern string join_authors_last_two; 56 extern string join_authors_default; 57 extern string separate_label_second_parts; 58 extern string et_al; 59 extern int et_al_min_elide; 60 extern int et_al_min_total; 61 62 extern int compatible_flag; 63 64 extern int set_label_spec(const char *); 65 extern int set_date_label_spec(const char *); 66 extern int set_short_label_spec(const char *); 67 68 extern int short_label_flag; 69 70 void clear_labels(); 71 void command_error(const char *, 72 const errarg &arg1 = empty_errarg, 73 const errarg &arg2 = empty_errarg, 74 const errarg &arg3 = empty_errarg); 75 76 class reference; 77 78 void compute_labels(reference **, int); 79