sysperfana/analyzetoolext/com.nokia.s60tools.analyzetool/src/com/nokia/s60tools/analyzetool/engine/statistic/FreeInfo.java
author Matti Laitinen <matti.t.laitinen@nokia.com>
Wed, 21 Apr 2010 19:42:48 +0300
changeset 6 f65f740e69f9
parent 1 1050670c6980
child 15 0367d2db2c06
permissions -rw-r--r--
AnalyzeTool Carbide Extension v1.9.0

/*
 * Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
 * which accompanies this distribution, and is available
 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
 *
 * Initial Contributors:
 * Nokia Corporation - initial contribution.
 *
 * Contributors:
 *
 * Description:  Definitions for the class FreeInfo
 *
 */

package com.nokia.s60tools.analyzetool.engine.statistic;

import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;



/**
 * Constains information of free
 * @author kihe
 *
 */
public class FreeInfo extends BaseInfo {
	
	/**
	 * Constructor
	 * @param memoryAddress memory address for this free
	 */
	public FreeInfo(String memoryAddress) {
		super(memoryAddress);
	}

	AllocInfo[] allocsFreedArr;
	
	/**
	 * Sets all AllocInfos which were freed by this free
	 * @param allocs The AllocInfos to set
	 */
	public void setFreedAllocs(Set<AllocInfo> allocs){
		allocsFreedArr = allocs.toArray(new AllocInfo[allocs.size()]);
	}
	
	/**
	 * Returns a collection of allocs freed by this Free
	 * @return the Collection of AllocInfos freed
	 */
	public Collection<AllocInfo> getFreedAllocs(){
		return allocsFreedArr == null ? Collections.<AllocInfo>emptyList() : Arrays.asList(allocsFreedArr);
	}

	@Override
	public String toString() {
		return String.format("FreeInfo [%s allocsFreedArr=[%s]]", super.toString(), allocsFreedArrToString());
	}

	private String allocsFreedArrToString() {
		if (allocsFreedArr == null){
			return "null";
		}
		
		StringBuilder sb = new StringBuilder();
		boolean addComma = false;
		for (AllocInfo allocInfo : allocsFreedArr) {
			if (addComma){
				sb.append(", ");
			}
			addComma = true;
			sb.append(String.format("addr=0x%08X time=%s", allocInfo.getMemoryAddress(), allocInfo.getTime()));
		}
		return sb.toString();
	}
	
}