18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file symbol_sort.h
38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Sorting symbols
48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2002, 2003 OProfile authors
68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING
78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author Philippe Elie
98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon
108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef SYMBOL_SORT_H
138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define SYMBOL_SORT_H
148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include "symbol.h"
168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <vector>
188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string>
198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstruct sort_options {
218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	enum sort_order {
228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		// order give sort order if caller doesn't specify one
238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		first,
248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		sample = first,
258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		image,
268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		app_name,
278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		symbol,
288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		debug,
298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		vma,
308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd		last
318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	};
328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	sort_options() {}
348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	void add_sort_option(std::string const & name);
368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	void add_sort_option(sort_order order);
378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/**
398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	 * Sort the given container by the given criteria.
408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	 */
418cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	void sort(symbol_collection & syms, bool reverse_sort,
428cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	          bool long_filenames) const;
438cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
448cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/**
458cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	 * Sort the given container by the given criteria.
468cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	 */
478cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	void sort(diff_collection & syms, bool reverse_sort,
488cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	          bool long_filenames) const;
498cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
508cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	std::vector<sort_order> options;
518cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
528cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
538cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif // SYMBOL_SORT_H
54