diff options
-rw-r--r-- | bin/ai/compat_0.7.nut | 36 | ||||
-rw-r--r-- | bin/ai/compat_1.0.nut | 37 | ||||
-rw-r--r-- | bin/ai/regression/regression.nut | 224 | ||||
-rw-r--r-- | bin/ai/regression/regression.txt | 2 | ||||
-rw-r--r-- | src/ai/api/ai_abstractlist.cpp | 46 | ||||
-rw-r--r-- | src/ai/api/ai_abstractlist.hpp | 11 | ||||
-rw-r--r-- | src/ai/api/ai_abstractlist.hpp.sq | 2 | ||||
-rw-r--r-- | src/ai/api/ai_changelog.hpp | 6 |
8 files changed, 222 insertions, 142 deletions
diff --git a/bin/ai/compat_0.7.nut b/bin/ai/compat_0.7.nut index db56fdaee..4c45e4fdb 100644 --- a/bin/ai/compat_0.7.nut +++ b/bin/ai/compat_0.7.nut @@ -274,3 +274,39 @@ AIRoad.BuildDriveThroughRoadStation <- function(tile, front, road_veh_type, stat return AIRoad._BuildDriveThroughRoadStation(tile, front, road_veh_type, station_id); } + +AIAbstractList.HasNext <- +AIBridgeList.HasNext <- +AIBridgeList_Length.HasNext <- +AICargoList.HasNext <- +AICargoList_IndustryAccepting.HasNext <- +AICargoList_IndustryProducing.HasNext <- +AIDepotList.HasNext <- +AIEngineList.HasNext <- +AIGroupList.HasNext <- +AIIndustryList.HasNext <- +AIIndustryList_CargoAccepting.HasNext <- +AIIndustryList_CargoProducing.HasNext <- +AIIndustryTypeList.HasNext <- +AIList.HasNext <- +AIRailTypeList.HasNext <- +AISignList.HasNext <- +AIStationList.HasNext <- +AIStationList_Vehicle.HasNext <- +AISubsidyList.HasNext <- +AITileList.HasNext <- +AITileList_IndustryAccepting.HasNext <- +AITileList_IndustryProducing.HasNext <- +AITileList_StationType.HasNext <- +AITownList.HasNext <- +AIVehicleList.HasNext <- +AIVehicleList_DefaultGroup.HasNext <- +AIVehicleList_Group.HasNext <- +AIVehicleList_SharedOrders.HasNext <- +AIVehicleList_Station.HasNext <- +AIWaypointList.HasNext <- +AIWaypointList_Vehicle.HasNext <- +function() +{ + return !this.IsEnd(); +} diff --git a/bin/ai/compat_1.0.nut b/bin/ai/compat_1.0.nut index 77ae2525a..c28f33531 100644 --- a/bin/ai/compat_1.0.nut +++ b/bin/ai/compat_1.0.nut @@ -24,3 +24,40 @@ AIRoad.BuildDriveThroughRoadStation <- function(tile, front, road_veh_type, stat return AIRoad._BuildDriveThroughRoadStation(tile, front, road_veh_type, station_id); } + +AIAbstractList.HasNext <- +AIBridgeList.HasNext <- +AIBridgeList_Length.HasNext <- +AICargoList.HasNext <- +AICargoList_IndustryAccepting.HasNext <- +AICargoList_IndustryProducing.HasNext <- +AIDepotList.HasNext <- +AIEngineList.HasNext <- +AIGroupList.HasNext <- +AIIndustryList.HasNext <- +AIIndustryList_CargoAccepting.HasNext <- +AIIndustryList_CargoProducing.HasNext <- +AIIndustryTypeList.HasNext <- +AIList.HasNext <- +AIRailTypeList.HasNext <- +AISignList.HasNext <- +AIStationList.HasNext <- +AIStationList_Vehicle.HasNext <- +AISubsidyList.HasNext <- +AITileList.HasNext <- +AITileList_IndustryAccepting.HasNext <- +AITileList_IndustryProducing.HasNext <- +AITileList_StationType.HasNext <- +AITownList.HasNext <- +AIVehicleList.HasNext <- +AIVehicleList_DefaultGroup.HasNext <- +AIVehicleList_Depot.HasNext <- +AIVehicleList_Group.HasNext <- +AIVehicleList_SharedOrders.HasNext <- +AIVehicleList_Station.HasNext <- +AIWaypointList.HasNext <- +AIWaypointList_Vehicle.HasNext <- +function() +{ + return !this.IsEnd(); +} diff --git a/bin/ai/regression/regression.nut b/bin/ai/regression/regression.nut index c27929d6b..eb9b9667f 100644 --- a/bin/ai/regression/regression.nut +++ b/bin/ai/regression/regression.nut @@ -35,7 +35,7 @@ function Regression::TestInit() list.AddItem(35, 40); list.AddItem(40, 40); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.RemoveItem(i - 10); list.RemoveItem(i - 5); list.RemoveItem(i); @@ -48,12 +48,12 @@ function Regression::TestInit() list.AddItem(40, 40); print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.SetValue(i, 2); print(" " + i); } print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } @@ -70,7 +70,7 @@ function Regression::TestInit() list.AddItem(35, 40); list.AddItem(40, 40); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.RemoveItem(i + 10); list.RemoveItem(i + 5); list.RemoveItem(i); @@ -83,12 +83,12 @@ function Regression::TestInit() list.AddItem(40, 40); print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.SetValue(i, 50); print(" " + i); } print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } @@ -105,7 +105,7 @@ function Regression::TestInit() list.AddItem(35, 40); list.AddItem(40, 40); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.RemoveItem(i - 10); list.RemoveItem(i - 5); list.RemoveItem(i); @@ -118,12 +118,12 @@ function Regression::TestInit() list.AddItem(40, 40); print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.SetValue(i, 2); print(" " + i); } print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } @@ -140,7 +140,7 @@ function Regression::TestInit() list.AddItem(35, 40); list.AddItem(40, 40); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.RemoveItem(i + 10); list.RemoveItem(i + 5); list.RemoveItem(i); @@ -153,12 +153,12 @@ function Regression::TestInit() list.AddItem(40, 40); print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { list.SetValue(i, 50); print(" " + i); } print(""); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } @@ -283,22 +283,22 @@ function Regression::BridgeList() print(" Count(): " + list.Count()); list.Valuate(AIBridge.GetMaxSpeed); print(" MaxSpeed ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIBridge.GetPrice, 5); print(" Price ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIBridge.GetMaxLength); print(" MaxLength ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIBridge.GetMinLength); print(" MinLength ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -309,12 +309,12 @@ function Regression::BridgeList() print(" Count(): " + list.Count()); list.Valuate(AIBridge.GetMaxSpeed); print(" MaxSpeed ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIBridge.GetPrice, 14); print(" Price ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } @@ -347,13 +347,13 @@ function Regression::CargoList() print(" Count(): " + list.Count()); list.Valuate(AICargo.IsFreight); print(" IsFreight ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AICargo.GetCargoIncome, 100, 100); print(" CargoIncomes(100, 100) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -362,7 +362,7 @@ function Regression::CargoList() print("--CargoList_IndustryAccepting--"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } @@ -371,7 +371,7 @@ function Regression::CargoList() print("--CargoList_IndustryProducing--"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i); } } @@ -479,27 +479,27 @@ function Regression::EngineList() print(" Count(): " + list.Count()); list.Valuate(AIEngine.GetCargoType); print(" CargoType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIEngine.GetCapacity); print(" Capacity ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIEngine.GetReliability); print(" Reliability ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIEngine.GetMaxSpeed); print(" MaxSpeed ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIEngine.GetPrice); print(" Price ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } @@ -586,7 +586,7 @@ function Regression::Industry() print(" GetIndustryCount(): " + AIIndustry.GetIndustryCount()); local list = AIIndustryList(); list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { if (AIIndustry.IsValidIndustry(i)) j++; print(" Industry " + i); print(" IsValidIndustry(): " + AIIndustry.IsValidIndustry(i)); @@ -595,7 +595,7 @@ function Regression::Industry() print(" IsCargoAccepted(): " + AIIndustry.IsCargoAccepted(i, 1)); local cargo_list = AICargoList(); - for (local j = cargo_list.Begin(); cargo_list.HasNext(); j = cargo_list.Next()) { + for (local j = cargo_list.Begin(); !cargo_list.IsEnd(); j = cargo_list.Next()) { if (AIIndustry.IsCargoAccepted(i, j) || AIIndustry.GetLastMonthProduction(i,j) >= 0) { print(" GetLastMonthProduction(): " + AIIndustry.GetLastMonthProduction(i, j)); print(" GetLastMonthTransported(): " + AIIndustry.GetLastMonthTransported(i, j)); @@ -616,27 +616,27 @@ function Regression::IndustryList() print(" Count(): " + list.Count()); list.Valuate(AIIndustry.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIIndustry.GetDistanceManhattanToTile, 30000); print(" DistanceManhattanToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIIndustry.GetDistanceSquareToTile, 30000); print(" DistanceSquareToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIIndustry.GetAmountOfStationsAround); print(" GetAmountOfStationsAround(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIIndustry.IsCargoAccepted, 1); print(" CargoAccepted(1) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -645,7 +645,7 @@ function Regression::IndustryList() print(" Count(): " + list.Count()); list.Valuate(AIIndustry.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -654,7 +654,7 @@ function Regression::IndustryList() print(" Count(): " + list.Count()); list.Valuate(AIIndustry.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } @@ -668,7 +668,7 @@ function Regression::IndustryTypeList() print(" Count(): " + list.Count()); list.Valuate(AIIndustry.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" Id: " + i); print(" IsRawIndustry(): " + AIIndustryType.IsRawIndustry(i)); print(" ProductionCanIncrease(): " + AIIndustryType.ProductionCanIncrease(i)); @@ -709,43 +709,43 @@ function Regression::List() print(" IsEmpty(): " + list.IsEmpty()); list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING); print(" List Dump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(CustomValuator); print(" Custom ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(function (a) { return a * 42; }); print(" Custom ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIBase.RandItem); print(" Randomize ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.KeepTop(10); print(" KeepTop(10):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.KeepBottom(8); print(" KeepBottom(8):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.RemoveBottom(2); print(" RemoveBottom(2):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.RemoveTop(2); print(" RemoveTop(2):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -754,13 +754,13 @@ function Regression::List() list2.AddItem(1004, 0); list.RemoveList(list2); print(" RemoveList({1003, 1004}):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list2.AddItem(1005, 0); list.KeepList(list2); print(" KeepList({1003, 1004, 1005}):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list2.Clear(); @@ -770,7 +770,7 @@ function Regression::List() list2.AddItem(1005, 1005); list.AddList(list2); print(" AddList({1005, 4000, 4001, 4002}):"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list[4000] = 50; @@ -791,27 +791,27 @@ function Regression::List() } local it = list.Begin(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); list.Sort(list.SORT_BY_VALUE, list.SORT_ASCENDING); it = list.Next(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); it = list.Begin(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); list.SetValue(it + 1, -5); it = list.Next(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); list.RemoveValue(list.GetValue(it) + 1); it = list.Next(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); list.RemoveAboveValue(list.GetValue(it)); it = list.Next(); - print(" " + it + " => " + list.GetValue(it) + " (" + list.HasNext() + ")"); + print(" " + it + " => " + list.GetValue(it) + " (" + !list.IsEnd() + ")"); - while (list.HasNext()) { + while (!list.IsEnd()) { it = list.Next(); print(" " + it + " => " + list.GetValue(it)); } @@ -879,11 +879,11 @@ function Regression::Marine() print("--AIWaypointList(BUOY)--"); print(" Count(): " + list.Count()); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + AIWaypoint.GetLocation(i)); } print(" HasWaypointType:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_RAIL) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_BUOY) + " " + AIWaypoint.HasWaypointType(i, AIWaypoint.WAYPOINT_ANY)); } print(""); @@ -966,37 +966,37 @@ function Regression::Order() print(" Count(): " + list.Count()); list.Valuate(AIStation.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetCargoWaiting, 0); print(" CargoWaiting(0) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetCargoWaiting, 1); print(" CargoWaiting(1) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetCargoRating, 1); print(" CargoRating(1) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetDistanceManhattanToTile, 30000); print(" DistanceManhattanToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetDistanceSquareToTile, 30000); print(" DistanceSquareToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.IsWithinTownInfluence, 0); print(" IsWithinTownInfluence(0) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1007,7 +1007,7 @@ function Regression::Order() print(" Count(): " + list.Count()); list.Valuate(AIVehicle.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } print(" foreach():"); @@ -1024,7 +1024,7 @@ function Regression::RailTypeList() print("--RailTypeList--"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" RailType: " + i); print(" IsRailTypeAvailable(): " + AIRail.IsRailTypeAvailable(i)); } @@ -1059,7 +1059,7 @@ function Regression::Rail() print(" Count(): " + list.Count()); list.Valuate(AITile.GetDistanceManhattanToTile, 0); print(" Depot distance from (0,0) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } print(" RemoveDepot(): " + AITile.DemolishTile(33411)); @@ -1137,7 +1137,7 @@ function Regression::Road() print(" Count(): " + list.Count()); list.Valuate(AITile.GetDistanceManhattanToTile, 0); print(" Depot distance from (0,0) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } print(" RemoveRoadDepot(): " + AIRoad.RemoveRoadDepot(33411)); @@ -1196,7 +1196,7 @@ function Regression::Sign() print(""); local list = AISignList(); list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { j++; print(" Sign " + i); print(" IsValidSign(): " + AISign.IsValidSign(i)); @@ -1246,17 +1246,17 @@ function Regression::Station() print(" Count(): " + list.Count()); list.Valuate(AIStation.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetCargoWaiting, 0); print(" CargoWaiting(0) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIStation.GetCargoWaiting, 1); print(" CargoWaiting(1) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } @@ -1297,7 +1297,7 @@ function Regression::TileList() print(" Slope(): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); print(" " + i + " => " + AITile.GetComplementSlope(list.GetValue(i))); print(" " + i + " => " + AITile.IsSteepSlope(list.GetValue(i))); @@ -1315,7 +1315,7 @@ function Regression::TileList() print(" Height(): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1323,7 +1323,7 @@ function Regression::TileList() print(" CornerHeight(North): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1331,7 +1331,7 @@ function Regression::TileList() print(" MinHeight(): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1339,7 +1339,7 @@ function Regression::TileList() print(" MaxHeight(): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1349,7 +1349,7 @@ function Regression::TileList() print(" KeepValue(0): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1363,27 +1363,27 @@ function Regression::TileList() list.Valuate(AITile.IsBuildableRectangle, 3, 3); print(" BuildableRectangle(3, 3) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITile.GetDistanceManhattanToTile, 30000); print(" DistanceManhattanToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITile.GetDistanceSquareToTile, 30000); print(" DistanceSquareToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITile.GetOwner); print(" GetOwner() ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITile.GetClosestTown); print(" GetClosestTown() ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1393,7 +1393,7 @@ function Regression::TileList() print(" KeepAboveValue(10): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1403,7 +1403,7 @@ function Regression::TileList() print(" KeepValue(1): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1413,7 +1413,7 @@ function Regression::TileList() print(" KeepValue(1): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1422,7 +1422,7 @@ function Regression::TileList() print(" Water(): done"); print(" Count(): " + list.Count()); print(" ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1432,7 +1432,7 @@ function Regression::TileList() print(" Count(): " + list.Count()); list.Valuate(AITile.GetCargoAcceptance, 3, 1, 1, 3); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1442,7 +1442,7 @@ function Regression::TileList() print(" Count(): " + list.Count()); list.Valuate(AITile.GetCargoProduction, 7, 1, 1, 3); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1451,7 +1451,7 @@ function Regression::TileList() print("--TileList_StationType--"); print(" Count(): " + list.Count()); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } @@ -1465,7 +1465,7 @@ function Regression::Town() print(" GetTownCount(): " + AITown.GetTownCount()); local list = AITownList(); list.Sort(AIAbstractList.SORT_BY_ITEM, AIAbstractList.SORT_ASCENDING); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { if (AITown.IsValidTown(i)) j++; print(" Town " + i); print(" IsValidTown(): " + AITown.IsValidTown(i)); @@ -1488,27 +1488,27 @@ function Regression::TownList() print(" Count(): " + list.Count()); list.Valuate(AITown.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITown.GetDistanceManhattanToTile, 30000); print(" DistanceManhattanToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITown.GetDistanceSquareToTile, 30000); print(" DistanceSquareToTile(30000) ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITown.IsWithinTownInfluence, AITown.GetLocation(0)); print(" IsWithinTownInfluence(" + AITown.GetLocation(0) + ") ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITown.GetAllowedNoise); print(" GetAllowedNoise() ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AITown.GetPopulation); @@ -1516,7 +1516,7 @@ function Regression::TownList() print(" KeepAboveValue(500): done"); print(" Count(): " + list.Count()); print(" Population ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } @@ -1665,77 +1665,77 @@ function Regression::Vehicle() print(" Count(): " + list.Count()); list.Valuate(AIVehicle.GetLocation); print(" Location ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetEngineType); print(" EngineType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetUnitNumber); print(" UnitNumber ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetAge); print(" Age ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetMaxAge); print(" MaxAge ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetAgeLeft); print(" AgeLeft ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetCurrentSpeed); print(" CurrentSpeed ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetRunningCost); print(" RunningCost ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetProfitThisYear); print(" ProfitThisYear ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetProfitLastYear); print(" ProfitLastYear ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetCurrentValue); print(" CurrentValue ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetVehicleType); print(" VehicleType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetRoadType); print(" RoadType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetCapacity, 10); print(" VehicleType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } list.Valuate(AIVehicle.GetCargoLoad, 10); print(" VehicleType ListDump:"); - for (local i = list.Begin(); list.HasNext(); i = list.Next()) { + for (local i = list.Begin(); !list.IsEnd(); i = list.Next()) { print(" " + i + " => " + list.GetValue(i)); } } diff --git a/bin/ai/regression/regression.txt b/bin/ai/regression/regression.txt index 2b499f62c..da92f64f1 100644 --- a/bin/ai/regression/regression.txt +++ b/bin/ai/regression/regression.txt @@ -571,7 +571,7 @@ IsEmpty(): true 0 => 5 (true) ERROR: Next() is invalid as Begin() is never called -ERROR: HasNext() is invalid as Begin() is never called +ERROR: IsEnd() is invalid as Begin() is never called 0 => 5 (false) 0 => 5 (true) 2 => 6 (true) diff --git a/src/ai/api/ai_abstractlist.cpp b/src/ai/api/ai_abstractlist.cpp index 9aeff4fc4..e169f5ef6 100644 --- a/src/ai/api/ai_abstractlist.cpp +++ b/src/ai/api/ai_abstractlist.cpp @@ -42,9 +42,9 @@ public: virtual int32 Next() = 0; /** - * See if there is a next item of the sorter. + * See if the sorter has reached the end. */ - virtual bool HasNext() = 0; + virtual bool IsEnd() = 0; /** * Callback from the list if an item gets removed. @@ -114,7 +114,7 @@ public: int32 Next() { - if (!this->HasNext()) return 0; + if (this->IsEnd()) return 0; int32 item_current = this->item_next; FindNext(); @@ -123,7 +123,7 @@ public: void Remove(int item) { - if (!this->HasNext()) return; + if (this->IsEnd()) return; /* If we remove the 'next' item, skip to the next */ if (item == this->item_next) { @@ -132,9 +132,9 @@ public: } } - bool HasNext() + bool IsEnd() { - return !(this->list->buckets.empty() || this->has_no_more_items); + return this->list->buckets.empty() || this->has_no_more_items; } }; @@ -208,7 +208,7 @@ public: int32 Next() { - if (!this->HasNext()) return 0; + if (this->IsEnd()) return 0; int32 item_current = this->item_next; FindNext(); @@ -217,7 +217,7 @@ public: void Remove(int item) { - if (!this->HasNext()) return; + if (this->IsEnd()) return; /* If we remove the 'next' item, skip to the next */ if (item == this->item_next) { @@ -226,9 +226,9 @@ public: } } - bool HasNext() + bool IsEnd() { - return !(this->list->buckets.empty() || this->has_no_more_items); + return this->list->buckets.empty() || this->has_no_more_items; } }; @@ -278,7 +278,7 @@ public: int32 Next() { - if (!this->HasNext()) return 0; + if (this->IsEnd()) return 0; int32 item_current = this->item_next; FindNext(); @@ -287,7 +287,7 @@ public: void Remove(int item) { - if (!this->HasNext()) return; + if (this->IsEnd()) return; /* If we remove the 'next' item, skip to the next */ if (item == this->item_next) { @@ -296,9 +296,9 @@ public: } } - bool HasNext() + bool IsEnd() { - return !(this->list->items.empty() || this->has_no_more_items); + return this->list->items.empty() || this->has_no_more_items; } }; @@ -349,7 +349,7 @@ public: int32 Next() { - if (!this->HasNext()) return 0; + if (this->IsEnd()) return 0; int32 item_current = this->item_next; FindNext(); @@ -358,7 +358,7 @@ public: void Remove(int item) { - if (!this->HasNext()) return; + if (this->IsEnd()) return; /* If we remove the 'next' item, skip to the next */ if (item == this->item_next) { @@ -367,9 +367,9 @@ public: } } - bool HasNext() + bool IsEnd() { - return !(this->list->items.empty() || this->has_no_more_items); + return this->list->items.empty() || this->has_no_more_items; } }; @@ -448,13 +448,13 @@ bool AIAbstractList::IsEmpty() return this->items.empty(); } -bool AIAbstractList::HasNext() +bool AIAbstractList::IsEnd() { if (this->initialized == false) { - DEBUG(ai, 0, "HasNext() is invalid as Begin() is never called"); - return false; + DEBUG(ai, 0, "IsEnd() is invalid as Begin() is never called"); + return true; } - return this->sorter->HasNext(); + return this->sorter->IsEnd(); } int32 AIAbstractList::Count() @@ -748,7 +748,7 @@ SQInteger AIAbstractList::_nexti(HSQUIRRELVM vm) sq_getinteger(vm, 2, &idx); int val = this->Next(); - if (!this->HasNext()) { + if (this->IsEnd()) { sq_pushnull(vm); return 1; } diff --git a/src/ai/api/ai_abstractlist.hpp b/src/ai/api/ai_abstractlist.hpp index bf4c9897d..ab3b4925a 100644 --- a/src/ai/api/ai_abstractlist.hpp +++ b/src/ai/api/ai_abstractlist.hpp @@ -86,13 +86,14 @@ public: /** * Go to the beginning of the list. * @return the item value of the first item. + * @note returns 0 if beyond end-of-list. Use IsEnd() to check for end-of-list. */ int32 Begin(); /** * Go to the next item in the list. * @return the item value of the next item. - * @note returns 0 if beyond end-of-list. Use HasNext() to check for end-of-list. + * @note returns 0 if beyond end-of-list. Use IsEnd() to check for end-of-list. */ int32 Next(); @@ -103,11 +104,11 @@ public: bool IsEmpty(); /** - * Check if there is a next element. In other words, if this is true, - * Next() will return a valid item. - * @return true if there is a next item. + * Check if there is a element left. In other words, if this is false, + * the last call to Begin() or Next() returned a valid item. + * @return true if the current item is beyond end-of-list. */ - bool HasNext(); + bool IsEnd(); /** * Returns the amount of items in the list. diff --git a/src/ai/api/ai_abstractlist.hpp.sq b/src/ai/api/ai_abstractlist.hpp.sq index 22b8977c7..aaa8503a1 100644 --- a/src/ai/api/ai_abstractlist.hpp.sq +++ b/src/ai/api/ai_abstractlist.hpp.sq @@ -41,7 +41,7 @@ void SQAIAbstractList_Register(Squirrel *engine) SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Begin, "Begin", 1, "x"); SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Next, "Next", 1, "x"); SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::IsEmpty, "IsEmpty", 1, "x"); - SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::HasNext, "HasNext", 1, "x"); + SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::IsEnd, "IsEnd", 1, "x"); SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::Count, "Count", 1, "x"); SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::GetValue, "GetValue", 2, "xi"); SQAIAbstractList.DefSQMethod(engine, &AIAbstractList::SetValue, "SetValue", 3, "xii"); diff --git a/src/ai/api/ai_changelog.hpp b/src/ai/api/ai_changelog.hpp index 16b9505b7..4c0f7f876 100644 --- a/src/ai/api/ai_changelog.hpp +++ b/src/ai/api/ai_changelog.hpp @@ -18,6 +18,12 @@ * * 1.1.0 is not yet released. The following changes are not set in stone yet. * + * API additions: + * \li IsEnd for all lists. + * + * API removals: + * \li HasNext for all lists. + * * Other changes: * \li AIRoad::BuildRoadStation now allows overbuilding * \li AIRoad::BuildDriveThroughRoadStation now allows overbuilding |