(svn r11298) [NoAI] -Add: added EngineList + Valuators for all common functions. This should replace all FindXXXEngine, which will be removed soon noai
authortruelight
Fri, 19 Oct 2007 14:03:27 +0000
branchnoai
changeset 9714 fdbdae7ea647
parent 9713 7cd214115969
child 9715 7fdb0cfac113
(svn r11298) [NoAI] -Add: added EngineList + Valuators for all common functions. This should replace all FindXXXEngine, which will be removed soon
bin/ai/regression/regression.nut
bin/ai/regression/regression.txt
source.list
src/ai/ai_squirrel.cpp
src/ai/api/ai_enginelist.cpp
src/ai/api/ai_enginelist.hpp
src/ai/api/ai_enginelist.hpp.sq
src/ai/api/ai_enginelist_valuator.cpp
src/ai/api/ai_enginelist_valuator.hpp
src/ai/api/ai_enginelist_valuator.hpp.sq
--- a/bin/ai/regression/regression.nut	Fri Oct 19 13:14:22 2007 +0000
+++ b/bin/ai/regression/regression.nut	Fri Oct 19 14:03:27 2007 +0000
@@ -194,6 +194,40 @@
 	}
 }
 
+function Regression::EngineList()
+{
+	local list = AIEngineList(AIVehicle.VEHICLE_ROAD);
+
+	print("");
+	print("--EngineList--");
+	print("  Count():             " + list.Count());
+	list.Valuate(AIEngineListCargoType());
+	print("  CargoType ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
+	list.Valuate(AIEngineListCapacity());
+	print("  Capacity ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
+	list.Valuate(AIEngineListReliability());
+	print("  Reliability ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
+	list.Valuate(AIEngineListMaxSpeed());
+	print("  MaxSpeed ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
+	list.Valuate(AIEngineListPrice());
+	print("  Price ListDump:");
+	for (local i = list.Begin(); list.HasNext(); i = list.Next()) {
+		print("    " + i + " => " + list.GetValue(i));
+	}
+}
+
 function Regression::Event()
 {
 	print("");
@@ -954,6 +988,7 @@
 	this.Cargo();
 	this.Company();
 	this.Engine();
+	this.EngineList();
 	this.Event();
 	this.Industry();
 	this.IndustryList();
--- a/bin/ai/regression/regression.txt	Fri Oct 19 13:14:22 2007 +0000
+++ b/bin/ai/regression/regression.txt	Fri Oct 19 14:03:27 2007 +0000
@@ -3061,6 +3061,454 @@
     Reliability 50:     65535
     Reliability 100:    65535
 
+--EngineList--
+  Count():             88
+  CargoType ListDump:
+    197 => 11
+    196 => 11
+    195 => 11
+    158 => 11
+    157 => 11
+    156 => 11
+    200 => 10
+    199 => 10
+    198 => 10
+    155 => 10
+    154 => 10
+    153 => 10
+    203 => 9
+    202 => 9
+    201 => 9
+    167 => 9
+    166 => 9
+    165 => 9
+    161 => 9
+    160 => 9
+    159 => 9
+    152 => 9
+    151 => 9
+    150 => 9
+    182 => 8
+    181 => 8
+    180 => 8
+    164 => 8
+    163 => 8
+    162 => 8
+    149 => 8
+    148 => 8
+    147 => 8
+    179 => 7
+    178 => 7
+    177 => 7
+    146 => 7
+    145 => 7
+    144 => 7
+    185 => 6
+    184 => 6
+    183 => 6
+    143 => 6
+    142 => 6
+    141 => 6
+    191 => 5
+    190 => 5
+    189 => 5
+    140 => 5
+    139 => 5
+    138 => 5
+    194 => 4
+    193 => 4
+    192 => 4
+    170 => 4
+    169 => 4
+    168 => 4
+    137 => 4
+    136 => 4
+    135 => 4
+    188 => 3
+    187 => 3
+    186 => 3
+    134 => 3
+    133 => 3
+    132 => 3
+    131 => 2
+    130 => 2
+    129 => 2
+    128 => 2
+    127 => 2
+    126 => 2
+    176 => 1
+    175 => 1
+    174 => 1
+    173 => 1
+    172 => 1
+    171 => 1
+    125 => 1
+    124 => 1
+    123 => 1
+    122 => 0
+    121 => 0
+    120 => 0
+    119 => 0
+    118 => 0
+    117 => 0
+    116 => 0
+  Capacity ListDump:
+    119 => 40
+    122 => 38
+    118 => 37
+    121 => 35
+    117 => 35
+    116 => 31
+    143 => 30
+    131 => 30
+    128 => 30
+    120 => 30
+    130 => 28
+    127 => 28
+    125 => 28
+    167 => 27
+    164 => 27
+    149 => 27
+    134 => 27
+    166 => 25
+    163 => 25
+    148 => 25
+    142 => 25
+    133 => 25
+    124 => 25
+    146 => 24
+    170 => 23
+    203 => 22
+    200 => 22
+    197 => 22
+    194 => 22
+    191 => 22
+    188 => 22
+    185 => 22
+    182 => 22
+    179 => 22
+    176 => 22
+    173 => 22
+    162 => 22
+    158 => 22
+    147 => 22
+    145 => 22
+    129 => 22
+    126 => 22
+    165 => 21
+    132 => 21
+    169 => 20
+    161 => 20
+    157 => 20
+    152 => 20
+    144 => 20
+    141 => 20
+    123 => 20
+    202 => 19
+    199 => 19
+    196 => 19
+    193 => 19
+    190 => 19
+    187 => 19
+    184 => 19
+    181 => 19
+    178 => 19
+    175 => 19
+    172 => 19
+    168 => 18
+    160 => 18
+    151 => 18
+    140 => 18
+    137 => 18
+    201 => 17
+    198 => 17
+    195 => 17
+    192 => 17
+    189 => 17
+    186 => 17
+    183 => 17
+    180 => 17
+    177 => 17
+    174 => 17
+    171 => 17
+    156 => 17
+    155 => 16
+    139 => 16
+    136 => 16
+    159 => 15
+    154 => 15
+    150 => 15
+    138 => 14
+    135 => 14
+    153 => 12
+  Reliability ListDump:
+    165 => 99
+    144 => 97
+    132 => 97
+    168 => 96
+    147 => 96
+    141 => 96
+    135 => 96
+    129 => 94
+    186 => 92
+    156 => 91
+    126 => 91
+    171 => 90
+    159 => 90
+    195 => 88
+    177 => 86
+    138 => 86
+    201 => 84
+    192 => 84
+    120 => 84
+    183 => 83
+    162 => 82
+    150 => 81
+    189 => 80
+    180 => 79
+    198 => 78
+    116 => 78
+    174 => 77
+    167 => 77
+    178 => 76
+    175 => 76
+    123 => 76
+    153 => 75
+    191 => 74
+    170 => 74
+    121 => 74
+    202 => 73
+    158 => 71
+    152 => 71
+    137 => 71
+    203 => 70
+    200 => 70
+    176 => 70
+    199 => 68
+    197 => 68
+    196 => 68
+    194 => 68
+    142 => 67
+    187 => 66
+    124 => 66
+    160 => 65
+    139 => 65
+    169 => 64
+    154 => 64
+    140 => 63
+    136 => 63
+    127 => 63
+    117 => 63
+    185 => 62
+    145 => 62
+    133 => 62
+    190 => 61
+    184 => 61
+    155 => 61
+    151 => 61
+    122 => 61
+    181 => 60
+    164 => 60
+    193 => 59
+    188 => 59
+    179 => 59
+    146 => 59
+    182 => 58
+    166 => 58
+    161 => 58
+    131 => 58
+    157 => 57
+    130 => 57
+    125 => 57
+    119 => 57
+    163 => 56
+    118 => 56
+    172 => 55
+    173 => 53
+    149 => 52
+    143 => 52
+    134 => 52
+    148 => 50
+    128 => 48
+  MaxSpeed ListDump:
+    119 => 255
+    122 => 240
+    203 => 224
+    200 => 224
+    197 => 224
+    194 => 224
+    191 => 224
+    188 => 224
+    185 => 224
+    182 => 224
+    179 => 224
+    176 => 224
+    173 => 224
+    170 => 224
+    167 => 224
+    164 => 224
+    161 => 224
+    158 => 224
+    155 => 224
+    152 => 224
+    149 => 224
+    146 => 224
+    143 => 224
+    140 => 224
+    137 => 224
+    134 => 224
+    131 => 224
+    128 => 224
+    125 => 224
+    118 => 224
+    121 => 192
+    202 => 176
+    199 => 176
+    196 => 176
+    193 => 176
+    190 => 176
+    187 => 176
+    184 => 176
+    181 => 176
+    178 => 176
+    175 => 176
+    172 => 176
+    169 => 176
+    166 => 176
+    163 => 176
+    160 => 176
+    157 => 176
+    154 => 176
+    151 => 176
+    148 => 176
+    145 => 176
+    142 => 176
+    139 => 176
+    136 => 176
+    133 => 176
+    130 => 176
+    127 => 176
+    124 => 176
+    117 => 176
+    120 => 112
+    116 => 112
+    201 => 96
+    198 => 96
+    195 => 96
+    192 => 96
+    189 => 96
+    186 => 96
+    183 => 96
+    180 => 96
+    177 => 96
+    174 => 96
+    171 => 96
+    168 => 96
+    165 => 96
+    162 => 96
+    159 => 96
+    156 => 96
+    153 => 96
+    150 => 96
+    147 => 96
+    144 => 96
+    141 => 96
+    138 => 96
+    135 => 96
+    132 => 96
+    129 => 96
+    126 => 96
+    123 => 96
+  Price ListDump:
+    155 => 7430
+    154 => 7017
+    122 => 6605
+    119 => 6605
+    170 => 6522
+    203 => 6481
+    200 => 6481
+    197 => 6481
+    194 => 6481
+    191 => 6481
+    188 => 6481
+    185 => 6481
+    182 => 6481
+    179 => 6481
+    176 => 6481
+    173 => 6481
+    167 => 6233
+    164 => 6192
+    149 => 6192
+    134 => 6192
+    118 => 6192
+    169 => 6109
+    202 => 6068
+    199 => 6068
+    196 => 6068
+    193 => 6068
+    190 => 6068
+    187 => 6068
+    184 => 6068
+    181 => 6068
+    178 => 6068
+    175 => 6068
+    172 => 6068
+    146 => 6068
+    161 => 5985
+    153 => 5985
+    152 => 5985
+    131 => 5985
+    128 => 5985
+    158 => 5944
+    143 => 5903
+    166 => 5820
+    163 => 5779
+    148 => 5779
+    140 => 5779
+    137 => 5779
+    133 => 5779
+    121 => 5779
+    117 => 5779
+    125 => 5696
+    145 => 5655
+    160 => 5572
+    151 => 5572
+    130 => 5572
+    127 => 5572
+    157 => 5531
+    142 => 5490
+    139 => 5366
+    136 => 5366
+    124 => 5284
+    162 => 4995
+    147 => 4995
+    120 => 4953
+    116 => 4953
+    168 => 4871
+    144 => 4871
+    201 => 4829
+    198 => 4829
+    195 => 4829
+    192 => 4829
+    189 => 4829
+    186 => 4829
+    183 => 4829
+    180 => 4829
+    177 => 4829
+    174 => 4829
+    171 => 4829
+    129 => 4747
+    126 => 4747
+    141 => 4706
+    159 => 4623
+    156 => 4623
+    150 => 4623
+    165 => 4582
+    132 => 4540
+    123 => 4458
+    138 => 4417
+    135 => 4334
+
 --Event--
   GetNextEvent:      instance
     GetEventType:    1
--- a/source.list	Fri Oct 19 13:14:22 2007 +0000
+++ b/source.list	Fri Oct 19 14:03:27 2007 +0000
@@ -343,6 +343,8 @@
 ai/api/ai_company.hpp
 ai/api/ai_controller.hpp
 ai/api/ai_engine.hpp
+ai/api/ai_enginelist.hpp
+ai/api/ai_enginelist_valuator.hpp
 ai/api/ai_event.hpp
 ai/api/ai_event_types.hpp
 ai/api/ai_execmode.hpp
@@ -384,6 +386,8 @@
 ai/api/ai_company.cpp
 ai/api/ai_controller.cpp
 ai/api/ai_engine.cpp
+ai/api/ai_enginelist.cpp
+ai/api/ai_enginelist_valuator.cpp
 ai/api/ai_event.cpp
 ai/api/ai_event_types.cpp
 ai/api/ai_execmode.cpp
--- a/src/ai/ai_squirrel.cpp	Fri Oct 19 13:14:22 2007 +0000
+++ b/src/ai/ai_squirrel.cpp	Fri Oct 19 14:03:27 2007 +0000
@@ -29,6 +29,8 @@
 #include "api/ai_company.hpp.sq"
 #include "api/ai_controller.hpp.sq"
 #include "api/ai_engine.hpp.sq"
+#include "api/ai_enginelist.hpp.sq"
+#include "api/ai_enginelist_valuator.hpp.sq"
 #include "api/ai_event.hpp.sq"
 #include "api/ai_event_types.hpp.sq"
 #include "api/ai_execmode.hpp.sq"
@@ -218,6 +220,12 @@
 	SQAICargoRegister(this->engine);
 	SQAICompanyRegister(this->engine);
 	SQAIControllerRegister(this->engine);
+	SQAIEngineListCapacityRegister(this->engine);
+	SQAIEngineListCargoTypeRegister(this->engine);
+	SQAIEngineListMaxSpeedRegister(this->engine);
+	SQAIEngineListPriceRegister(this->engine);
+	SQAIEngineListRegister(this->engine);
+	SQAIEngineListReliabilityRegister(this->engine);
 	SQAIEngineRegister(this->engine);
 	SQAIEventControllerRegister(this->engine);
 	SQAIEventRegister(this->engine);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist.cpp	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,10 @@
+#include "ai_enginelist.hpp"
+#include "../../engine.h"
+
+AIEngineList::AIEngineList(AIVehicle::VehicleType type)
+{
+	EngineID e;
+	FOR_ALL_ENGINEIDS_OF_TYPE(e, type) {
+		this->AddItem(e);
+	}
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist.hpp	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,27 @@
+/* $Id$ */
+
+/** @file ai_enginelist.hpp list all the engines */
+
+#ifndef AI_ENGINELIST_HPP
+#define AI_ENGINELIST_HPP
+
+#include "ai_abstractlist.hpp"
+#include "ai_vehicle.hpp"
+
+/**
+ * Class that creates a list of current industries.
+ */
+class AIEngineList : public AIAbstractList {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineList"; }
+
+	/**
+	 * The constructor to make a list of engines.
+	 */
+	AIEngineList(AIVehicle::VehicleType type);
+};
+
+#endif /* AI_ENGINELIST_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist.hpp.sq	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,20 @@
+#include "ai_enginelist.hpp"
+
+namespace SQConvert {
+	/* Allow AIEngineList to be used as Squirrel parameter */
+	template <> AIEngineList *GetParam(ForceType<AIEngineList *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineList *)instance; }
+	template <> AIEngineList &GetParam(ForceType<AIEngineList &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList *)instance; }
+	template <> const AIEngineList *GetParam(ForceType<const AIEngineList *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineList *)instance; }
+	template <> const AIEngineList &GetParam(ForceType<const AIEngineList &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineList *)instance; }
+	template <> int Return<AIEngineList *>(HSQUIRRELVM vm, AIEngineList *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineList", res, NULL, DefSQDestructorCallback<AIEngineList>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListRegister(Squirrel *engine) {
+	DefSQClass <AIEngineList> SQAIEngineList("AIEngineList");
+	SQAIEngineList.PreRegister(engine, "AIAbstractList");
+	SQAIEngineList.AddConstructor<void (AIEngineList::*)(AIVehicle::VehicleType type), 2>(engine, "xi");
+
+	SQAIEngineList.DefSQStaticMethod(engine, &AIEngineList::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineList.PostRegister(engine);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist_valuator.cpp	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,27 @@
+#include "ai_enginelist_valuator.hpp"
+#include "ai_engine.hpp"
+
+int32 AIEngineListCargoType::Valuate(int32 engine) const
+{
+	return AIEngine::GetCargoType(engine);
+}
+
+int32 AIEngineListCapacity::Valuate(int32 engine) const
+{
+	return AIEngine::GetCapacity(engine);
+}
+
+int32 AIEngineListReliability::Valuate(int32 engine) const
+{
+	return AIEngine::GetReliability(engine);
+}
+
+int32 AIEngineListMaxSpeed::Valuate(int32 engine) const
+{
+	return AIEngine::GetMaxSpeed(engine);
+}
+
+int32 AIEngineListPrice::Valuate(int32 engine) const
+{
+	return AIEngine::GetPrice(engine);
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist_valuator.hpp	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,90 @@
+/* $Id$ */
+
+/** @file ai_enginelist_valuator.hpp all the valuators for enginelist */
+
+#ifndef AI_ENGINELIST_VALUATOR_HPP
+#define AI_ENGINELIST_VALUATOR_HPP
+
+#include "ai_abstractlist.hpp"
+
+/**
+ * Get the cargo-type for entries in an AIEngineList instance.
+ * @note resulting items are of the type CargoID
+ * @note the input items are of the type EngineID
+ */
+class AIEngineListCargoType : public AIAbstractList::Valuator {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineListCargoType"; }
+
+private:
+	int32 Valuate(int32 engine) const;
+};
+
+/**
+ * Get the capacity for entries in an AIEngineList instance.
+ * @note resulting items are of the type int32
+ * @note the input items are of the type EngineID
+ */
+class AIEngineListCapacity : public AIAbstractList::Valuator {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineListCapacity"; }
+
+private:
+	int32 Valuate(int32 engine) const;
+};
+
+/**
+ * Get the reliability for entries in an AIEngineList instance.
+ * @note resulting items are of the type int32
+ * @note the input items are of the type EngineID
+ */
+class AIEngineListReliability : public AIAbstractList::Valuator {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineListReliability"; }
+
+private:
+	int32 Valuate(int32 engine) const;
+};
+
+/**
+ * Get the max speed for entries in an AIEngineList instance.
+ * @note resulting items are of the type int32
+ * @note the input items are of the type EngineID
+ */
+class AIEngineListMaxSpeed : public AIAbstractList::Valuator {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineListMaxSpeed"; }
+
+private:
+	int32 Valuate(int32 engine) const;
+};
+
+/**
+ * Get the price for entries in an AIEngineList instance.
+ * @note resulting items are of the type int32
+ * @note the input items are of the type EngineID
+ */
+class AIEngineListPrice : public AIAbstractList::Valuator {
+public:
+	/**
+	 * The name of the class, needed by several sub-processes.
+	 */
+	static const char *GetClassName() { return "AIEngineListPrice"; }
+
+private:
+	int32 Valuate(int32 engine) const;
+};
+
+#endif /* AI_ENGINELIST_VALUATOR_HPP */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ai/api/ai_enginelist_valuator.hpp.sq	Fri Oct 19 14:03:27 2007 +0000
@@ -0,0 +1,96 @@
+#include "ai_enginelist_valuator.hpp"
+
+namespace SQConvert {
+	/* Allow AIEngineListCargoType to be used as Squirrel parameter */
+	template <> AIEngineListCargoType *GetParam(ForceType<AIEngineListCargoType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListCargoType *)instance; }
+	template <> AIEngineListCargoType &GetParam(ForceType<AIEngineListCargoType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListCargoType *)instance; }
+	template <> const AIEngineListCargoType *GetParam(ForceType<const AIEngineListCargoType *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListCargoType *)instance; }
+	template <> const AIEngineListCargoType &GetParam(ForceType<const AIEngineListCargoType &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListCargoType *)instance; }
+	template <> int Return<AIEngineListCargoType *>(HSQUIRRELVM vm, AIEngineListCargoType *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineListCargoType", res, NULL, DefSQDestructorCallback<AIEngineListCargoType>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListCargoTypeRegister(Squirrel *engine) {
+	DefSQClass <AIEngineListCargoType> SQAIEngineListCargoType("AIEngineListCargoType");
+	SQAIEngineListCargoType.PreRegister(engine);
+	SQAIEngineListCargoType.AddConstructor<void (AIEngineListCargoType::*)(), 1>(engine, "x");
+
+	SQAIEngineListCargoType.DefSQStaticMethod(engine, &AIEngineListCargoType::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineListCargoType.PostRegister(engine);
+}
+
+namespace SQConvert {
+	/* Allow AIEngineListCapacity to be used as Squirrel parameter */
+	template <> AIEngineListCapacity *GetParam(ForceType<AIEngineListCapacity *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListCapacity *)instance; }
+	template <> AIEngineListCapacity &GetParam(ForceType<AIEngineListCapacity &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListCapacity *)instance; }
+	template <> const AIEngineListCapacity *GetParam(ForceType<const AIEngineListCapacity *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListCapacity *)instance; }
+	template <> const AIEngineListCapacity &GetParam(ForceType<const AIEngineListCapacity &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListCapacity *)instance; }
+	template <> int Return<AIEngineListCapacity *>(HSQUIRRELVM vm, AIEngineListCapacity *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineListCapacity", res, NULL, DefSQDestructorCallback<AIEngineListCapacity>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListCapacityRegister(Squirrel *engine) {
+	DefSQClass <AIEngineListCapacity> SQAIEngineListCapacity("AIEngineListCapacity");
+	SQAIEngineListCapacity.PreRegister(engine);
+	SQAIEngineListCapacity.AddConstructor<void (AIEngineListCapacity::*)(), 1>(engine, "x");
+
+	SQAIEngineListCapacity.DefSQStaticMethod(engine, &AIEngineListCapacity::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineListCapacity.PostRegister(engine);
+}
+
+namespace SQConvert {
+	/* Allow AIEngineListReliability to be used as Squirrel parameter */
+	template <> AIEngineListReliability *GetParam(ForceType<AIEngineListReliability *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListReliability *)instance; }
+	template <> AIEngineListReliability &GetParam(ForceType<AIEngineListReliability &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListReliability *)instance; }
+	template <> const AIEngineListReliability *GetParam(ForceType<const AIEngineListReliability *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListReliability *)instance; }
+	template <> const AIEngineListReliability &GetParam(ForceType<const AIEngineListReliability &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListReliability *)instance; }
+	template <> int Return<AIEngineListReliability *>(HSQUIRRELVM vm, AIEngineListReliability *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineListReliability", res, NULL, DefSQDestructorCallback<AIEngineListReliability>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListReliabilityRegister(Squirrel *engine) {
+	DefSQClass <AIEngineListReliability> SQAIEngineListReliability("AIEngineListReliability");
+	SQAIEngineListReliability.PreRegister(engine);
+	SQAIEngineListReliability.AddConstructor<void (AIEngineListReliability::*)(), 1>(engine, "x");
+
+	SQAIEngineListReliability.DefSQStaticMethod(engine, &AIEngineListReliability::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineListReliability.PostRegister(engine);
+}
+
+namespace SQConvert {
+	/* Allow AIEngineListMaxSpeed to be used as Squirrel parameter */
+	template <> AIEngineListMaxSpeed *GetParam(ForceType<AIEngineListMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListMaxSpeed *)instance; }
+	template <> AIEngineListMaxSpeed &GetParam(ForceType<AIEngineListMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListMaxSpeed *)instance; }
+	template <> const AIEngineListMaxSpeed *GetParam(ForceType<const AIEngineListMaxSpeed *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListMaxSpeed *)instance; }
+	template <> const AIEngineListMaxSpeed &GetParam(ForceType<const AIEngineListMaxSpeed &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListMaxSpeed *)instance; }
+	template <> int Return<AIEngineListMaxSpeed *>(HSQUIRRELVM vm, AIEngineListMaxSpeed *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineListMaxSpeed", res, NULL, DefSQDestructorCallback<AIEngineListMaxSpeed>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListMaxSpeedRegister(Squirrel *engine) {
+	DefSQClass <AIEngineListMaxSpeed> SQAIEngineListMaxSpeed("AIEngineListMaxSpeed");
+	SQAIEngineListMaxSpeed.PreRegister(engine);
+	SQAIEngineListMaxSpeed.AddConstructor<void (AIEngineListMaxSpeed::*)(), 1>(engine, "x");
+
+	SQAIEngineListMaxSpeed.DefSQStaticMethod(engine, &AIEngineListMaxSpeed::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineListMaxSpeed.PostRegister(engine);
+}
+
+namespace SQConvert {
+	/* Allow AIEngineListPrice to be used as Squirrel parameter */
+	template <> AIEngineListPrice *GetParam(ForceType<AIEngineListPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListPrice *)instance; }
+	template <> AIEngineListPrice &GetParam(ForceType<AIEngineListPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListPrice *)instance; }
+	template <> const AIEngineListPrice *GetParam(ForceType<const AIEngineListPrice *>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return  (AIEngineListPrice *)instance; }
+	template <> const AIEngineListPrice &GetParam(ForceType<const AIEngineListPrice &>, HSQUIRRELVM vm, int index) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(AIEngineListPrice *)instance; }
+	template <> int Return<AIEngineListPrice *>(HSQUIRRELVM vm, AIEngineListPrice *res) { if (res == NULL) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, "AIEngineListPrice", res, NULL, DefSQDestructorCallback<AIEngineListPrice>); return 1; }
+}; // namespace SQConvert
+
+void SQAIEngineListPriceRegister(Squirrel *engine) {
+	DefSQClass <AIEngineListPrice> SQAIEngineListPrice("AIEngineListPrice");
+	SQAIEngineListPrice.PreRegister(engine);
+	SQAIEngineListPrice.AddConstructor<void (AIEngineListPrice::*)(), 1>(engine, "x");
+
+	SQAIEngineListPrice.DefSQStaticMethod(engine, &AIEngineListPrice::GetClassName, "GetClassName", 1, "x");
+
+	SQAIEngineListPrice.PostRegister(engine);
+}