(svn r18420) -Codechange: split YAPF's track follower from the actual YAPF code

This commit is contained in:
rubidium 2009-12-07 08:41:18 +00:00
parent 73df2c7a25
commit ad6d8c1f46
8 changed files with 116 additions and 117 deletions

View File

@ -3451,6 +3451,10 @@
<Filter <Filter
Name="Pathfinder" Name="Pathfinder"
> >
<File
RelativePath=".\..\src\pathfinder\follow_track.hpp"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\opf\opf_ship.cpp" RelativePath=".\..\src\pathfinder\opf\opf_ship.cpp"
> >
@ -3467,6 +3471,10 @@
RelativePath=".\..\src\pathfinder\pathfinder_type.h" RelativePath=".\..\src\pathfinder\pathfinder_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\pf_performance_timer.hpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="NPF" Name="NPF"
@ -3491,10 +3499,6 @@
RelativePath=".\..\src\pathfinder\npf\npf.cpp" RelativePath=".\..\src\pathfinder\npf\npf.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\npf\npf.h"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\npf\npf_func.h" RelativePath=".\..\src\pathfinder\npf\npf_func.h"
> >
@ -3503,10 +3507,6 @@
<Filter <Filter
Name="YAPF" Name="YAPF"
> >
<File
RelativePath=".\..\src\pathfinder\yapf\follow_track.hpp"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\yapf\nodelist.hpp" RelativePath=".\..\src\pathfinder\yapf\nodelist.hpp"
> >

View File

@ -3448,6 +3448,10 @@
<Filter <Filter
Name="Pathfinder" Name="Pathfinder"
> >
<File
RelativePath=".\..\src\pathfinder\follow_track.hpp"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\opf\opf_ship.cpp" RelativePath=".\..\src\pathfinder\opf\opf_ship.cpp"
> >
@ -3464,6 +3468,10 @@
RelativePath=".\..\src\pathfinder\pathfinder_type.h" RelativePath=".\..\src\pathfinder\pathfinder_type.h"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\pf_performance_timer.hpp"
>
</File>
</Filter> </Filter>
<Filter <Filter
Name="NPF" Name="NPF"
@ -3488,10 +3496,6 @@
RelativePath=".\..\src\pathfinder\npf\npf.cpp" RelativePath=".\..\src\pathfinder\npf\npf.cpp"
> >
</File> </File>
<File
RelativePath=".\..\src\pathfinder\npf\npf.h"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\npf\npf_func.h" RelativePath=".\..\src\pathfinder\npf\npf_func.h"
> >
@ -3500,10 +3504,6 @@
<Filter <Filter
Name="YAPF" Name="YAPF"
> >
<File
RelativePath=".\..\src\pathfinder\yapf\follow_track.hpp"
>
</File>
<File <File
RelativePath=".\..\src\pathfinder\yapf\nodelist.hpp" RelativePath=".\..\src\pathfinder\yapf\nodelist.hpp"
> >

View File

@ -814,10 +814,12 @@ network/core/udp.cpp
network/core/udp.h network/core/udp.h
# Pathfinder # Pathfinder
pathfinder/follow_track.hpp
pathfinder/opf/opf_ship.cpp pathfinder/opf/opf_ship.cpp
pathfinder/opf/opf_ship.h pathfinder/opf/opf_ship.h
pathfinder/pathfinder_func.h pathfinder/pathfinder_func.h
pathfinder/pathfinder_type.h pathfinder/pathfinder_type.h
pathfinder/pf_performance_timer.hpp
# NPF # NPF
pathfinder/npf/aystar.cpp pathfinder/npf/aystar.cpp
@ -825,11 +827,9 @@ pathfinder/npf/aystar.h
pathfinder/npf/queue.cpp pathfinder/npf/queue.cpp
pathfinder/npf/queue.h pathfinder/npf/queue.h
pathfinder/npf/npf.cpp pathfinder/npf/npf.cpp
pathfinder/npf/npf.h
pathfinder/npf/npf_func.h pathfinder/npf/npf_func.h
# YAPF # YAPF
pathfinder/yapf/follow_track.hpp
pathfinder/yapf/nodelist.hpp pathfinder/yapf/nodelist.hpp
pathfinder/yapf/yapf.h pathfinder/yapf/yapf.h
pathfinder/yapf/yapf.hpp pathfinder/yapf/yapf.hpp

View File

@ -12,10 +12,14 @@
#ifndef FOLLOW_TRACK_HPP #ifndef FOLLOW_TRACK_HPP
#define FOLLOW_TRACK_HPP #define FOLLOW_TRACK_HPP
#include "yapf.hpp" #include "../depot_map.h"
#include "../../depot_map.h" #include "../pbs.h"
#include "../../roadveh.h" #include "../roadveh.h"
#include "../../train.h" #include "../station_base.h"
#include "../train.h"
#include "../tunnelbridge.h"
#include "../tunnelbridge_map.h"
#include "pf_performance_timer.hpp"
/** Track follower helper template class (can serve pathfinders and vehicle /** Track follower helper template class (can serve pathfinders and vehicle
* controllers). See 6 different typedefs below for 3 different transport * controllers). See 6 different typedefs below for 3 different transport

View File

@ -0,0 +1,82 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* 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.
* 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.
* 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/>.
*/
/** @file pf_performance_timer.hpp Performance timer for pathfinders. */
#ifndef PF_PERFORMANCE_TIMER_HPP
#define PF_PERFORMANCE_TIMER_HPP
extern uint64 ottd_rdtsc();
struct CPerformanceTimer
{
int64 m_start;
int64 m_acc;
CPerformanceTimer() : m_start(0), m_acc(0) {}
FORCEINLINE void Start()
{
m_start = QueryTime();
}
FORCEINLINE void Stop()
{
m_acc += QueryTime() - m_start;
}
FORCEINLINE int Get(int64 coef)
{
return (int)(m_acc * coef / QueryFrequency());
}
FORCEINLINE int64 QueryTime()
{
return ottd_rdtsc();
}
FORCEINLINE int64 QueryFrequency()
{
return ((int64)2200 * 1000000);
}
};
struct CPerfStartReal
{
CPerformanceTimer *m_pperf;
FORCEINLINE CPerfStartReal(CPerformanceTimer& perf) : m_pperf(&perf)
{
if (m_pperf != NULL) m_pperf->Start();
}
FORCEINLINE ~CPerfStartReal()
{
Stop();
}
FORCEINLINE void Stop()
{
if (m_pperf != NULL) {
m_pperf->Stop();
m_pperf = NULL;
}
}
};
struct CPerfStartFake
{
FORCEINLINE CPerfStartFake(CPerformanceTimer& perf) {}
FORCEINLINE ~CPerfStartFake() {}
FORCEINLINE void Stop() {}
};
typedef CPerfStartFake CPerfStart;
#endif /* PF_PERFORMANCE_TIMER_HPP */

