summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schanda <schanda@itestra.de>2013-04-25 17:42:24 +0200
committerJohannes Schanda <schanda@itestra.de>2013-04-25 17:42:24 +0200
commit1631312805fd2bc586afe74f69a0a0cbcaeeed3c (patch)
tree2fff51111b56b4dc1ecd0ed60a3cb6bb3924e585
parenteb12509b6b5dd09e35d99560afb3a1c37e5db569 (diff)
downloadgenivi-common-api-runtime-1631312805fd2bc586afe74f69a0a0cbcaeeed3c.tar.gz
Parse ints nicely: 0x... is hex, 0b... is binary, just digits is2.0.1
decimal.
-rw-r--r--org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend36
1 files changed, 28 insertions, 8 deletions
diff --git a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
index 1ae221c..93ba810 100644
--- a/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
+++ b/org.genivi.commonapi.core/src/org/genivi/commonapi/core/generator/FTypeGenerator.xtend
@@ -386,17 +386,37 @@ class FTypeGenerator {
return ''
}
- private static List<Integer> integerRadixList = Arrays::asList(10, 16, 2, 8)
-
def private tryParseInteger(String string) {
if (!string.nullOrEmpty) {
- try {
- return Integer::decode(string)
- } catch (NumberFormatException e1) {
- for (radix : integerRadixList)
+ if (string.startsWith("0x") || string.startsWith("0X")) {
+ try {
+ return "0x" + Integer::toHexString((Integer::parseInt(string.substring(2), 16)))
+ } catch (NumberFormatException e) {
+ return null
+ }
+ } else if (string.startsWith("0b") || string.startsWith("0B")) {
+ try {
+ return "0x" + Integer::toHexString((Integer::parseInt(string.substring(2), 2)))
+ } catch (NumberFormatException e) {
+ return null
+ }
+ } else if (string.startsWith("0")) {
+ try {
+ Integer::parseInt(string, 8)
+ return string
+ } catch (NumberFormatException e) {
+ return null
+ }
+ } else {
+ try {
+ return Integer::parseInt(string, 10)
+ } catch (NumberFormatException e) {
try {
- return new Integer(Integer::parseInt(string, radix.intValue))
- } catch (NumberFormatException e2) { }
+ return "0x" + Integer::toHexString((Integer::parseInt(string, 16)))
+ } catch (NumberFormatException e2) {
+ return null
+ }
+ }
}
}
return null