1/**
2 * @file symbol_sort.h
3 * Sorting symbols
4 *
5 * @remark Copyright 2002, 2003 OProfile authors
6 * @remark Read the file COPYING
7 *
8 * @author Philippe Elie
9 * @author John Levon
10 */
11
12#ifndef SYMBOL_SORT_H
13#define SYMBOL_SORT_H
14
15#include "symbol.h"
16
17#include <vector>
18#include <string>
19
20struct sort_options {
21	enum sort_order {
22		// order give sort order if caller doesn't specify one
23		first,
24		sample = first,
25		image,
26		app_name,
27		symbol,
28		debug,
29		vma,
30		last
31	};
32
33	sort_options() {}
34
35	void add_sort_option(std::string const & name);
36	void add_sort_option(sort_order order);
37
38	/**
39	 * Sort the given container by the given criteria.
40	 */
41	void sort(symbol_collection & syms, bool reverse_sort,
42	          bool long_filenames) const;
43
44	/**
45	 * Sort the given container by the given criteria.
46	 */
47	void sort(diff_collection & syms, bool reverse_sort,
48	          bool long_filenames) const;
49
50	std::vector<sort_order> options;
51};
52
53#endif // SYMBOL_SORT_H
54