X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=blobdiff_plain;f=yarrg%2Frscommon.h;h=0933e0fecc9565b2368ebb0d3f4b55284aff5f6b;hp=f0215b29c9559b49873eaed7f0a975b810090e33;hb=706d75804688b94f51b806adc44f10269c35b0db;hpb=2d200537436a446c0fd7d62921f5a5fec231a696 diff --git a/yarrg/rscommon.h b/yarrg/rscommon.h index f0215b2..0933e0f 100644 --- a/yarrg/rscommon.h +++ b/yarrg/rscommon.h @@ -21,10 +21,15 @@ #define COUNTER_LIST \ CTR(commodities_loaded) \ CTR(trades_loaded) \ + CTR(islands_arbitrage) \ + CTR(ipairs_relevant) \ CTR(quantities_loaded) \ CTR(routes_considered) \ - CTR(routes_eliminated) \ + CTR(routes_quickelim) \ + CTR(routes_stratelim) \ CTR(routes_valued) \ + CTR(newbests_strat_absolute) \ + CTR(newbests_strat_perleague) \ CTR(subroute_tails_valued) \ CTR(subroutes_valued) \ CTR(subroutes_nonempty) @@ -108,7 +113,7 @@ typedef struct { void setup_search(void); void search(int start_isle, PotentialResult ****strat_base_io - /* strat_base[finalisle][midisle]-> */); + /* strat_base[finalarch][midarch]-> */); extern double max_mass, max_volu, max_capi; extern double distance_loss_factor_per_league; @@ -123,9 +128,50 @@ extern char **archnames; extern int *islandid2arch; +#define NEW(ptr) ((ptr)= mmalloc(sizeof(*ptr))) + +#define MCALLOC(array, count) ((array)= mcalloc(sizeof(*(array)) * (count))) + +#define MCALLOC_INITEACH(array, count, init_this) ({ \ + MCALLOC((array), (count)); \ + int initi; \ + typeof(&(array)[0]) this; \ + for (initi=0, this=(array); initi<(count); initi++, this++) { \ + init_this; \ + } \ + }) + + +typedef struct { + double value; + PotentialResult *pr; +} HighScoreEntry; + +extern int nhighscores_absolute, nhighscores_perleague; +extern HighScoreEntry *highscores_absolute; +extern HighScoreEntry *highscores_perleague; + + #define ONDEMAND(pointer_lvalue, calloc_size_count) \ ((pointer_lvalue) ? : \ ((pointer_lvalue) = mcalloc(sizeof(*(pointer_lvalue)) * calloc_size_count))) +static inline int isle2arch(int isle) { + int arch= islandid2arch[isle]; + assert(arch>=0); + return arch; +} + +static inline int route2midarch(const int *ports, int nports) { + int archs[nports], last_arch=-1, narchs=0, i; + for (i=0; i