blob: b7a545c9f5d4b086a299278e00a38d72fe409341 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2008 Intel Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Intel Corporation - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.core;
import java.math.BigInteger;
/**
* This inteface serves as an address factory. If you need to
* implement your own addresses, you should extend this.
*
* Please see Addr32Factory and Addr64Factory to see how it can be implemented.
*/
public interface IAddressFactory
{
/**
* Returns zero address, i.e. minimal possible address
*/
IAddress getZero();
/**
* Returns maximal address.
*/
IAddress getMax();
/**
* Creates address from string representation.
*
* 1. Method should be able to create address from hex
* address string (string produced with
* IAddress.toHexAddressString() method).
* 2. Method should be case insensetive
* 3. Method should be able to create address from decimal address
* representation
* 4. Method should throw NumberFormatException if the given string
* cannot be decoded.
* 5. Method should not attempt to evaluate string as expression (i.e.,
* "0x1000 + 5" should not result in an IAddress for 0x1005.) Input
* must be a straightforward, absolute value.
*
* Please see Addr32Factory.createAddress() for reference implementation.
*
* @param addr
*/
IAddress createAddress(String addr);
/**
* Creates address from string with given radix.
*
* Given string should not contain any prefixes or sign numbers.
*
* Method should be case insensetive
*
* Method should throw NumberFormatException if the given string
* cannot be decoded.
*
* Method should not attempt to evaluate string as expression (i.e.,
* "1000 + 5" should not result in an IAddress for 1005.) Input
* must be a straightforward, absolute value.
*
* @param addr
* @param radix
*/
IAddress createAddress(String addr, int radix);
/**
* Create address from a BigInteger
*
* @param addr
*/
IAddress createAddress(BigInteger addr);
}