Clover icon

Coverage Report

  1. Project Clover database Mon Nov 18 2024 09:56:54 GMT
  2. Package com.stevesoft.pat

File OrMark.java

 

Coverage histogram

../../../img/srcFileCovDistChart9.png
12% of files have more coverage

Code metrics

10
25
5
1
73
57
10
0.4
5
5
2

Classes

Class Line # Actions
OrMark 13 25 10
0.990%
 

Contributing tests

This file is covered by 83 tests. .

Source view

1    //
2    // This software is now distributed according to
3    // the Lesser Gnu Public License. Please see
4    // http://www.gnu.org/copyleft/lesser.txt for
5    // the details.
6    // -- Happy Computing!
7    //
8    package com.stevesoft.pat;
9   
10    import java.util.Hashtable;
11   
12    /** Implements the parenthesis pattern subelement. */
 
13    class OrMark extends Or
14    {
15    SubMark sm = new SubMark();
16   
17    int id;
18   
 
19  4625 toggle OrMark(int i)
20    {
21  4625 sm.om = this;
22  4625 id = i;
23    }
24   
 
25  1472 toggle String leftForm()
26    {
27  1472 return "(";
28    }
29   
 
30  51232 toggle public Pattern getNext()
31    {
32  51232 return sm;
33    }
34   
 
35  23279 toggle public int matchInternal(int pos, Pthings pt)
36    {
37  23279 sm.next = super.getNext();
38  23279 if (pt.marks == null)
39    {
40  6405 int n2 = 2 * pt.nMarks + 2;
41  6405 pt.marks = new int[n2];
42  46883 for (int i = 0; i < n2; i++)
43    {
44  40478 pt.marks[i] = -1;
45    }
46    }
47  23279 pt.marks[id] = pos;
48  23279 int ret = super.matchInternal(pos, pt);
49  23279 if (ret < 0)
50    {
51  10406 pt.marks[id] = -1;
52    }
53  12873 else if (pt.marks[id] > pt.marks[id + pt.nMarks])
54    {
55  0 int swap = pt.marks[id];
56  0 pt.marks[id] = pt.marks[id + pt.nMarks] + 1;
57  0 pt.marks[id + pt.nMarks] = swap + 1;
58    }
59  23279 return ret;
60    }
61   
 
62  2020 toggle public Pattern clone1(Hashtable h)
63    {
64  2020 OrMark om = new OrMark(id);
65  2020 h.put(om, om);
66  2020 h.put(this, om);
67  4040 for (int i = 0; i < v.size(); i++)
68    {
69  2020 om.v.addElement(((Pattern) v.elementAt(i)).clone(h));
70    }
71  2020 return om;
72    }
73    };