[mapcode] 02/11: New upstream version 2.5.5

Bas Couwenberg sebastic at debian.org
Sun Jan 28 18:34:57 UTC 2018


This is an automated email from the git hooks/post-receive script.

sebastic pushed a commit to branch master
in repository mapcode.

commit 248b6ee6bf199487150daebcef655fd0a315f51c
Author: Bas Couwenberg <sebastic at xs4all.nl>
Date:   Sun Jan 28 19:07:21 2018 +0100

    New upstream version 2.5.5
---
 README.md             | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++-
 mapcodelib/mapcoder.c | 12 ++++++++++
 mapcodelib/mapcoder.h | 14 ++++++++++-
 test/run_compare.sh   |  9 +++----
 test/run_gcov.sh      |  4 +---
 test/run_gprof.sh     |  5 +---
 test/run_normal.sh    |  5 +---
 test/run_sanitizer.sh |  5 +---
 test/run_valgrind.sh  |  5 +---
 9 files changed, 98 insertions(+), 27 deletions(-)

diff --git a/README.md b/README.md
index fc7e19f..f78b81e 100644
--- a/README.md
+++ b/README.md
@@ -177,9 +177,73 @@ To add individual support support for other languages (of all territory names),
 
 The list of support languages may grow over time.
 
+## Using the C Library in an Xcode iOS Swift project
+
+You can use this C library in an iOS application, built with Swift in Xcode, fairly easily.
+All you need to do is:
+
+First, copy the directory `mapcodelib` to the source directory of your iOS application.
+
+Then, add a text file called `module.modulemap` in the directory `mapcodelib` to export all symbols
+from the C library to Swift (note that `#defines` are not exported):
+
+```
+module mapcodelib [system][extern_c]{
+    header "mapcode_alphabets.h"
+    header "mapcode_territories.h"
+    header "mapcoder.h"
+    export *
+}
+```
+
+Now, you can access the C library methods like this in a Swift project:
+
+```
+// Example of decoding a full mapcode to a lat/lon:
+let territory = getTerritoryCode(context, TERRITORY_NONE)
+var lat: Double = 0.0
+var lon: Double = 0.0
+let mapcodeError = decodeMapcodeToLatLonUtf8(&lat, &lon, fullMapcode, territory, nil)
+if mapcodeError == ERR_OK {
+    // Use the decoded lat and lon.
+} else {
+    // Something went wrong decoding the full mapcode string.
+}
+```
+Or encode a latitude, longitude pair to a set of Mapcodes like this:
+
+```
+let buffer = UnsafeMutablePointer<Int8>.allocate(capacity: Int(_MAX_MAPCODE_RESULT_ASCII_LEN))
+buffer.initialize(to: 0, count: Int(_MAX_MAPCODE_RESULT_ASCII_LEN))
+var total: Int32 = 0;
+var i: Int32 = 0
+repeat {
+    total = encodeLatLonToSelectedMapcode(buffer, lat, lon, TERRITORY_NONE, 0, i)
+    if (total > 0) {
+        let mapcode = String.init(cString: buffer);
+    }
+    i = i + 1
+} while (i < total)
+```
+
+Or get a territory name like this:
+
+```
+let buffer = UnsafeMutablePointer<CChar>.allocate(capacity: Int(MAX_TERRITORY_FULLNAME_UTF8_LEN + 1))
+buffer.initialize(to: 0, count: Int(_MAX_TERRITORY_FULLNAME_UTF8_LEN + 1))
+
+// Get alpha code.
+getTerritoryIsoName(buffer, TERRITORY_NLD, 0)
+let alphaCode = String.init(cString: buffer)
+
+// Get full name.
+getFullTerritoryNameEnglish(buffer, TERRITORY_NLD, 0)
+let fullName = String.init(cString: buffer)
+```
+
 ## Release Notes
 
-### 2.5.4
+### 2.5.4 - 2.5.5
 
 * Added `encodeLatLonToSelectedMapcode` as a convenience for languages that use the
 C library, but have difficulties dealing with multi-dimensional arrays (like Swift).
