# yapf_node_road.hpp

Go to the documentation of this file.

    00001 /* $Id$ */
    00002
    00003 /*
    00004  * This file is part of OpenTTD.
    00005  * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
    00006  * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    00007  * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
    00008  */
    00009
    00012 #ifndef  YAPF_NODE_ROAD_HPP
    00013 #define  YAPF_NODE_ROAD_HPP
    00014
    00016 template <class Tkey_>
    00017 struct CYapfRoadNodeT
    00018   : CYapfNodeT<Tkey_, CYapfRoadNodeT<Tkey_> >
    00019 {
    00020   typedef CYapfNodeT<Tkey_, CYapfRoadNodeT<Tkey_> > base;
    00021
    00022   TileIndex       m_segment_last_tile;
    00023   Trackdir        m_segment_last_td;
    00024
    00025   void Set(CYapfRoadNodeT *parent, TileIndex tile, Trackdir td, bool is_choice)
    00026   {
    00027     base::Set(parent, tile, td, is_choice);
    00028     m_segment_last_tile = tile;
    00029     m_segment_last_td = td;
    00030   }
    00031 };
    00032
    00033 /* now define two major node types (that differ by key type) */
    00034 typedef CYapfRoadNodeT<CYapfNodeKeyExitDir>  CYapfRoadNodeExitDir;
    00035 typedef CYapfRoadNodeT<CYapfNodeKeyTrackDir> CYapfRoadNodeTrackDir;
    00036
    00037 /* Default NodeList types */
    00038 typedef CNodeList_HashTableT<CYapfRoadNodeExitDir , 8, 12> CRoadNodeListExitDir;
    00039 typedef CNodeList_HashTableT<CYapfRoadNodeTrackDir, 10, 14> CRoadNodeListTrackDir;
    00040
    00041 #endif /* YAPF_NODE_ROAD_HPP */