src/sortlist_type.h
author glx
Mon, 19 May 2008 15:13:58 +0000
branchnoai
changeset 10645 8cbdb511a674
child 10731 67db0d431d5e
child 10776 07203fc29812
permissions -rw-r--r--
(svn r13189) [NoAI] -Sync: with trunk r13055:13185.
/* $Id$ */

/** @file sortlist_type.h Base types for having sorted lists in GUIs. */

#ifndef SORTLIST_TYPE_H
#define SORTLIST_TYPE_H

enum SortListFlags {
	VL_NONE    = 0,      ///< no sort
	VL_DESC    = 1 << 0, ///< sort descending or ascending
	VL_RESORT  = 1 << 1, ///< instruct the code to resort the list in the next loop
	VL_REBUILD = 1 << 2, ///< create sort-listing to use for qsort and friends
	VL_END     = 1 << 3,
};
DECLARE_ENUM_AS_BIT_SET(SortListFlags);

struct Listing {
	bool order;    ///< Ascending/descending
	byte criteria; ///< Sorting criteria
};

template <typename T>
struct GUIList {
	T* sort_list;        ///< The items to sort.
	SortListFlags flags; ///< used to control sorting/resorting/etc.
	uint16 list_length;  ///< length of the list being sorted
	uint16 resort_timer; ///< resort list after a given amount of ticks if set
	byte sort_type;      ///< what criteria to sort on
};

#endif /* SORTLIST_TYPE_H */