From 5626442f0e42bec00641de56b17f081f58448ae5 Mon Sep 17 00:00:00 2001 From: Alena Laskavaia Date: Thu, 18 Dec 2014 11:00:13 -0500 Subject: [PATCH] Added API to construct Addr64 from long Change-Id: Iccb489f290711d806d499cfa763a06dab4e61f4d Signed-off-by: Alena Laskavaia Reviewed-on: https://git.eclipse.org/r/38496 Tested-by: Hudson CI Reviewed-by: Doug Schaefer --- .../utils/org/eclipse/cdt/utils/Addr64.java | 14 ++++++++++++++ .../utils/org/eclipse/cdt/utils/Addr64Factory.java | 7 +++++++ 2 files changed, 21 insertions(+) diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64.java index ba263435338..96fa1e1c970 100644 --- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64.java +++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64.java @@ -14,6 +14,7 @@ package org.eclipse.cdt.utils; import java.io.Serializable; import java.math.BigInteger; +import java.nio.ByteBuffer; import org.eclipse.cdt.core.IAddress; import org.eclipse.cdt.internal.core.Messages; @@ -51,6 +52,19 @@ public class Addr64 implements IAddress, Serializable { this(addr, true); } + /** + * Create an address represented by long bits. + * Signed bit will be used as unsigned extension, if you don't want it mask it before passing here. + * + * @since 5.9 + */ + public Addr64(long addr) { + if (addr < 0) + address = new BigInteger(1, ByteBuffer.allocate(8).putLong(addr).array()); + else + address = BigInteger.valueOf(addr); + } + public Addr64(String addr, boolean truncate) { addr = addr.toLowerCase(); if (addr.startsWith("0x")) { //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java index 4322417d9a3..4182987c3d3 100644 --- a/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java +++ b/core/org.eclipse.cdt.core/utils/org/eclipse/cdt/utils/Addr64Factory.java @@ -80,4 +80,11 @@ public class Addr64Factory implements IAddressFactory2 { public IAddress createAddress(BigInteger addr, boolean truncate) { return new Addr64(addr, truncate); } + + /** + * @since 5.9 + */ + public IAddress createAddress(long addr) { + return new Addr64(addr); + } } \ No newline at end of file