From: Ian Jackson Date: Sat, 26 Sep 2009 18:01:45 +0000 (+0100) Subject: WIP routesearch; before one query per pair X-Git-Tag: 5.0^2~103 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~yarrgweb/git?p=ypp-sc-tools.db-live.git;a=commitdiff_plain;h=3ca67ce14212ba4421029d7b8db90f03f106c67c WIP routesearch; before one query per pair --- diff --git a/.gitignore b/.gitignore index a058839..9beb60b 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ yarrg/t.* yarrg/u.* yarrg/yarrg +yarrg/routesearch yarrg/_*.* yarrg/OCEAN-*.db diff --git a/yarrg/Makefile b/yarrg/Makefile index 446ef98..708bfa2 100644 --- a/yarrg/Makefile +++ b/yarrg/Makefile @@ -33,15 +33,23 @@ CFLAGS += $(WARNINGS) $(WERROR) $(OPTIMISE) $(DEBUG) TARGETS= yarrg -all: clean-other-directory $(TARGETS) +default: clean-other-directory $(TARGETS) +all: default routesearch CONVERT_OBJS= convert.o ocr.o pages.o structure.o common.o rgbimage.o resolve.o +ROUTESEARCH_OBJS= rsvalue.o rsmain.o + yarrg: $(CONVERT_OBJS) -lnetpbm -lXtst -lX11 -lpcre -lm $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) $(CONVERT_OBJS): ocr.h convert.h structure.h common.h +routesearch: $(ROUTESEARCH_OBJS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS) + +$(ROUTESEARCH_OBJS): rscommon.h + clean: rm -f *.o core core.* *~ vgcore.* rm -f t t.* u u.* v v.* *.tmp *.orig *.rej diff --git a/yarrg/rscommon.h b/yarrg/rscommon.h new file mode 100644 index 0000000..658bbdd --- /dev/null +++ b/yarrg/rscommon.h @@ -0,0 +1,14 @@ +#ifndef RSCOMMON_H +#define RSCOMMON_H + +#include + +#include +#include +#include + +extern struct sqlite *db; + +void value_route(int nislands, const int *islands); + +#endif /*RSCOMMON_H*/ diff --git a/yarrg/rsmain.c b/yarrg/rsmain.c new file mode 100644 index 0000000..00e918e --- /dev/null +++ b/yarrg/rsmain.c @@ -0,0 +1,13 @@ +/**/ + +#include "rscommon.h" + +int main(int argc, const char **argv) { + int ia[argc], ni=0; + const char *arg; + while ((arg= *++argv)) { + ia[ni++]= atoi(arg); + } + value_route(ni, ia); + return 0; +} diff --git a/yarrg/rsvalue.c b/yarrg/rsvalue.c new file mode 100644 index 0000000..6778523 --- /dev/null +++ b/yarrg/rsvalue.c @@ -0,0 +1,54 @@ +/**/ + +#include "rscommon.h" + +void value_route(int nislands, const int *islands) { + char stmt[1024+80*nislands+40*nislands*nislands], *sp; + int s,d; + + sp= stmt; + sp += sprintf(sp, + "SELECT\n" + " sell.islandid src_id,\n" + " sell.price src_price,\n" + " sum(sell.qty) src_qty,\n" + " buy.islandid dst_id,\n" + " buy.price dst_price,\n" + " sum(buy.qty) dst_qty,\n" + " commods.commodid commodid,\n" + " commods.unitmass unitmass,\n" + " commods.unitvolume unitvolume,\n" + " dist dist,\n" + " buy.price-sell.price unitprofit\n" + " FROM commods\n" + " JOIN sell ON commods.commodid = sell.commodid\n" + " JOIN buy ON commods.commodid = buy.commodid\n" + " JOIN dists ON aiid = sell.islandid AND biid = buy.islandid\n" + " WHERE buy.price > sell.price\n" + " AND ("); + for (s=0; su --edit-charset --find-island --ocean sage +file routesearch +set args 1 2 3 #break structure.c:596 if here!=aa_background -break mustfail2 +#break mustfail2 run