1f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/* Copyright (C) 2003 Vladimir Roubtsov. All rights reserved.
2f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
3f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * This program and the accompanying materials are made available under
4f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * the terms of the Common Public License v1.0 which accompanies this distribution,
5f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * and is available at http://www.eclipse.org/legal/cpl-v10.html
6f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project *
7f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * $Id: MethodItem.java,v 1.1.1.1.2.1 2004/06/20 20:07:22 vlad_r Exp $
8f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
9f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpackage com.vladium.emma.report;
10f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
11f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.Descriptors;
12f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.IntObjectMap;
13f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.util.asserts.$assert;
14f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.data.IMetadataConstants;
15f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectimport com.vladium.emma.data.MethodDescriptor;
16f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
17f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------
18f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project/**
19f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project * @author Vlad Roubtsov, (C) 2003
20f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project */
21f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectpublic
22f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Projectfinal class MethodItem extends Item
23f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project{
24f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // public: ................................................................
25f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
26f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public MethodItem (final IItem parent, final int ID, final String name, final String descriptor, final int firstLine)
27f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
28f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        super (parent);
29f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
30f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_ID = ID;
31f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_name = name;
32f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_descriptor = descriptor;
33f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        m_firstLine = firstLine;
34f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
35f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
36f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public String getName ()
37f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
38f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (m_userName == null)
39f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        {
40f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            m_userName = Descriptors.methodVMNameToJavaName (m_parent.getName (), m_name, m_descriptor, true, true, true);
41f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        }
42f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
43f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_userName;
44f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
45f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
46f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public int getID ()
47f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
48f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_ID;
49f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
50f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
51f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public int getFirstLine ()
52f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
53f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return m_firstLine;
54f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
55f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
56f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public int getAggregate (final int type)
57f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
58f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        final int [] aggregates = m_aggregates;
59f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
60f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        int value = aggregates [type];
61f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
62f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        if (value < 0)
63f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        {
64f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final ClassItem parent = ((ClassItem) m_parent);
65f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
66f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final MethodDescriptor method = parent.m_cls.getMethods () [m_ID];
67f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            final int status = method.getStatus ();
68f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
69f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            if ((status & IMetadataConstants.METHOD_NO_BLOCK_DATA) != 0)
70f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
71f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                if ($assert.ENABLED) $assert.ASSERT (false, "excluded method in report data model");
72f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
73f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                for (int i = 0; i < aggregates.length; ++ i) aggregates [i] = 0;
74f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
75f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            else
76f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            {
77f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final boolean lineInfo = ((status & IMetadataConstants.METHOD_NO_LINE_NUMBER_TABLE) == 0);
78f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final boolean [] coverage = parent.m_coverage != null ? parent.m_coverage [m_ID] : null;
79f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
80f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final int totalBlockCount = method.getBlockCount ();
81f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
82f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                aggregates [TOTAL_METHOD_COUNT] = 1; // TODO: check that excluded methods are accounted for correctly
83f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                aggregates [TOTAL_BLOCK_COUNT] = totalBlockCount;
84f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
85f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                int totalBlockInstr = 0;
86f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
87f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                final int [] blockSizes = method.getBlockSizes ();
88f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
89f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                if (coverage != null)
90f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
91f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    int coverageBlockCount = 0, coverageLineCount = 0;
92f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    int coverageBlockInstr = 0, coverageLineInstr = 0;
93f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
94f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    for (int b = 0; b < totalBlockCount; ++ b)
95f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
96f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final int instr = blockSizes [b];
97f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
98f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        totalBlockInstr += instr;
99f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        if (coverage [b])
100f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        {
101f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            ++ coverageBlockCount;
102f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            coverageBlockInstr += instr;
103f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        }
104f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
105f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
106f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (lineInfo)
107f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
108f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final IntObjectMap lineMap = method.getLineMap (); // TODO: expensive way to get totalLineCount
109f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final int totalLineCount = lineMap.size ();
110f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
111f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [TOTAL_LINE_COUNT] = totalLineCount;
112f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
113f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final int [] lines = lineMap.keys ();
114f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        for (int l = 0; l < totalLineCount; ++ l)
115f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        {
116f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            final int [] blocks = (int []) lineMap.get (lines [l]);
117f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
118f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            int thisLineCoverageCount = 0; final int thisLineTotalCount = blocks.length;
119f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            int thisLineCoverageInstr = 0, thisLineTotalInstr = 0;
120f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
121f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            for (int bID = 0; bID < thisLineTotalCount; ++ bID)
122f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            {
123f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                final int b = blocks [bID];
124f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
125f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                final int instr = blockSizes [b];
126f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
127f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                thisLineTotalInstr += instr;
128f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                if (coverage [b])
129f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                {
130f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                    ++ thisLineCoverageCount;
131f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                    thisLineCoverageInstr += instr;
132f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                                }
133f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            }
134f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
135f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            coverageLineCount += (PRECISION * thisLineCoverageCount) / thisLineTotalCount;
136f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                            coverageLineInstr += (PRECISION * thisLineCoverageInstr) / thisLineTotalInstr;
137f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        }
138f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
139f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [COVERAGE_LINE_COUNT] = coverageLineCount;
140f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [COVERAGE_LINE_INSTR] = coverageLineInstr;
141f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
142f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
143f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [TOTAL_BLOCK_INSTR] = totalBlockInstr;
144f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_METHOD_COUNT] = coverageBlockCount > 0 ? 1 : 0;
145f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_BLOCK_COUNT] = coverageBlockCount;
146f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_BLOCK_INSTR] = coverageBlockInstr;
147f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
148f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
149f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                else
150f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                {
151f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    for (int b = 0; b < totalBlockCount; ++ b)
152f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
153f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        totalBlockInstr += blockSizes [b];
154f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
155f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
156f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [TOTAL_BLOCK_INSTR] = totalBlockInstr;
157f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_METHOD_COUNT] = 0;
158f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_BLOCK_COUNT] = 0;
159f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    aggregates [COVERAGE_BLOCK_INSTR] = 0;
160f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
161f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    if (lineInfo)
162f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    {
163f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final IntObjectMap lineMap = method.getLineMap (); // TODO: expensive way to get totalLineCount
164f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        final int totalLineCount = lineMap.size ();
165f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
166f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [TOTAL_LINE_COUNT] = totalLineCount;
167f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [COVERAGE_LINE_COUNT] = 0;
168f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                        aggregates [COVERAGE_LINE_INSTR] = 0;
169f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                    }
170f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project                }
171f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            }
172f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
173f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            return aggregates [type];
174f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        }
175f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
176f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return value;
177f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
178f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
179f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public void accept (final IItemVisitor visitor, final Object ctx)
180f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
181f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        visitor.visit (this, ctx);
182f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
183f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
184f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public final IItemMetadata getMetadata ()
185f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
186f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return METADATA;
187f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
188f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
189f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    public static IItemMetadata getTypeMetadata ()
190f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
191f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        return METADATA;
192f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
193f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
194f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // protected: .............................................................
195f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
196f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // package: ...............................................................
197f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
198f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    // private: ...............................................................
199f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
200f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
201f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private final int m_ID;
202f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private final String m_name, m_descriptor;
203f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private final int m_firstLine;
204f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private transient String m_userName;
205f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
206f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    private static final Item.ItemMetadata METADATA; // set in <clinit>
207f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
208f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    static
209f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    {
210f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project        METADATA = new Item.ItemMetadata (IItemMetadata.TYPE_ID_METHOD, "method",
211f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            1 << IItemAttribute.ATTRIBUTE_NAME_ID |
212f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            1 << IItemAttribute.ATTRIBUTE_METHOD_COVERAGE_ID |
213f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            1 << IItemAttribute.ATTRIBUTE_BLOCK_COVERAGE_ID |
214f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project            1 << IItemAttribute.ATTRIBUTE_LINE_COVERAGE_ID);
215f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project    }
216f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project
217f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project} // end of class
218f6fe897e173f4e4bda72a7dddb091b667066764aThe Android Open Source Project// ----------------------------------------------------------------------------