基于六边形的jps寻路算法实现
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
1.6 KiB

#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<stdatomic.h>
#include<erl_nif.h>
#include "eHJpsAtom.h"
struct NifTraits : public moodycamel::ConcurrentQueueDefaultTraits {
static const size_t BLOCK_SIZE = 16;
static const size_t EXPLICIT_BLOCK_EMPTY_COUNTER_THRESHOLD = 16;
static const size_t EXPLICIT_INITIAL_INDEX_SIZE = 8;
static const size_t IMPLICIT_INITIAL_INDEX_SIZE = 8;
static const size_t INITIAL_IMPLICIT_PRODUCER_HASH_SIZE = 16;
static const std::uint32_t EXPLICIT_CONSUMER_CONSUMPTION_QUOTA_BEFORE_ROTATE = 256;
static inline void *malloc(std::size_t size) { return enif_alloc(size); }
static inline void free(void *ptr) { enif_free(ptr); }
};
using lfqIns = moodycamel::ConcurrentQueue<ErlNifBinary, NifTraits> *;
const size_t BulkDelCnt = 200;
typedef struct Node_r {
bool IsBarrier; // 是否障碍
} Node;
int nifLoad(ErlNifEnv* env, void** priv_data, ERL_NIF_TERM load_info) {
enif_fprintf(stdout, "IMY*************nifload00000\n");
NIF_ATOMS(NIF_ATOM_INIT)
enif_fprintf(stdout, "IMY*************nifload00001\n");
*priv_data = NULL;
return 0;
}
int nifUpgrade(ErlNifEnv* env, void** priv_data, void** old_priv_data, ERL_NIF_TERM load_info) {
*priv_data = *old_priv_data;
enif_fprintf(stdout, "IMY*************nifUpgrade %p %T\n", old_priv_data, load_info);
return 0;
}
void nifUnload(ErlNifEnv* env, void* priv_data) {
enif_fprintf(stdout, "IMY*************nifUnload0000 \n");
return;
}
static ErlNifFunc nifFuns[] = {
};
ERL_NIF_INIT(eQuic, nifFuns, nifLoad, NULL, nifUpgrade, nifUnload)