src/helpers.cpp
author tron
Thu, 22 Feb 2007 06:57:21 +0000
changeset 6105 760134e9dab6
parent 5633 e1905dacc378
child 6179 d19b0137d8e4
permissions -rw-r--r--
(svn r8840) -Fix

Remove FIFO and Stack. They have never been used and could not be used anyway because the declarations of some functions are spelled different than the definitions they should correspond to.
Also remove some other unused helpers and related struct attributes.
5189
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     1
/* $Id$ */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     2
#include "stdafx.h"
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     3
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     4
#include "openttd.h"
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     5
#include "engine.h"
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     6
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     7
#include <new>
5633
e1905dacc378 (svn r8092) -Codechange: header files with miscellaneous template classes (smart pointers, blob, array, hashtable, etc.) moved from src/yapf to src/misc as they can now be used anywhere.
KUDr
parents: 5587
diff changeset
     8
#include "misc/blob.hpp"
5189
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
     9
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    10
/* Engine list manipulators - current implementation is only C wrapper around CBlobT<EngineID> (see yapf/blob.hpp) */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    11
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    12
/* we cannot expose CBlobT directly to C so we must cast EngineList* to CBlobT<EngineID>* always when we are called from C */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    13
#define B (*(CBlobT<EngineID>*)el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    14
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    15
/** Create Engine List (and initialize it to empty) */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    16
void EngList_Create(EngineList *el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    17
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    18
	// call CBlobT constructor explicitly
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    19
	new (&B) CBlobT<EngineID>();
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    20
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    21
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    22
/** Destroy Engine List (and free its contents) */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    23
void EngList_Destroy(EngineList *el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    24
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    25
	// call CBlobT destructor explicitly
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    26
	B.~CBlobT<EngineID>();
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    27
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    28
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    29
/** Return number of items stored in the Engine List */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    30
uint EngList_Count(const EngineList *el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    31
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    32
	return B.Size();
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    33
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    34
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    35
/** Add new item at the end of Engine List */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    36
void EngList_Add(EngineList *el, EngineID eid)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    37
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    38
	B.Append(eid);
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    39
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    40
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    41
/** Return pointer to the items array held by Engine List */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    42
EngineID* EngList_Items(EngineList *el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    43
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    44
	return B.Data();
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    45
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    46
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    47
/** Clear the Engine List (by invalidating all its items == reseting item count to zero) */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    48
void EngList_RemoveAll(EngineList *el)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    49
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    50
	B.Clear();
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    51
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    52
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    53
/** Sort all items using qsort() and given 'CompareItems' function */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    54
void EngList_Sort(EngineList *el, EngList_SortTypeFunction compare)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    55
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    56
	qsort(B.Data(), B.Size(), sizeof(**el), compare);
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    57
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    58
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    59
/** Sort selected range of items (on indices @ <begin, begin+num_items-1>) */
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    60
void EngList_SortPartial(EngineList *el, EngList_SortTypeFunction compare, uint begin, uint num_items)
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    61
{
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    62
	assert(begin <= (uint)B.Size());
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    63
	assert(begin + num_items <= (uint)B.Size());
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    64
	qsort(B.Data() + begin, num_items, sizeof(**el), compare);
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    65
}
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    66
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    67
#undef B
a2b200911b2c (svn r7301) -Fix: (r7299) Forgotten $Id$ and eol-style (peter1138)
KUDr
parents: 5187
diff changeset
    68