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 6This file is part of groff. 7 8groff is free software; you can redistribute it and/or modify it under 9the terms of the GNU General Public License as published by the Free 10Software Foundation; either version 2, or (at your option) any later 11version. 12 13groff is distributed in the hope that it will be useful, but WITHOUT ANY 14WARRANTY; without even the implied warranty of MERCHANTABILITY or 15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16for more details. 17 18You should have received a copy of the GNU General Public License along 19with groff; see the file COPYING. If not, write to the Free Software 20Foundation, 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 36unsigned hash_string(const char *, int); 37int next_size(int); 38 39extern string capitalize_fields; 40extern string reverse_fields; 41extern string abbreviate_fields; 42extern string period_before_last_name; 43extern string period_before_initial; 44extern string period_before_hyphen; 45extern string period_before_other; 46extern string sort_fields; 47extern int annotation_field; 48extern string annotation_macro; 49extern string discard_fields; 50extern string articles; 51extern int abbreviate_label_ranges; 52extern string label_range_indicator; 53extern int date_as_label; 54extern string join_authors_exactly_two; 55extern string join_authors_last_two; 56extern string join_authors_default; 57extern string separate_label_second_parts; 58extern string et_al; 59extern int et_al_min_elide; 60extern int et_al_min_total; 61 62extern int compatible_flag; 63 64extern int set_label_spec(const char *); 65extern int set_date_label_spec(const char *); 66extern int set_short_label_spec(const char *); 67 68extern int short_label_flag; 69 70void clear_labels(); 71void command_error(const char *, 72 const errarg &arg1 = empty_errarg, 73 const errarg &arg2 = empty_errarg, 74 const errarg &arg3 = empty_errarg); 75 76class reference; 77 78void compute_labels(reference **, int); 79