From 66bbf336c6af7353ef0aeed58002c46543b30635 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 2 Jan 2007 19:19:48 +0000 Subject: (svn r7759) -Merge: makefile rewrite. This merge features: - A proper ./configure, so everything needs to be configured only once, not for every make. - Usage of makedepend when available. This greatly reduces the time needed for generating the dependencies. - A generator for all project files. There is a single file with sources, which is used to generate Makefiles and the project files for MSVC. - Proper support for OSX universal binaries. - Object files for non-MSVC compiles are also placed in separate directories, making is faster to switch between debug and release compiles and it does not touch the directory with the source files. - Functionality to make a bundle of all needed files for for example a nightly or distribution of a binary with all needed GRFs and language files. Note: as this merge moves almost all files, it is recommended to make a backup of your working copy before updating your working copy. --- yapf/yapf_common.hpp | 163 --------------------------------------------------- 1 file changed, 163 deletions(-) delete mode 100644 yapf/yapf_common.hpp (limited to 'yapf/yapf_common.hpp') diff --git a/yapf/yapf_common.hpp b/yapf/yapf_common.hpp deleted file mode 100644 index 869bc820c..000000000 --- a/yapf/yapf_common.hpp +++ /dev/null @@ -1,163 +0,0 @@ -/* $Id$ */ - -#ifndef YAPF_COMMON_HPP -#define YAPF_COMMON_HPP - -/** YAPF origin provider base class - used when origin is one tile / multiple trackdirs */ -template -class CYapfOriginTileT -{ -public: - typedef typename Types::Tpf Tpf; ///< the pathfinder class (derived from THIS class) - typedef typename Types::NodeList::Titem Node; ///< this will be our node type - typedef typename Node::Key Key; ///< key to hash tables - -protected: - TileIndex m_orgTile; ///< origin tile - TrackdirBits m_orgTrackdirs; ///< origin trackdir mask - - /// to access inherited path finder - FORCEINLINE Tpf& Yapf() {return *static_cast(this);} - -public: - /// Set origin tile / trackdir mask - void SetOrigin(TileIndex tile, TrackdirBits trackdirs) - { - m_orgTile = tile; - m_orgTrackdirs = trackdirs; - } - - /// Called when YAPF needs to place origin nodes into open list - void PfSetStartupNodes() - { - bool is_choice = (KillFirstBit2x64(m_orgTrackdirs) != 0); - for (TrackdirBits tdb = m_orgTrackdirs; tdb != TRACKDIR_BIT_NONE; tdb = (TrackdirBits)KillFirstBit2x64(tdb)) { - Trackdir td = (Trackdir)FindFirstBit2x64(tdb); - Node& n1 = Yapf().CreateNewNode(); - n1.Set(NULL, m_orgTile, td, is_choice); - Yapf().AddStartupNode(n1); - } - } -}; - -/** YAPF origin provider base class - used when there are two tile/trackdir origins */ -template -class CYapfOriginTileTwoWayT -{ -public: - typedef typename Types::Tpf Tpf; ///< the pathfinder class (derived from THIS class) - typedef typename Types::NodeList::Titem Node; ///< this will be our node type - typedef typename Node::Key Key; ///< key to hash tables - -protected: - TileIndex m_orgTile; ///< first origin tile - Trackdir m_orgTd; ///< first origin trackdir - TileIndex m_revTile; ///< second (reversed) origin tile - Trackdir m_revTd; ///< second (reversed) origin trackdir - int m_reverse_penalty; ///< penalty to be added for using the reversed origin - bool m_treat_first_red_two_way_signal_as_eol; ///< in some cases (leaving station) we need to handle first two-way signal differently - - /// to access inherited path finder - FORCEINLINE Tpf& Yapf() {return *static_cast(this);} - -public: - /// set origin (tiles, trackdirs, etc.) - void SetOrigin(TileIndex tile, Trackdir td, TileIndex tiler = INVALID_TILE, Trackdir tdr = INVALID_TRACKDIR, int reverse_penalty = 0, bool treat_first_red_two_way_signal_as_eol = true) - { - m_orgTile = tile; - m_orgTd = td; - m_revTile = tiler; - m_revTd = tdr; - m_reverse_penalty = reverse_penalty; - m_treat_first_red_two_way_signal_as_eol = treat_first_red_two_way_signal_as_eol; - } - - /// Called when YAPF needs to place origin nodes into open list - void PfSetStartupNodes() - { - if (m_orgTile != INVALID_TILE && m_orgTd != INVALID_TRACKDIR) { - Node& n1 = Yapf().CreateNewNode(); - n1.Set(NULL, m_orgTile, m_orgTd, false); - Yapf().AddStartupNode(n1); - } - if (m_revTile != INVALID_TILE && m_revTd != INVALID_TRACKDIR) { - Node& n2 = Yapf().CreateNewNode(); - n2.Set(NULL, m_revTile, m_revTd, false); - n2.m_cost = m_reverse_penalty; - Yapf().AddStartupNode(n2); - } - } - - /// return true if first two-way signal should be treated as dead end - FORCEINLINE bool TreatFirstRedTwoWaySignalAsEOL() - { - return Yapf().PfGetSettings().rail_firstred_twoway_eol && m_treat_first_red_two_way_signal_as_eol; - } -}; - -/** YAPF destination provider base class - used when destination is single tile / multiple trackdirs */ -template -class CYapfDestinationTileT -{ -public: - typedef typename Types::Tpf Tpf; ///< the pathfinder class (derived from THIS class) - typedef typename Types::NodeList::Titem Node; ///< this will be our node type - typedef typename Node::Key Key; ///< key to hash tables - -protected: - TileIndex m_destTile; ///< destination tile - TrackdirBits m_destTrackdirs; ///< destination trackdir mask - -public: - /// set the destination tile / more trackdirs - void SetDestination(TileIndex tile, TrackdirBits trackdirs) - { - m_destTile = tile; - m_destTrackdirs = trackdirs; - } - -protected: - /// to access inherited path finder - Tpf& Yapf() {return *static_cast(this);} - -public: - /// Called by YAPF to detect if node ends in the desired destination - FORCEINLINE bool PfDetectDestination(Node& n) - { - bool bDest = (n.m_key.m_tile == m_destTile) && ((m_destTrackdirs & TrackdirToTrackdirBits(n.GetTrackdir())) != TRACKDIR_BIT_NONE); - return bDest; - } - - /** Called by YAPF to calculate cost estimate. Calculates distance to the destination - * 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)); - assert(dx >= 0 && dy >= 0); - int dd = min(dx, dy); - int dxy = abs(dx - dy); - int d = 14 * dd + 10 * dxy; - n.m_estimate = n.m_cost + d /*+ d / 8*/; - return true; - } -}; - -/** YAPF template that uses Ttypes template argument to determine all YAPF - * components (base classes) from which the actual YAPF is composed. - * For example classes consult: CYapfRail_TypesT template and its instantiations: - * CYapfRail1, CYapfRail2, CYapfRail3, CYapfAnyDepotRail1, CYapfAnyDepotRail2, CYapfAnyDepotRail3 */ -template -class CYapfT - : public Ttypes::PfBase ///< Instance of CYapfBaseT - main YAPF loop and support base class - , public Ttypes::PfCost ///< Cost calculation provider base class - , public Ttypes::PfCache ///< Segment cost cache provider - , public Ttypes::PfOrigin ///< Origin (tile or two-tile origin) - , public Ttypes::PfDestination ///< Destination detector and distance (estimate) calculation provider - , public Ttypes::PfFollow ///< Node follower (stepping provider) -{ -}; - - - -#endif /* YAPF_COMMON_HPP */ -- cgit v1.2.3-70-g09d2