logo separator

[mkgmap-dev] [mkgmap-svn] Commit: r1488: RuleFileReader.optimiseAndSaveBinaryOp(): Try to be symmetric.

From Steve Ratcliffe steve at parabola.me.uk on Mon Jan 18 11:57:36 GMT 2010

Hi Marko

>   a~b&  (c=d|e=f)

OK cool, that is an example where it would be useful.

> I see, there can be at most one search key per rule?  So, it would seem to
> make sense to put the most selective condition first.  And I guess then
> it would not make sense to move the isType(OR) checks before
> EQUALS or EXISTS.

Yes currently each rule is indexed by one search key.  Indexing on 
further terms might help in the case where the key tag is changed by a 
'set', so it is something I've thought about.

> Does my above example convince you that the symmetry might be useful?
> Or do you think that we should throw syntax error for "stupid" style
> definitions?

Your example is good.  I would not call it symmetrical though :)

There are lots more things that do not work, here are a few that I've
just tried out:

1. a~b        # doesn't work
2. a~b & c=d  # works
3. a~b & c~d & e=f    # doesn't work.
4. (a~b | c~d) & e=f  # works
5a (a~b | c~d) & e=f & g=h   # doesn't work
5b ((a~b | c~d) & e=f) & g=h # works!
6a e=f & g=h & (a~b | c~'d.*')    # works
6b (e=f & g=h) & (a~b | c~'d.*')  # doesn't work

Just looking at first and second doesn't work at all in general.  Of 
course no-one uses anything that complex in their styles.

..Steve



More information about the mkgmap-dev mailing list