#ifndef _NAV_MAP_MARKOV
#define _NAV_MAP_MARKOV

#include "../00_nav_library/nav_map_baset.h"
#include "nav_map_match.h"

class ScoredHeading { // really it is a struct with default constructor
public:
    ArPose      pose;
    long int    score;
                ScoredHeading() : pose(), score(-MAXLONG) {}
                ScoredHeading(const ArPose &p, long int s) : pose(p), score(s) {}
};

// maps are not changed but they are passed not as constant because we need to lock and unlock them

void NAV_Map_Match_origin_search(NAV_Map_Match &global, NAV_Map_Match &local, NAV_Map_Base<ScoredHeading> &markov);

void NAV_Map_Match_origin_adjust(NAV_Map_Match &global, NAV_Map_Match &local, ArPose &best_pose);


#endif