/*******************************************************************************
* Copyright (c) 2009 STMicroelectronics.
* 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:
* Xavier Raynaud <xavier.raynaud@st.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.internal.gcov.parser;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.SortedSet;
import java.util.TreeSet;
public class SourceFile implements Serializable {
/**
*
*/
private static final long serialVersionUID = -9182882194956475711L;
private final String name;
private final int index;
private final ArrayList<Line> lines = new ArrayList<>();
private final TreeSet<GcnoFunction> fnctns = new TreeSet<>();
private int numLines = 1;
private final CoverageInfo cvrge = new CoverageInfo();
private long maxCount = -1;
/**
* Constructor
*/
public SourceFile(String name, int index) {
this.name = name;
this.index = index;
}
public void accumulateLineCounts() {
for (Line line : lines) {
if (line.exists()) {
cvrge.incLinesInstrumented();
if (line.getCount() != 0) {
cvrge.incLinesExecuted();
}
}
}
}
public long getmaxLineCount() {
if (maxCount < 0) {
for (Line line : lines) {
if (line.getCount() > maxCount) {
maxCount = line.getCount();
}
}
}
return maxCount;
}
/* getters & setters */
public int getLinesExecuted() {
return cvrge.getLinesExecuted();
}
public int getLinesInstrumented() {
return cvrge.getLinesInstrumented();
}
public String getName() {
return name;
}
public ArrayList<Line> getLines() {
return lines;
}
public SortedSet<GcnoFunction> getFnctns() {
return fnctns;
}
public void addFnctn(GcnoFunction fnctn) {
this.fnctns.add(fnctn);
}
public int getNumLines() {
return numLines;
}
public void setNumLines(int numLines) {
this.numLines = numLines;
}
public int getIndex() {
return index;
}
public void createLines() {
int n = getNumLines();
lines.ensureCapacity(n);
for (int j = 0; j < n; j++) {
lines.add(new Line());
}
}
}