diff options
-rw-r--r-- | projects/openttd_vs80.vcproj | 4 | ||||
-rw-r--r-- | projects/openttd_vs90.vcproj | 4 | ||||
-rw-r--r-- | source.list | 1 | ||||
-rw-r--r-- | src/autoreplace_gui.cpp | 1 | ||||
-rw-r--r-- | src/build_vehicle_gui.cpp | 1 | ||||
-rw-r--r-- | src/engine.cpp | 28 | ||||
-rw-r--r-- | src/engine_func.h | 4 | ||||
-rw-r--r-- | src/engine_gui.cpp | 30 | ||||
-rw-r--r-- | src/engine_gui.h | 16 | ||||
-rw-r--r-- | src/engine_type.h | 3 |
10 files changed, 57 insertions, 35 deletions
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj index 03062dc07..a57c1f4dd 100644 --- a/projects/openttd_vs80.vcproj +++ b/projects/openttd_vs80.vcproj @@ -1000,6 +1000,10 @@ > </File> <File + RelativePath=".\..\src\engine_gui.h" + > + </File> + <File RelativePath=".\..\src\engine_type.h" > </File> diff --git a/projects/openttd_vs90.vcproj b/projects/openttd_vs90.vcproj index 89fbb1c9c..9b2dd1c48 100644 --- a/projects/openttd_vs90.vcproj +++ b/projects/openttd_vs90.vcproj @@ -997,6 +997,10 @@ > </File> <File + RelativePath=".\..\src\engine_gui.h" + > + </File> + <File RelativePath=".\..\src\engine_type.h" > </File> diff --git a/source.list b/source.list index 7e80cea7a..c9efdd2bd 100644 --- a/source.list +++ b/source.list @@ -175,6 +175,7 @@ elrail_func.h core/endian_func.hpp engine_base.h engine_func.h +engine_gui.h engine_type.h core/enum_type.hpp fiber.hpp diff --git a/src/autoreplace_gui.cpp b/src/autoreplace_gui.cpp index 35ca3a924..88d5a9db8 100644 --- a/src/autoreplace_gui.cpp +++ b/src/autoreplace_gui.cpp @@ -22,6 +22,7 @@ #include "engine_func.h" #include "engine_base.h" #include "window_gui.h" +#include "engine_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp index b7c030494..715938a9d 100644 --- a/src/build_vehicle_gui.cpp +++ b/src/build_vehicle_gui.cpp @@ -29,6 +29,7 @@ #include "widgets/dropdown_func.h" #include "string_func.h" #include "window_gui.h" +#include "engine_gui.h" #include "table/sprites.h" #include "table/strings.h" diff --git a/src/engine.cpp b/src/engine.cpp index 558fcd8e0..c3d1f5185 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -115,34 +115,6 @@ Engine::~Engine() free(this->name); } -/** Sort all items using qsort() and given 'CompareItems' function - * @param el list to be sorted - * @param compare function for evaluation of the quicksort - */ -void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare) -{ - size_t size = el->size(); - /* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems) - * generally, do not sort if there are less than 2 items */ - if (size < 2) return; - qsort(&((*el)[0]), size, sizeof(EngineID), compare); // MorphOS doesn't know vector::at(int) ... -} - -/** Sort selected range of items (on indices @ <begin, begin+num_items-1>) - * @param el list to be sorted - * @param compare function for evaluation of the quicksort - * @param begin start of sorting - * @param num_items count of items to be sorted - */ -void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items) -{ - assert(begin <= (uint)el->size()); - assert(begin + num_items <= (uint)el->size()); - if (num_items < 2) return; - qsort(&((*el)[begin]), num_items, sizeof(EngineID), compare); -} - - /** Sets cached values in Player::num_vehicles and Group::num_vehicles */ void SetCachedEngineCounts() diff --git a/src/engine_func.h b/src/engine_func.h index 2e68831ac..2e5049948 100644 --- a/src/engine_func.h +++ b/src/engine_func.h @@ -29,8 +29,4 @@ bool IsEngineBuildable(EngineID engine, VehicleType type, PlayerID player); CargoID GetEngineCargoType(EngineID engine); void SetCachedEngineCounts(); -typedef int CDECL EngList_SortTypeFunction(const void*, const void*); ///< argument type for EngList_Sort() -void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare); ///< qsort of the engine list -void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items); ///< qsort of specified portion of the engine list - #endif /* ENGINE_H */ diff --git a/src/engine_gui.cpp b/src/engine_gui.cpp index a67d23fcb..bd48d778a 100644 --- a/src/engine_gui.cpp +++ b/src/engine_gui.cpp @@ -15,6 +15,7 @@ #include "variables.h" #include "newgrf_engine.h" #include "strings_func.h" +#include "engine_gui.h" #include "table/strings.h" #include "table/sprites.h" @@ -190,3 +191,32 @@ void DrawNewsNewVehicleAvail(Window *w, const NewsItem *ni) GfxFillRect(25, 56, w->width - 56, 112, PALETTE_TO_STRUCT_GREY | (1 << USE_COLORTABLE)); dei->info_proc(engine, w->width >> 1, 129, w->width - 52); } + + +/** Sort all items using qsort() and given 'CompareItems' function + * @param el list to be sorted + * @param compare function for evaluation of the quicksort + */ +void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare) +{ + size_t size = el->size(); + /* out-of-bounds access at the next line for size == 0 (even with operator[] at some systems) + * generally, do not sort if there are less than 2 items */ + if (size < 2) return; + qsort(&((*el)[0]), size, sizeof(EngineID), compare); // MorphOS doesn't know vector::at(int) ... +} + +/** Sort selected range of items (on indices @ <begin, begin+num_items-1>) + * @param el list to be sorted + * @param compare function for evaluation of the quicksort + * @param begin start of sorting + * @param num_items count of items to be sorted + */ +void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items) +{ + assert(begin <= (uint)el->size()); + assert(begin + num_items <= (uint)el->size()); + if (num_items < 2) return; + qsort(&((*el)[begin]), num_items, sizeof(EngineID), compare); +} + diff --git a/src/engine_gui.h b/src/engine_gui.h new file mode 100644 index 000000000..12957da92 --- /dev/null +++ b/src/engine_gui.h @@ -0,0 +1,16 @@ +/* $Id$ */ + +/** @file engine_gui.h Engine GUI functions, used by build_vehicle_gui and autoreplace_gui */ + +#ifndef ENGINE_GUI_H +#define ENGINE_GUI_H + +#include <vector> + +typedef std::vector<EngineID> EngineList; + +typedef int CDECL EngList_SortTypeFunction(const void*, const void*); ///< argument type for EngList_Sort() +void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare); ///< qsort of the engine list +void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items); ///< qsort of specified portion of the engine list + +#endif /* ENGINE_GUI_H */ diff --git a/src/engine_type.h b/src/engine_type.h index affa722ce..66a495607 100644 --- a/src/engine_type.h +++ b/src/engine_type.h @@ -14,11 +14,8 @@ #include "player_type.h" #include "strings_type.h" -#include <vector> - typedef uint16 EngineID; typedef uint16 EngineRenewID; -typedef std::vector<EngineID> EngineList; ///< engine list type struct Engine; |