Clover icon

Coverage Report

  1. Project Clover database Wed Dec 3 2025 13:28:34 GMT
  2. Package com.stevesoft.pat

File OrMark.java

 

Coverage histogram

../../../img/srcFileCovDistChart9.png
13% 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 94 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  4987 toggle OrMark(int i)
20    {
21  4987 sm.om = this;
22  4987 id = i;
23    }
24   
 
25  1414 toggle String leftForm()
26    {
27  1414 return "(";
28    }
29   
 
30  55481 toggle public Pattern getNext()
31    {
32  55481 return sm;
33    }
34   
 
35  24425 toggle public int matchInternal(int pos, Pthings pt)
36    {
37  24425 sm.next = super.getNext();
38  24425 if (pt.marks == null)
39    {
40  6676 int n2 = 2 * pt.nMarks + 2;
41  6676 pt.marks = new int[n2];
42  48130 for (int i = 0; i < n2; i++)
43    {
44  41454 pt.marks[i] = -1;
45    }
46    }
47  24425 pt.marks[id] = pos;
48  24425 int ret = super.matchInternal(pos, pt);
49  24425 if (ret < 0)
50    {
51  11380 pt.marks[id] = -1;
52    }
53  13045 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  24425 return ret;
60    }
61   
 
62  2070 toggle public Pattern clone1(Hashtable h)
63    {
64  2070 OrMark om = new OrMark(id);
65  2070 h.put(om, om);
66  2070 h.put(this, om);
67  4140 for (int i = 0; i < v.size(); i++)
68    {
69  2070 om.v.addElement(((Pattern) v.elementAt(i)).clone(h));
70    }
71  2070 return om;
72    }
73    };