diff --git a/mapcodelib/mapcoder.c b/mapcodelib/mapcoder.c
index 464dc9e..312b6d8 100644
--- a/mapcodelib/mapcoder.c
+++ b/mapcodelib/mapcoder.c
@@ -53,6 +53,18 @@
 #include "internal_territory_names_tr.h"
 #include "internal_territory_names_uk.h"
 
+// The constants are also exported as variables, to allow other languages to use them.
+char *_MAPCODE_C_VERSION                  = MAPCODE_C_VERSION;
+int _MAX_NR_OF_MAPCODE_RESULTS            = MAX_NR_OF_MAPCODE_RESULTS;
+int _MAX_PRECISION_DIGITS                 = MAX_PRECISION_DIGITS;
+int _MAX_PROPER_MAPCODE_ASCII_LEN         = MAX_PROPER_MAPCODE_ASCII_LEN;
+int _MAX_ISOCODE_ASCII_LEN                = MAX_ISOCODE_ASCII_LEN;
+int _MAX_CLEAN_MAPCODE_ASCII_LEN          = MAX_CLEAN_MAPCODE_ASCII_LEN;
+int _MAX_MAPCODE_RESULT_ASCII_LEN         = MAX_MAPCODE_RESULT_ASCII_LEN;
+int _MAX_TERRITORY_FULLNAME_UTF8_LEN      = MAX_TERRITORY_FULLNAME_UTF8_LEN;
+int _MAX_MAPCODE_RESULT_UTF8_LEN          = MAX_MAPCODE_RESULT_UTF8_LEN;
+int _MAX_MAPCODE_RESULT_UTF16_LEN         = MAX_MAPCODE_RESULT_UTF16_LEN;
+int _MAX_ALPHABETS_PER_TERRITORY          = MAX_ALPHABETS_PER_TERRITORY;
 
 #ifdef DEBUG
 
