/******************************************************************************* * 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); }