Clover icon

Coverage Report

  1. Project Clover database Fri Dec 6 2024 13:47:14 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  4523 toggle OrMark(int i)
20    {
21  4523 sm.om = this;
22  4523 id = i;
23    }
24   
 
25  1385 toggle String leftForm()
26    {
27  1385 return "(";
28    }
29   
 
30  49897 toggle public Pattern getNext()
31    {
32  49897 return sm;
33    }
34   
 
35  23030 toggle public int matchInternal(int pos, Pthings pt)
36    {
37  23030 sm.next = super.getNext();
38  23030 if (pt.marks == null)
39    {
40  6351 int n2 = 2 * pt.nMarks + 2;
41  6351 pt.marks = new int[n2];
42  46451 for (int i = 0; i < n2; i++)
43    {
44  40100 pt.marks[i] = -1;
45    }
46    }
47  23030 pt.marks[id] = pos;
48  23030 int ret = super.matchInternal(pos, pt);
49  23030 if (ret < 0)
50    {
51  10268 pt.marks[id] = -1;
52    }
53  12762 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  23030 return ret;
60    }
61   
 
62  1960 toggle public Pattern clone1(Hashtable h)
63    {
64  1960 OrMark om = new OrMark(id);
65  1960 h.put(om, om);
66  1960 h.put(this, om);
67  3920 for (int i = 0; i < v.size(); i++)
68    {
69  1960 om.v.addElement(((Pattern) v.elementAt(i)).clone(h));
70    }
71  1960 return om;
72    }
73    };