Clover icon

Coverage Report

  1. Project Clover database Tue Nov 18 2025 10:51:49 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 95 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  5151 toggle OrMark(int i)
20    {
21  5151 sm.om = this;
22  5151 id = i;
23    }
24   
 
25  1414 toggle String leftForm()
26    {
27  1414 return "(";
28    }
29   
 
30  56243 toggle public Pattern getNext()
31    {
32  56243 return sm;
33    }
34   
 
35  24883 toggle public int matchInternal(int pos, Pthings pt)
36    {
37  24883 sm.next = super.getNext();
38  24883 if (pt.marks == null)
39    {
40  6780 int n2 = 2 * pt.nMarks + 2;
41  6780 pt.marks = new int[n2];
42  48650 for (int i = 0; i < n2; i++)
43    {
44  41870 pt.marks[i] = -1;
45    }
46    }
47  24883 pt.marks[id] = pos;
48  24883 int ret = super.matchInternal(pos, pt);
49  24883 if (ret < 0)
50    {
51  11766 pt.marks[id] = -1;
52    }
53  13117 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  24883 return ret;
60    }
61   
 
62  2130 toggle public Pattern clone1(Hashtable h)
63    {
64  2130 OrMark om = new OrMark(id);
65  2130 h.put(om, om);
66  2130 h.put(this, om);
67  4260 for (int i = 0; i < v.size(); i++)
68    {
69  2130 om.v.addElement(((Pattern) v.elementAt(i)).clone(h));
70    }
71  2130 return om;
72    }
73    };