plugins/include/sorting.inc
author David Anderson <dvander@alliedmods.net>
Wed Jul 25 20:23:34 2007 +0000 (2007-07-25)
changeset 1169 47a8892d2c81
parent 634 85108309e453
child 1330 ab94316bb52b
permissions -rw-r--r--
added amb416 - SlapPlayer()
dvander@535
     1
/**
dvander@535
     2
 * vim: set ts=4 :
dvander@535
     3
 * ===============================================================
dvander@535
     4
 * SourceMod (C)2004-2007 AlliedModders LLC.  All rights reserved.
dvander@535
     5
 * ===============================================================
dvander@535
     6
 *
dvander@535
     7
 *  This file is part of the SourceMod/SourcePawn SDK.  This file may only be used 
dvander@535
     8
 * or modified under the Terms and Conditions of its License Agreement, which is found 
dvander@535
     9
 * in LICENSE.txt.  The Terms and Conditions for making SourceMod extensions/plugins 
dvander@535
    10
 * may change at any time.  To view the latest information, see:
dvander@535
    11
 *   http://www.sourcemod.net/license.php
dvander@535
    12
 *
dvander@535
    13
 * Version: $Id$
dvander@535
    14
 */
dvander@535
    15
dvander@535
    16
dvander@535
    17
#if defined _sorting_included
dvander@535
    18
  #endinput
dvander@535
    19
#endif
dvander@535
    20
#define _sorting_included
dvander@535
    21
dvander@535
    22
/**
dvander@619
    23
 * Contains sorting orders.
dvander@535
    24
 */
dvander@535
    25
enum SortOrder
dvander@535
    26
{
dvander@535
    27
	Sort_Ascending = 0,		/**< Ascending order */
dvander@535
    28
	Sort_Descending = 1,	/**< Descending order */
dvander@535
    29
};
dvander@535
    30
dvander@535
    31
/**
dvander@535
    32
 * Sorts an array of integers.
dvander@535
    33
 *
dvander@535
    34
 * @param array			Array of integers to sort in-place.
dvander@535
    35
 * @param array_size	Size of the array.
dvander@535
    36
 * @param order			Sorting order to use.
dvander@535
    37
 * @noreturn
dvander@535
    38
 */
dvander@535
    39
native SortIntegers(array[], array_size, SortOrder:order = Sort_Ascending);
dvander@535
    40
dvander@535
    41
/**
dvander@535
    42
 * Sorts an array of float point numbers.
dvander@535
    43
 *
dvander@535
    44
 * @param array			Array of floating point numbers to sort in-place.
dvander@535
    45
 * @param array_size	Size of the array.
dvander@535
    46
 * @param order			Sorting order to use.
dvander@535
    47
 * @noreturn
dvander@535
    48
 */
dvander@535
    49
native SortFloats(Float:array[], array_size, SortOrder:order = Sort_Ascending);
dvander@535
    50
dvander@535
    51
/**
dvander@535
    52
 * Sorts an array of strings.
dvander@535
    53
 *
dvander@535
    54
 * @param array			Array of strings to sort in-place.
dvander@535
    55
 * @param array_size	Size of the array.
dvander@535
    56
 * @param order			Sorting order to use.
dvander@535
    57
 * @noreturn
dvander@535
    58
 */
dvander@535
    59
native SortStrings(String:array[][], num_strings, SortOrder:order = Sort_Ascending);
dvander@535
    60
dvander@535
    61
/**
dvander@535
    62
 * Sort comparison function for 1D array elements.
dvander@535
    63
 * @note You may need to use explicit tags in order to use data properly.
dvander@535
    64
 *
dvander@535
    65
 * @param elem1			First element to compare.
dvander@535
    66
 * @param elem2			Second element to compare.
dvander@535
    67
 * @param array			Array that is being sorted (order is undefined).
dvander@535
    68
 * @param hndl			Handle optionally passed in while sorting.
dvander@535
    69
 * @return				-1 if first should go before second
dvander@535
    70
 *						0 if first is equal to second
dvander@535
    71
 *						1 if first should go after second
dvander@535
    72
 */
dvander@535
    73
functag SortFunc1D public(elem1, elem2, const array[], Handle:hndl);
dvander@535
    74
dvander@535
    75
/** 
dvander@535
    76
 * Sorts a custom 1D array.  You must pass in a comparison function.
dvander@535
    77
 *
dvander@535
    78
 * @param array			Array to sort.
dvander@535
    79
 * @param array_size	Size of the array to sort.
dvander@535
    80
 * @param sortfunc		Sort function.
dvander@535
    81
 * @param hndl			Optional Handle to pass through the comparison calls.
dvander@535
    82
 * @noreturn
dvander@535
    83
 */
dvander@535
    84
native SortCustom1D(array[], array_size, SortFunc1D:sortfunc, Handle:hndl=INVALID_HANDLE);
dvander@535
    85
dvander@535
    86
/**
dvander@535
    87
 * Sort comparison function for 2D array elements (sub-arrays).
dvander@535
    88
 * @note You may need to use explicit tags in order to use data properly.
dvander@535
    89
 *
dvander@535
    90
 * @param elem1			First array to compare.
dvander@535
    91
 * @param elem2			Second array to compare.
dvander@535
    92
 * @param array			Array that is being sorted (order is undefined).
dvander@535
    93
 * @param hndl			Handle optionally passed in while sorting.
dvander@535
    94
 * @return				-1 if first should go before second
dvander@535
    95
 *						0 if first is equal to second
dvander@535
    96
 *						1 if first should go after second
dvander@535
    97
 */
dvander@535
    98
funcenum SortFunc2D
dvander@535
    99
{
dvander@535
   100
	public(array[], array[], const array[][], Handle:hndl),
dvander@535
   101
	public(String:array[], String:array[], const String:array[][], Handle:hndl),
dvander@535
   102
};
dvander@535
   103
dvander@535
   104
/** 
dvander@535
   105
 * Sorts a custom 2D array.  You must pass in a comparison function.
dvander@535
   106
 *
dvander@535
   107
 * @param array			Array to sort.
dvander@535
   108
 * @param array_size	Size of the major array to sort (first index, outermost).
dvander@535
   109
 * @param sortfunc		Sort comparison function to use.
dvander@535
   110
 * @param hndl			Optional Handle to pass through the comparison calls.
dvander@535
   111
 * @noreturn
dvander@535
   112
 */
ds@634
   113
native SortCustom2D(array[][], array_size, SortFunc2D:sortfunc, Handle:hndl=INVALID_HANDLE);