Deep RTS
Classes | Namespaces | Macros | Typedefs | Enumerations | Functions
JPS.h File Reference
#include <stddef.h>
#include <stdlib.h>

Go to the source code of this file.

Classes

struct  JPS__NewDummy
 
struct  JPS::Position
 
struct  JPS::Internal::Node
 
class  JPS::Internal::PodVec< T >
 
class  JPS::Internal::NodeMap
 
class  JPS::Internal::OpenList
 
class  JPS::Internal::SearcherBase
 
class  JPS::Internal::Searcher< GRID >
 

Namespaces

namespace  JPS
 
namespace  JPS::Heuristic
 
namespace  JPS::Internal
 

Macros

#define JPS_NO_FLOAT
 
#define JPS_ASSERT(cond)
 
#define JPS_realloc(p, newsize, oldsize, user)   realloc(p, newsize)
 
#define JPS_free(p, oldsize, user)   free(p)
 
#define JPS_HEURISTIC_ACCURATE(a, b)   (Heuristic::Chebyshev(a, b))
 
#define JPS_HEURISTIC_ESTIMATE(a, b)   (Heuristic::Manhattan(a, b))
 
#define JPS_PLACEMENT_NEW(p)   new(JPS__NewDummy(), p)
 
#define JPS_CHECKGRID(dx, dy)   (grid(x+(dx), y+(dy)))
 
#define JPS_ADDPOS(dx, dy)   do { *w++ = Pos(x+(dx), y+(dy)); } while(0)
 
#define JPS_ADDPOS_CHECK(dx, dy)   do { if(JPS_CHECKGRID(dx, dy)) JPS_ADDPOS(dx, dy); } while(0)
 
#define JPS_ADDPOS_NO_TUNNEL(dx, dy)   do { if(grid(x+(dx),y) || grid(x,y+(dy))) JPS_ADDPOS_CHECK(dx, dy); } while(0)
 

Typedefs

typedef unsigned JPS::PosType
 
typedef int JPS::ScoreType
 
typedef unsigned JPS::SizeT
 
typedef unsigned JPS_Flags
 
typedef PodVec< Node > JPS::Internal::Storage
 
typedef Internal::PodVec< PositionJPS::PathVector
 

Enumerations

enum  JPS_Flags_ {
  JPS_Flag_Default = 0x00 , JPS_Flag_NoGreedy = 0x01 , JPS_Flag_AStarOnly = 0x02 , JPS_Flag_NoStartCheck = 0x04 ,
  JPS_Flag_NoEndCheck = 0x08
}
 
enum  JPS_Result {
  JPS_NO_PATH , JPS_FOUND_PATH , JPS_NEED_MORE_STEPS , JPS_EMPTY_PATH ,
  JPS_OUT_OF_MEMORY
}
 

Functions

void * operator new (size_t, JPS__NewDummy, void *ptr)
 
void operator delete (void *, JPS__NewDummy, void *)
 
ScoreType JPS::Heuristic::Manhattan (const Position &a, const Position &b)
 
ScoreType JPS::Heuristic::Chebyshev (const Position &a, const Position &b)
 
template<typename GRID , typename PV >
SizeT JPS::findPath (PV &path, const GRID &grid, PosType startx, PosType starty, PosType endx, PosType endy, unsigned step=0, JPS_Flags flags=JPS_Flag_Default, void *user=0)
 

Macro Definition Documentation

◆ JPS_ADDPOS

#define JPS_ADDPOS (   dx,
  dy 
)    do { *w++ = Pos(x+(dx), y+(dy)); } while(0)

◆ JPS_ADDPOS_CHECK

#define JPS_ADDPOS_CHECK (   dx,
  dy 
)    do { if(JPS_CHECKGRID(dx, dy)) JPS_ADDPOS(dx, dy); } while(0)

◆ JPS_ADDPOS_NO_TUNNEL

#define JPS_ADDPOS_NO_TUNNEL (   dx,
  dy 
)    do { if(grid(x+(dx),y) || grid(x,y+(dy))) JPS_ADDPOS_CHECK(dx, dy); } while(0)

◆ JPS_ASSERT

#define JPS_ASSERT (   cond)

◆ JPS_CHECKGRID

#define JPS_CHECKGRID (   dx,
  dy 
)    (grid(x+(dx), y+(dy)))

◆ JPS_free

#define JPS_free (   p,
  oldsize,
  user 
)    free(p)

◆ JPS_HEURISTIC_ACCURATE

#define JPS_HEURISTIC_ACCURATE (   a,
 
)    (Heuristic::Chebyshev(a, b))

◆ JPS_HEURISTIC_ESTIMATE

#define JPS_HEURISTIC_ESTIMATE (   a,
 
)    (Heuristic::Manhattan(a, b))

◆ JPS_NO_FLOAT

#define JPS_NO_FLOAT

◆ JPS_PLACEMENT_NEW

#define JPS_PLACEMENT_NEW (   p)    new(JPS__NewDummy(), p)

◆ JPS_realloc

#define JPS_realloc (   p,
  newsize,
  oldsize,
  user 
)    realloc(p, newsize)

Typedef Documentation

◆ JPS_Flags

typedef unsigned JPS_Flags

Enumeration Type Documentation

◆ JPS_Flags_

enum JPS_Flags_
Enumerator
JPS_Flag_Default 
JPS_Flag_NoGreedy 
JPS_Flag_AStarOnly 
JPS_Flag_NoStartCheck 
JPS_Flag_NoEndCheck 

◆ JPS_Result

enum JPS_Result
Enumerator
JPS_NO_PATH 
JPS_FOUND_PATH 
JPS_NEED_MORE_STEPS 
JPS_EMPTY_PATH 
JPS_OUT_OF_MEMORY 

Function Documentation

◆ operator delete()

void operator delete ( void *  ,
JPS__NewDummy  ,
void *   
)
inline

◆ operator new()

void * operator new ( size_t  ,
JPS__NewDummy  ,
void *  ptr 
)
inline