1/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2 *
3 * This program and the accompanying materials are made available under
4 * the terms of the Common Public License v1.0 which accompanies this distribution,
5 * and is available at http://www.eclipse.org/legal/cpl-v10.html
6 *
7 * $Id: ICoverageData.java,v 1.1.1.1 2004/05/09 16:57:31 vlad_r Exp $
8 */
9package com.vladium.emma.data;
10
11// ----------------------------------------------------------------------------
12/**
13 * @author Vlad Roubtsov, (C) 2003
14 */
15public
16interface ICoverageData extends IMergeable
17{
18    // public: ................................................................
19
20    final class DataHolder
21    {
22        public DataHolder (final boolean [][] coverage, final long stamp)
23        {
24            m_coverage = coverage;
25            m_stamp = stamp;
26        }
27
28        public final boolean [][] m_coverage;
29        public final long m_stamp;
30
31    } // end of nested class
32
33    Object lock ();
34
35    ICoverageData shallowCopy ();
36
37    int size ();
38
39    /**
40     * can return null
41     * can return data holder with a different version stamp than cls.getStamp()
42     */
43    DataHolder getCoverage (ClassDescriptor cls);
44
45    //void setImmutable (); // TODO: this only disables addClass(), not coverage array updates; rename
46    void addClass (boolean [][] coverage, String classVMName, long stamp);
47
48} // end of interface
49// ----------------------------------------------------------------------------