Skip to content

Commit d4cbd09

Browse files
committed
Included version 2.0.1 of the mapcode lib
1 parent a39a6ab commit d4cbd09

File tree

2 files changed

+19
-22
lines changed

2 files changed

+19
-22
lines changed

mapcodelib/basics.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
#define UWORD unsigned short int // 2-byte unsigned integer
1818

19-
#define mapcode_cversion "2.0.0"
19+
#define mapcode_cversion "2.0.1"
2020
#define MAXWIDE 10
2121
#define BASEX 31
2222
#define MAXFITLONG 6

mapcodelib/mapcoder.c

Lines changed: 18 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ static int disambiguate_str( const char *s, int len ) // returns disambiguation
153153
f=strstr(p,country);
154154
if (f==NULL)
155155
return -23; // unknown country
156-
res = 1 + ((f-p)/(len+1));
156+
res = 1 + (int)((f-p)/(len+1));
157157
return res;
158158
}
159159

@@ -256,7 +256,7 @@ static int ccode_of_iso3(const char *in_iso, int parentcode )
256256
return -23;
257257
}
258258
// return result
259-
return (s-entity_iso)/4;
259+
return (int)((s-entity_iso)/4);
260260
}
261261

262262

@@ -513,7 +513,7 @@ static void decodeSixWide( long v, long width, long height, long *x, long *y )
513513
static int decodeGrid(decodeRec *dec, int m, int hasHeaderLetter )
514514
{
515515
const char* input = (hasHeaderLetter ? dec->mapcode+1 : dec->mapcode);
516-
int codexlen = strlen(input)-1;
516+
int codexlen = (int)(strlen(input)-1);
517517
long prelen = (long)(strchr(input,'.')-input);
518518
char result[MAX_PROPER_MAPCODE_LEN+1];
519519

@@ -679,7 +679,7 @@ static void encodeGrid( char* result, const encodeRec *enc, int const m, int ext
679679
v = encodeSixWide( relx,rely, divx,divy );
680680
else
681681
v = relx*divy + (divy-1-rely);
682-
encodeBase31( result, v, prelen);
682+
encodeBase31( result, v, (int)prelen);
683683
} // prefix
684684

685685
if ( prelen==4 && divx==xside[4] && divy==yside[4] )
@@ -719,7 +719,7 @@ static void encodeGrid( char* result, const encodeRec *enc, int const m, int ext
719719
}
720720
else
721721
{
722-
encodeBase31(resultptr, (difx)*yside[postlen]+dify, postlen );
722+
encodeBase31(resultptr, (difx)*yside[postlen]+dify, (int)postlen);
723723
// swap 4-long codes for readability
724724
if ( postlen==4 )
725725
{
@@ -771,7 +771,7 @@ static int decodeNameless(decodeRec *dec, int m )
771771
int codexm = coDex(m);
772772
int dc = (codexm != 22) ? 2 : 3;
773773

774-
int codexlen = strlen(dec->mapcode)-1;
774+
int codexlen = (int)(strlen(dec->mapcode)-1);
775775
if ( codexlen!=4 && codexlen!=5 )
776776
return -2; // solve bad args
777777

@@ -789,7 +789,7 @@ static int decodeNameless(decodeRec *dec, int m )
789789
{ // check just in case
790790
int p = 31/A;
791791
int r = 31%A;
792-
long v;
792+
long v=0;
793793
long SIDE;
794794
int swapletters=0;
795795
long xSIDE;
@@ -844,7 +844,7 @@ static int decodeNameless(decodeRec *dec, int m )
844844

845845
if (swapletters)
846846
{
847-
m = F + X;
847+
m = (int)(F + X);
848848
if ( ! isSpecialShape22(m) )
849849
{
850850
char t = result[codexlen-3]; result[codexlen-3]=result[codexlen-2]; result[codexlen-2]=t;
@@ -874,7 +874,7 @@ static int decodeNameless(decodeRec *dec, int m )
874874
}
875875
}
876876

877-
m = F + X;
877+
m = (int)(F + X);
878878
SIDE = smartDiv(m);
879879

880880
getboundaries(m,minx,miny,maxx,maxy);
@@ -1127,9 +1127,9 @@ static int encodeNameless( char *result, const encodeRec* enc, int input_ctry, i
11271127
v += (dx*SIDE + dy);
11281128
}
11291129

1130-
encodeBase31( result, v, codexlen+1 ); // nameless
1130+
encodeBase31( result, v, (int)(codexlen+1) ); // nameless
11311131
{
1132-
int dotp=codexlen;
1132+
int dotp=(int)codexlen;
11331133
if (codexm==13)
11341134
dotp--;
11351135
memmove(result+dotp,result+dotp-1,4); result[dotp-1]='.';
@@ -1157,7 +1157,6 @@ static int encodeNameless( char *result, const encodeRec* enc, int input_ctry, i
11571157
static int decodeAutoHeader(decodeRec *dec, int m )
11581158
{
11591159
const char *input = dec->mapcode;
1160-
int err = -1;
11611160
int firstcodex = coDex(m);
11621161
char *dot = strchr(input,'.');
11631162

@@ -1203,8 +1202,6 @@ static int decodeAutoHeader(decodeRec *dec, int m )
12031202
value -= STORAGE_START;
12041203
value /= (961*31);
12051204

1206-
err=0;
1207-
12081205
// PIPELETTER DECODE
12091206
{
12101207
long difx,dify;
@@ -1294,7 +1291,7 @@ static int encodeAutoHeader( char *result, const encodeRec *enc, int m, int extr
12941291
value += (vy/YSIDE3);
12951292

12961293
// PIPELETTER ENCODE
1297-
encodeBase31( result, (STORAGE_START/(961*31)) + value, codexlen-2 );
1294+
encodeBase31( result, (STORAGE_START/(961*31)) + value, (int)(codexlen-2));
12981295
result[codexlen-2]='.';
12991296
encode_triple( result+codexlen-1, vx%XSIDE3, vy%YSIDE3 );
13001297

@@ -1420,7 +1417,7 @@ static int decoderEngine( decodeRec *dec )
14201417
{
14211418
const char *r = dec->orginput;
14221419
while (*r>0 && *r<=32) r++; // skip lead
1423-
len=strlen(r);
1420+
len=(int)strlen(r);
14241421
if (len>MAX_MAPCODE_RESULT_LEN-1) len=MAX_MAPCODE_RESULT_LEN-1;
14251422
while (len>0 && r[len-1]>=0 && r[len-1]<=32) len--; // remove trail
14261423
memcpy(s,r,len); s[len]=0;
@@ -1440,17 +1437,17 @@ static int decoderEngine( decodeRec *dec )
14401437
// check if extension, determine length without extension
14411438
minus = strchr(s+4,'-');
14421439
if (minus)
1443-
len=minus-s;
1440+
len=(int)(minus-s);
14441441

14451442
// make sure there is valid context
14461443
iso3 = convertTerritoryCodeToIsoName(dec->context,0); // get context string (or empty string)
14471444
if (*iso3==0) iso3="AAA";
1448-
parentcode=disambiguate_str(iso3,strlen(iso3)); // pass for future context disambiguation
1445+
parentcode=disambiguate_str(iso3,(int)strlen(iso3)); // pass for future context disambiguation
14491446

14501447
// insert context if none in input
14511448
if (len>0 && len<=9 && strchr(s,' ')==0) // just a non-international mapcode without a territory code?
14521449
{
1453-
int ilen=strlen(iso3);
1450+
int ilen=(int)strlen(iso3);
14541451
memmove(s+ilen+1,s,strlen(s)+1);
14551452
s[ilen]=' ';
14561453
memcpy(s,iso3,ilen);
@@ -1544,7 +1541,7 @@ static int decoderEngine( decodeRec *dec )
15441541
//////////// AT THIS POINT, dot=FIRST DOT, input=CLEAN INPUT (no vowels) ilen=INPUT LENGTH
15451542

15461543
// analyse input
1547-
prelen = (dot-s);
1544+
prelen = (int)(dot-s);
15481545
postlen = len-1-prelen;
15491546
codex = prelen*10 + postlen;
15501547
if ( prelen<2 || prelen>5 || postlen<2 || postlen>4 )
@@ -2033,7 +2030,7 @@ UWORD* convertToAlphabet(UWORD* unibuf, int maxlength, const char *mapcode,int a
20332030
{
20342031
// safely copy mapcode into temporary buffer u
20352032
char u[MAX_MAPCODE_RESULT_LEN];
2036-
int len = strlen(mapcode);
2033+
int len = (int)strlen(mapcode);
20372034
if (len>=MAX_MAPCODE_RESULT_LEN)
20382035
len=MAX_MAPCODE_RESULT_LEN-1;
20392036
memcpy(u,mapcode,len);

0 commit comments

Comments
 (0)