diff --git a/mapcodelib/mapcoder.h b/mapcodelib/mapcoder.h
index 6f13948..8a89461 100644
--- a/mapcodelib/mapcoder.h
+++ b/mapcodelib/mapcoder.h
@@ -58,7 +58,7 @@ extern "C" {
 #define MAPCODE_SUPPORT_LANGUAGE_UK
 #endif
 
-#define MAPCODE_C_VERSION                   "2.5.3"
+#define MAPCODE_C_VERSION                   "2.5.5"
 #define UWORD                               unsigned short int  // 2-byte unsigned integer.
 
 #define MAX_NR_OF_MAPCODE_RESULTS           22                  // Max. number of results ever returned by encoder (e.g. for 26.904899, 95.138515).
@@ -73,6 +73,18 @@ extern "C" {
 #define MAX_MAPCODE_RESULT_UTF8_LEN         (MAX_MAPCODE_RESULT_ASCII_LEN * 3) // One mapcode character can become at most 3 UTF8characters.
 #define MAX_MAPCODE_RESULT_UTF16_LEN        (MAX_MAPCODE_RESULT_ASCII_LEN)     // Each mapcode character can become one UTF16 word.
 
+// The constants are also exported as variables, to allow other languages to use them.
+extern char* _MAPCODE_C_VERSION;
+extern int _MAX_NR_OF_MAPCODE_RESULTS;
+extern int _MAX_PRECISION_DIGITS;
+extern int _MAX_PROPER_MAPCODE_ASCII_LEN;
+extern int _MAX_ISOCODE_ASCII_LEN;
+extern int _MAX_CLEAN_MAPCODE_ASCII_LEN;
+extern int _MAX_MAPCODE_RESULT_ASCII_LEN;
+extern int _MAX_TERRITORY_FULLNAME_UTF8_LEN;
+extern int _MAX_MAPCODE_RESULT_UTF8_LEN;
+extern int _MAX_MAPCODE_RESULT_UTF16_LEN;
+extern int _MAX_ALPHABETS_PER_TERRITORY;
 
 /**
  * The type Mapcodes hold a number of mapcodes, for example from an encoding call.
diff --git a/test/run_compare.sh b/test/run_compare.sh
index 2113ed1..7b777c2 100755
--- a/test/run_compare.sh
+++ b/test/run_compare.sh
@@ -1,8 +1,8 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast"
 
-NEW=../utility/mapcode
-OLD=$HOME/bin/mapcode-2.3.1
+NEW=../mapcode-2.5.5
+OLD=../mapcode-2.5.2
 NEWFILE=_new.txt
 OLDFILE=_old.txt
 
@@ -91,6 +91,3 @@ else
     rm -f $NEWFILE $OLDFILE
 fi
 echo "!! -------------------------------------------------------------"
-
-echo ""
-echo "Report in: $REPORT"
diff --git a/test/run_gcov.sh b/test/run_gcov.sh
index c33c270..b508ee6 100755
--- a/test/run_gcov.sh
+++ b/test/run_gcov.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast -fprofile-arcs -ftest-coverage"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast -fprofile-arcs -ftest-coverage"
 LIB="../mapcodelib/mapcoder.o"
 
 TEST=$(which gcov)
@@ -29,5 +29,3 @@ echo "!! -------------------------------------------------------------"
 echo "!! Coverage reports in: *.gcov files"
 echo "!! -------------------------------------------------------------"
 
-echo ""
-echo "Report in: $REPORT"
diff --git a/test/run_gprof.sh b/test/run_gprof.sh
index 558cd24..4595327 100755
--- a/test/run_gprof.sh
+++ b/test/run_gprof.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast"
 LIB="../mapcodelib/mapcoder.o"
 
 TEST=$(which gprof)
@@ -33,6 +33,3 @@ gcc $OPTS -g -O3 unittest.c -lm -lpthread -o unittest $LIB -pg
 ./unittest
 gprof ./unittest
 echo "!! -------------------------------------------------------------"
-
-echo ""
-echo "Report in: $REPORT"
diff --git a/test/run_normal.sh b/test/run_normal.sh
index d4d7769..33b7c44 100755
--- a/test/run_normal.sh
+++ b/test/run_normal.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast"
 
 echo "!! -------------------------------------------------------------"
 echo "Run normal..."
@@ -23,6 +23,3 @@ cd ../test
 gcc $OPTS -O3 unittest.c -lm -lpthread -o unittest ../mapcodelib/mapcoder.o
 ./unittest
 echo "!! -------------------------------------------------------------"
-
-echo ""
-echo "Report in: $REPORT"
diff --git a/test/run_sanitizer.sh b/test/run_sanitizer.sh
index 2478dd5..c301b9b 100755
--- a/test/run_sanitizer.sh
+++ b/test/run_sanitizer.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast"
 LIB="../mapcodelib/mapcoder.o"
 
 export ASAN_OPTIONS=debug=true:strict_string_checks=1:detect_stack_use_after_return=true:detect_invalid_pointer_pairs=99999:detect_container_overflow=true:detect_odr_violation=2:check_initialization_order=true:strict_init_order=true
@@ -45,6 +45,3 @@ cd ../test
 gcc $OPTS -O3 unittest.c -lm -lpthread -fsanitize=address -o unittest $LIB
 ./unittest
 echo "!! -------------------------------------------------------------"
-
-echo ""
-echo "Report in: $REPORT"
diff --git a/test/run_valgrind.sh b/test/run_valgrind.sh
index 4d13ebe..20fff57 100755
--- a/test/run_valgrind.sh
+++ b/test/run_valgrind.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-OPTS="-Wall -Werror -Wextra -Wno-pointer-to-int-cast"
+OPTS="-Wall -Wextra -Wno-pointer-to-int-cast"
 LIB="../mapcodelib/mapcoder.o"
 
 TEST=$(which valgrind)
@@ -22,6 +22,3 @@ cd ../test
 gcc $OPTS -g -O0 unittest.c -lm -lpthread -o unittest $LIB
 valgrind --leak-check=yes ./unittest
 echo "!! -------------------------------------------------------------"
-
-echo "" tee -a $REPORT
-echo "Report in: $REPORT"

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/mapcode.git



More information about the Pkg-grass-devel mailing list