11/*
2- * Copyright (C) 2014-2015 Stichting Mapcode Foundation (http://www.mapcode.com)
2+ * Copyright (C) 2014-2016 Stichting Mapcode Foundation (http://www.mapcode.com)
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
1616
1717package com .mapcode ;
1818
19+ import org .slf4j .Logger ;
20+ import org .slf4j .LoggerFactory ;
21+
1922/**
2023 * ----------------------------------------------------------------------------------------------
2124 * Package private implementation class. For internal use within the Mapcode implementation only.
2427 * This class contains common data structures and methods used by the Mapcode implementation.
2528 */
2629class Common {
30+ private static final Logger LOG = LoggerFactory .getLogger (Common .class );
31+
2732 static final int [] nc = {
2833 1 , 31 , 961 , 29791 , 923521 , 28629151 , 887503681
2934 };
3035 static final int [] xSide = {
31- 0 , 5 , 31 , 168 , 961 , 168 * 31 , 29791 , 165869 , 923521 , 5141947
36+ 0 , 5 , 31 , 168 , 961 , 5208 , 29791 , 165869 , 923521 , 5141947
3237 };
3338 static final int [] ySide = {
34- 0 , 6 , 31 , 176 , 961 , 176 * 31 , 29791 , 165869 , 923521 , 5141947
39+ 0 , 6 , 31 , 176 , 961 , 5456 , 29791 , 165869 , 923521 , 5141947
3540 };
3641 private static final int [] xDivider19 = {
3742 360 , 360 , 360 , 360 , 360 , 360 , 361 , 361 , 361 , 361 ,
@@ -58,6 +63,22 @@ private Common() {
5863 // Prevent instantiation.
5964 }
6065
66+ static {
67+
68+ // This code shows a message when assertions are active or disabled. It (ab)uses assert for that...
69+ //noinspection UnusedAssignment
70+ boolean debug = false ;
71+ //noinspection AssertWithSideEffects
72+ assert debug = true ;
73+ //noinspection ConstantConditions
74+ if (debug ) {
75+ LOG .info ("Common: assertions are active (JVM runtime option '-ea')" );
76+ }
77+ else {
78+ LOG .debug ("Common: assertions are not active, they are bypassed" );
79+ }
80+ }
81+
6182 /**
6283 * This method returns a divider for longitude (multiplied by 4), for a given latitude.
6384 *
@@ -66,33 +87,45 @@ private Common() {
6687 * @return Divider.
6788 */
6889 static int xDivider (final int minY , final int maxY ) {
90+ assert minY < maxY ;
6991 if (minY >= 0 ) {
7092 // maxY > minY > 0
93+ assert (maxY > minY ) && (minY > 0 );
7194 return xDivider19 [minY >> 19 ];
72- }
73- if (maxY >= 0 ) {
95+ } else if (maxY >= 0 ) {
7496 // maxY > 0 > minY
97+ assert (maxY > 0 ) && (0 > minY );
7598 return xDivider19 [0 ];
99+ } else {
100+ // 0 > maxY > minY
101+ assert (0 > maxY ) && (maxY > minY );
102+ return xDivider19 [(-maxY ) >> 19 ];
76103 }
77- // 0 > maxY > minY
78- return xDivider19 [(-maxY ) >> 19 ];
79104 }
80105
81- static int countCityCoordinatesForCountry (final int sameCodex , final int index , final int firstCode ) {
82- final int i = getFirstNamelessRecord (sameCodex , index , firstCode );
83- int e = index ;
84- while (Data .getCodex (e ) == sameCodex ) {
106+ static int countCityCoordinatesForCountry (final int codex , final int territoryRecord , final int firstTerritoryRecord ) {
107+ assert codex >= 0 ;
108+ assert territoryRecord >= 0 ;
109+ assert firstTerritoryRecord >= 0 ;
110+ final int i = getFirstNamelessRecord (codex , territoryRecord , firstTerritoryRecord );
111+ int e = territoryRecord ;
112+ while (Data .getCodex (e ) == codex ) {
85113 e ++;
86114 }
115+ assert i <= e ;
87116 return e - i ;
88117 }
89118
90- static int getFirstNamelessRecord (final int sameCodex , final int index , final int firstCode ) {
91- int i = index ;
92- while ((i >= firstCode ) && Data .isNameless (i ) && (Data .getCodex (i ) == sameCodex )) {
119+ static int getFirstNamelessRecord (final int codex , final int territoryRecord , final int firstTerritoryRecord ) {
120+ assert codex >= 0 ;
121+ assert territoryRecord >= 0 ;
122+ assert firstTerritoryRecord >= 0 ;
123+ int i = territoryRecord ;
124+ while ((i >= firstTerritoryRecord ) && Data .isNameless (i ) && (Data .getCodex (i ) == codex )) {
93125 i --;
94126 }
95127 i ++;
128+ assert i <= territoryRecord ;
96129 return i ;
97130 }
98131}
0 commit comments