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