math: Improve comments.
[pspp] / src / math / sort.h
1 /* PSPP - a program for statistical analysis.
2    Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17 #ifndef MATH_SORT_H
18 #define MATH_SORT_H 1
19
20 /* Support for sorting cases.
21
22    Use sort_create_writer() to sort cases in the most general way:
23
24    - Create a casewriter with sort_create_writer(), specifying the sort
25      criteria.
26    - Write all of the cases to be sorted to the casewriter, e.g. with
27      casewriter_write().
28    - Obtain the sorted results with casewriter_make_reader().
29
30   sort_execute() and sort_execute_1var() are shortcuts for situations where the
31   cases are already available from a casereader.
32
33   All of these functions can efficiently sort data bigger than memory. */
34
35 struct subcase;
36 struct caseproto;
37 struct variable;
38
39 extern int min_buffers ;
40 extern int max_buffers ;
41
42 struct casewriter *sort_create_writer (const struct subcase *,
43                                        const struct caseproto *);
44 struct casereader *sort_execute (struct casereader *, const struct subcase *);
45 struct casereader *sort_execute_1var (struct casereader *,
46                                       const struct variable *);
47
48 #endif /* math/sort.h */