View File

@ -12,100 +12,10 @@
#ifndef YAPF_HPP #ifndef YAPF_HPP
#define YAPF_HPP #define YAPF_HPP
#include "../../openttd.h"
#include "../../vehicle_base.h"
#include "../../road_map.h"
#include "../../tunnel_map.h"
#include "../../bridge_map.h"
#include "../../tunnelbridge_map.h"
#include "../../bridge.h"
#include "../../station_map.h"
#include "../../tile_cmd.h"
#include "../../landscape.h" #include "../../landscape.h"
#include "yapf.h"
#include "../pathfinder_func.h" #include "../pathfinder_func.h"
#include "../../pbs.h" #include "../pf_performance_timer.hpp"
#include "../../waypoint_base.h" #include "yapf.h"
#include "../../debug.h"
#include "../../settings_type.h"
#include "../../tunnelbridge.h"
extern uint64 ottd_rdtsc();
#include <limits.h>
#include <new>
#if defined(_WIN32) || defined(_WIN64)
# include <windows.h>
#else
# include <time.h>
#endif
struct CPerformanceTimer
{
int64 m_start;
int64 m_acc;
CPerformanceTimer() : m_start(0), m_acc(0) {}
FORCEINLINE void Start()
{
m_start = QueryTime();
}
FORCEINLINE void Stop()
{
m_acc += QueryTime() - m_start;
}
FORCEINLINE int Get(int64 coef)
{
return (int)(m_acc * coef / QueryFrequency());
}
FORCEINLINE int64 QueryTime()
{
return ottd_rdtsc();
}
FORCEINLINE int64 QueryFrequency()
{
return ((int64)2200 * 1000000);
}
};
struct CPerfStartReal
{
CPerformanceTimer *m_pperf;
FORCEINLINE CPerfStartReal(CPerformanceTimer& perf) : m_pperf(&perf)
{
if (m_pperf != NULL) m_pperf->Start();
}
FORCEINLINE ~CPerfStartReal()
{
Stop();
}
FORCEINLINE void Stop()
{
if (m_pperf != NULL) {
m_pperf->Stop();
m_pperf = NULL;
}
}
};
struct CPerfStartFake
{
FORCEINLINE CPerfStartFake(CPerformanceTimer& perf) {}
FORCEINLINE ~CPerfStartFake() {}
FORCEINLINE void Stop() {}
};
typedef CPerfStartFake CPerfStart;
//#undef FORCEINLINE //#undef FORCEINLINE
//#define FORCEINLINE inline //#define FORCEINLINE inline
@ -119,7 +29,7 @@ typedef CPerfStartFake CPerfStart;
#include "../../misc/binaryheap.hpp" #include "../../misc/binaryheap.hpp"
#include "../../misc/dbg_helpers.h" #include "../../misc/dbg_helpers.h"
#include "nodelist.hpp" #include "nodelist.hpp"
#include "follow_track.hpp" #include "../follow_track.hpp"
#include "yapf_base.hpp" #include "yapf_base.hpp"
#include "yapf_node.hpp" #include "yapf_node.hpp"
#include "yapf_common.hpp" #include "yapf_common.hpp"

View File

@ -12,7 +12,8 @@
#include "stdafx.h" #include "stdafx.h"
#include "functions.h" #include "functions.h"
#include "vehicle_func.h" #include "vehicle_func.h"
#include "pathfinder/yapf/follow_track.hpp" #include "pathfinder/follow_track.hpp"
//#include "depot_map.h"
/** /**
* Get the reserved trackbits for any tile, regardless of type. * Get the reserved trackbits for any tile, regardless of type.

View File

@ -14,13 +14,15 @@
#include "articulated_vehicles.h" #include "articulated_vehicles.h"
#include "command_func.h" #include "command_func.h"
#include "pathfinder/npf/npf_func.h" #include "pathfinder/npf/npf_func.h"
#include "pathfinder/yapf/yapf.hpp"
#include "pathfinder/follow_track.hpp"
#include "openttd.h"
#include "news_func.h" #include "news_func.h"
#include "company_func.h" #include "company_func.h"
#include "vehicle_gui.h" #include "vehicle_gui.h"
#include "newgrf_engine.h" #include "newgrf_engine.h"
#include "newgrf_sound.h" #include "newgrf_sound.h"
#include "newgrf_text.h" #include "newgrf_text.h"
#include "pathfinder/yapf/follow_track.hpp"
#include "group.h" #include "group.h"
#include "table/sprites.h" #include "table/sprites.h"
#include "strings_func.h" #include "strings_func.h"