summaryrefslogtreecommitdiff
path: root/src/yapf
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-01-10 18:56:51 +0000
committerrubidium <rubidium@openttd.org>2007-01-10 18:56:51 +0000
commitf35ed4bbc2b05f1b83476b60948d64375f77f1b4 (patch)
tree1a1c59c13ddb1d152052f3a3a0bcffe4fb531173 /src/yapf
parenta332d10fd938f345fff18e5f4a662a58f692f734 (diff)
downloadopenttd-f35ed4bbc2b05f1b83476b60948d64375f77f1b4.tar.xz
(svn r8038) -Merge: the cpp branch. Effort of KUDr, Celestar, glx, Smoovius, stillunknown and pv2b.
Diffstat (limited to 'src/yapf')
-rw-r--r--src/yapf/follow_track.hpp2
-rw-r--r--src/yapf/track_dir.hpp24
-rw-r--r--src/yapf/yapf.h2
-rw-r--r--src/yapf/yapf.hpp8
-rw-r--r--src/yapf/yapf_base.hpp2
-rw-r--r--src/yapf/yapf_common.hpp4
-rw-r--r--src/yapf/yapf_costrail.hpp4
-rw-r--r--src/yapf/yapf_rail.cpp12
8 files changed, 14 insertions, 44 deletions
diff --git a/src/yapf/follow_track.hpp b/src/yapf/follow_track.hpp
index 7864dc5e5..36cc75a4a 100644
--- a/src/yapf/follow_track.hpp
+++ b/src/yapf/follow_track.hpp
@@ -171,7 +171,7 @@ protected:
// rail transport is possible only on compatible rail types
if (IsRailTT()) {
- RailType rail_type = GetTileRailType(m_new_tile, DiagdirToDiagTrackdir(m_exitdir));
+ RailType rail_type = GetTileRailType(m_new_tile, TrackdirToTrack(DiagdirToDiagTrackdir(m_exitdir)));
if (((1 << rail_type) & m_veh->u.rail.compatible_railtypes) == 0) {
// incompatible rail type
return false;
diff --git a/src/yapf/track_dir.hpp b/src/yapf/track_dir.hpp
index 0239f853e..824075577 100644
--- a/src/yapf/track_dir.hpp
+++ b/src/yapf/track_dir.hpp
@@ -3,33 +3,9 @@
#ifndef TRACK_DIR_HPP
#define TRACK_DIR_HPP
-EXTERN_C_BEGIN
#include "../tile.h"
#include "../openttd.h"
#include "../map.h"
#include "../rail.h"
-EXTERN_C_END
-
-/** Helpers to allow to work with enum as with type safe bit set in C++ */
-#define DECLARE_ENUM_AS_BIT_MASK(mask_t) \
- FORCEINLINE mask_t operator | (mask_t m1, mask_t m2) {return (mask_t)((int)m1 | m2);} \
- FORCEINLINE mask_t operator & (mask_t m1, mask_t m2) {return (mask_t)((int)m1 & m2);} \
- FORCEINLINE mask_t operator ^ (mask_t m1, mask_t m2) {return (mask_t)((int)m1 ^ m2);} \
- FORCEINLINE mask_t& operator |= (mask_t& m1, mask_t m2) {m1 = m1 | m2; return m1;} \
- FORCEINLINE mask_t& operator &= (mask_t& m1, mask_t m2) {m1 = m1 & m2; return m1;} \
- FORCEINLINE mask_t& operator ^= (mask_t& m1, mask_t m2) {m1 = m1 ^ m2; return m1;} \
- FORCEINLINE mask_t operator ~(mask_t m) {return (mask_t)(~(int)m);}
-
-/** probably redundant enum combining operators (as we have conversion functions) */
-#define DECLARE_ENUM_AS_BIT_INDEX(idx_t, mask_t) \
- FORCEINLINE mask_t operator << (int m, idx_t i) {return (mask_t)(m << (int)i);} \
- FORCEINLINE mask_t operator << (mask_t m, int i) {return (mask_t)(((int)m) << i);} \
- FORCEINLINE mask_t operator >> (mask_t m, int i) {return (mask_t)(((int)m) >> i);}
-
-DECLARE_ENUM_AS_BIT_MASK(TrackBits)
-DECLARE_ENUM_AS_BIT_INDEX(Track, TrackBits)
-
-DECLARE_ENUM_AS_BIT_MASK(TrackdirBits)
-DECLARE_ENUM_AS_BIT_INDEX(Trackdir, TrackdirBits)
#endif /* TRACK_DIR_HPP */
diff --git a/src/yapf/yapf.h b/src/yapf/yapf.h
index 6b58b4e08..76f2dc1cb 100644
--- a/src/yapf/yapf.h
+++ b/src/yapf/yapf.h
@@ -31,7 +31,7 @@ Trackdir YapfChooseRoadTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir)
* @param no_path_found [out] true is returned if no path can be found (returned Trackdir is only a 'guess')
* @return the best trackdir for next turn or INVALID_TRACKDIR if the path could not be found
*/
-Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found);
+Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found);
/** Used by RV multistop feature to find the nearest road stop that has a free slot.
* @param v RV (its current tile will be the origin)
diff --git a/src/yapf/yapf.hpp b/src/yapf/yapf.hpp
index 208f29c46..5aa63de1a 100644
--- a/src/yapf/yapf.hpp
+++ b/src/yapf/yapf.hpp
@@ -7,7 +7,6 @@
#include "track_dir.hpp"
-EXTERN_C_BEGIN
#include "../depot.h"
#include "../road_map.h"
#include "../tunnel_map.h"
@@ -22,12 +21,9 @@ EXTERN_C_BEGIN
#include "../pathfind.h"
#include "../waypoint.h"
#include "../debug.h"
-EXTERN_C_END
-EXTERN_C_BEGIN
- extern Patches _patches_newgame;
- extern uint64 _rdtsc(void);
-EXTERN_C_END
+extern Patches _patches_newgame;
+extern uint64 _rdtsc(void);
#include <limits.h>
#include <new>
diff --git a/src/yapf/yapf_base.hpp b/src/yapf/yapf_base.hpp
index 1d0417987..e4ef5abc3 100644
--- a/src/yapf/yapf_base.hpp
+++ b/src/yapf/yapf_base.hpp
@@ -3,9 +3,7 @@
#ifndef YAPF_BASE_HPP
#define YAPF_BASE_HPP
-EXTERN_C_BEGIN
#include "../debug.h"
-EXTERN_C_END
#include "fixedsizearray.hpp"
#include "blob.hpp"
diff --git a/src/yapf/yapf_common.hpp b/src/yapf/yapf_common.hpp
index 869bc820c..87deffeda 100644
--- a/src/yapf/yapf_common.hpp
+++ b/src/yapf/yapf_common.hpp
@@ -132,8 +132,8 @@ public:
* adds it to the actual cost from origin and stores the sum to the Node::m_estimate */
inline bool PfCalcEstimate(Node& n)
{
- int dx = abs(TileX(n.GetTile()) - TileX(m_destTile));
- int dy = abs(TileY(n.GetTile()) - TileY(m_destTile));
+ int dx = delta(TileX(n.GetTile()), TileX(m_destTile));
+ int dy = delta(TileY(n.GetTile()), TileY(m_destTile));
assert(dx >= 0 && dy >= 0);
int dd = min(dx, dy);
int dxy = abs(dx - dy);
diff --git a/src/yapf/yapf_costrail.hpp b/src/yapf/yapf_costrail.hpp
index 93062b5c2..b48257e46 100644
--- a/src/yapf/yapf_costrail.hpp
+++ b/src/yapf/yapf_costrail.hpp
@@ -195,7 +195,7 @@ public:
Trackdir trackdir = n.m_key.m_td;
TileType tile_type = GetTileType(tile);
- RailType rail_type = GetTileRailType(tile, trackdir);
+ RailType rail_type = GetTileRailType(tile, TrackdirToTrack(trackdir));
bool target_seen = Yapf().PfDetectDestination(tile, trackdir);
@@ -252,7 +252,7 @@ public:
// if tail type changes, finish segment (cached segment can't contain more rail types)
{
- RailType new_rail_type = GetTileRailType(F.m_new_tile, (Trackdir)FindFirstBit2x64(F.m_new_td_bits));
+ RailType new_rail_type = GetTileRailType(F.m_new_tile, TrackdirToTrack(FindFirstTrackdir(F.m_new_td_bits)));
if (new_rail_type != rail_type) {
break;
}
diff --git a/src/yapf/yapf_rail.cpp b/src/yapf/yapf_rail.cpp
index 1461b9402..5073b8705 100644
--- a/src/yapf/yapf_rail.cpp
+++ b/src/yapf/yapf_rail.cpp
@@ -103,14 +103,14 @@ public:
/// return debug report character to identify the transportation type
FORCEINLINE char TransportTypeChar() const {return 't';}
- static Trackdir stChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found)
+ static Trackdir stChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found)
{
// create pathfinder instance
Tpf pf;
- return pf.ChooseRailTrack(v, tile, enterdir, trackdirs, path_not_found);
+ return pf.ChooseRailTrack(v, tile, enterdir, tracks, path_not_found);
}
- FORCEINLINE Trackdir ChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found)
+ FORCEINLINE Trackdir ChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found)
{
// set origin and destination nodes
Yapf().SetOrigin(v->tile, GetVehicleTrackdir(v), INVALID_TILE, INVALID_TRACKDIR, 1, true);
@@ -200,10 +200,10 @@ struct CYapfAnyDepotRail2 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail2, CFollowT
struct CYapfAnyDepotRail3 : CYapfT<CYapfRail_TypesT<CYapfAnyDepotRail3, CFollowTrackRailNo90, CRailNodeListTrackDir, CYapfDestinationAnyDepotRailT , CYapfFollowAnyDepotRailT> > {};
-Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackdirBits trackdirs, bool *path_not_found)
+Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir, TrackBits tracks, bool *path_not_found)
{
// default is YAPF type 2
- typedef Trackdir (*PfnChooseRailTrack)(Vehicle*, TileIndex, DiagDirection, TrackdirBits, bool*);
+ typedef Trackdir (*PfnChooseRailTrack)(Vehicle*, TileIndex, DiagDirection, TrackBits, bool*);
PfnChooseRailTrack pfnChooseRailTrack = &CYapfRail2::stChooseRailTrack;
// check if non-default YAPF type needed
@@ -212,7 +212,7 @@ Trackdir YapfChooseRailTrack(Vehicle *v, TileIndex tile, DiagDirection enterdir,
else if (_patches.yapf.disable_node_optimization)
pfnChooseRailTrack = &CYapfRail1::stChooseRailTrack; // Trackdir, allow 90-deg
- Trackdir td_ret = pfnChooseRailTrack(v, tile, enterdir, trackdirs, path_not_found);
+ Trackdir td_ret = pfnChooseRailTrack(v, tile, enterdir, tracks, path_not_found);
return td_ret;
}