<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Hi WanMil,<br><br><br><div>&gt; &gt; @WanMil:<br>&gt; &gt; Special case: Code in  StyledConverter near roadLog.isInfoEnabled()<br>&gt; &gt; formats the content of the TabAAcesss field in RoadDef which<br>&gt; &gt; contains the img format. I think this is okay because the intention<br>&gt; &gt; of the log is to show exactly the content of this field.<br>&gt; <br>&gt;  From my point of view it doesn't matter to have the exact bit coding <br>&gt; here. The intention of the output was to get an information about the <br>&gt; access restrictions. For ease of use I decided to use the bit <br>&gt; representation of the map but if another output is easier to code or to <br>&gt; read please feel free to change.<br>Okay. Maybe I'll change that part again as the TabAAcesss field is<br>also not directly written to the img file.<br><br>&gt; <br>&gt; &gt;<br>&gt; &gt; 2) Create class ConvertedWay which combines an<br>&gt; &gt; OSM Way instance with a reference to a GType instance.<br>&gt; &gt; Instead of copying and modifying fields (roadClass, roadSpeed)<br>&gt; &gt; in GType instances this is now done in ConvertedWay.<br>&gt; &gt; Many tags which are relevant for routing are evaluated once<br>&gt; &gt; when the ConvertedWay instance is created.<br>&gt; &gt; The results are kept in bit masks, this allows a quick<br>&gt; &gt; compare.<br>&gt; &gt; Also, RoadMerger uses this class instead of creating new<br>&gt; &gt; Road instances.<br>&gt; <br>&gt; Ok.<br>&gt; One question regarding line 550:<br>&gt; if (road1.getRouteFlags() != road2.getRouteFlags())<br>&gt; If the route flags are different are the ways always not mergable?<br>&gt; In such a case the code lines after are important for debugging only. <br>&gt; Some CPU cycles can be saved by adding if (logger.isDebugEnabled()).<br>&gt; I also suggest to move the low cost checks to the beginning of <br>&gt; isWayMergable(). Before refactoring all checks were working on tags and <br>&gt; therefore had the same cost.<br><br>yes, roads with different routeFlags&nbsp; should not be merged.<br>You are right, the code should only be executed if logging is needed. <br><br>&gt; <br>&gt; &gt;<br>&gt; &gt; @WanMil: The new code produces a different log on debug<br>&gt; &gt; level because some comparisons are done in different order.<br>&gt; &gt; I've changed the code to compare the bit mask fields instead of the<br>&gt; &gt; tags, but the code still lists (most of) the compared tags<br>&gt; &gt; to be able to produce debug info.<br>&gt; &gt; Let me know if that is okay for you. Another solution could be to<br>&gt; &gt; implement the debugging in ConvertedWay e.g. something<br>&gt; &gt; like<br>&gt; &gt; public String compareAccess(ConvertedWay other)<br>&gt; &gt; could return a String like<br>&gt; &gt; "mkgmap:truck is different 'no' &lt;&gt; 'null' "<br>&gt; <br>&gt; I don't mind about the output as long as it contains the required <br>&gt; information in a readable format :-)<br>Okay. I'll see how complicated this method is. It could<br>also replace the loops for the comparison of the routeFlags.<br>&gt; <br>&gt; &gt;<br>&gt; &gt; 3)<br>&gt; &gt; With r3214 I've renamed a few methods. Please check if<br>&gt; &gt; you find better names:<br>&gt; &gt; http://www.mkgmap.org.uk/websvn/revision.php?repname=mkgmap&amp;rev=3214<br>&gt; <br>&gt; some ideas:<br>&gt; Element.getEntrySetIterator() =&gt; Element.getTagIterator()<br><br>I used this first, but then I decided that tag usally means<br>the pair key=value as a single String. <br>The Tags class implements that as iterator().<br>Element.getEntrySetIterator() calls Tags.entryIterator()<br>so maybe it should better be changed to <br>Element.getEntryIterator() <br><br>&gt; <br>&gt; <br>&gt; <br>&gt; Some other comments:<br>&gt; <br>&gt; RestrictionRelation.setExceptMask should be updated to the new access <br>&gt; rules. But maybe this change should be applied not in the refactoring <br>&gt; branch without any change in the output.<br>&gt; Example:<br>&gt; delivery is not an access tag and should be removed<br>&gt; psv should set bus and taxi (if they are not set too)<br>&gt; motorcycle should be ignored<br>&gt; vehicle should be considered.<br><br>Yes, I also don't like that part of the code.<br>I'd prefer to have a rules file for it, but<br>I found no simple way to code this.<br>I'll change that after merging to trunk,<br>the refactoring should not change functionality.<br><br><br><br>&gt; ...<br>&gt; <br>&gt; HighwayHooks.usedTags should not be static.<br>&gt; It should be possible to compile one tile with make-opposite-cycleways <br>&gt; and another without. So the usedTags field should be different.<br><br>Good catch. I've corrected that with r3218.<br><br>Gerd<br></div>                                               </div></body>
</html>