diff options
author | Johannes Schanda <schanda@itestra.de> | 2013-04-25 17:42:24 +0200 |
---|---|---|
committer | Johannes Schanda <schanda@itestra.de> | 2013-04-25 17:42:24 +0200 |
commit | 1631312805fd2bc586afe74f69a0a0cbcaeeed3c (patch) | |
tree | 2fff51111b56b4dc1ecd0ed60a3cb6bb3924e585 | |
parent | eb12509b6b5dd09e35d99560afb3a1c37e5db569 (diff) | |
download | genivi-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.xtend | 36 |
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 |