Fixing issues: counter bugs, object ID comparison, exclusion of non-event and non...
[jpf-core.git] / src / main / gov / nasa / jpf / GenericProperty.java
1 /*
2  * Copyright (C) 2014, United States Government, as represented by the
3  * Administrator of the National Aeronautics and Space Administration.
4  * All rights reserved.
5  *
6  * The Java Pathfinder core (jpf-core) platform is licensed under the
7  * Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  * 
10  *        http://www.apache.org/licenses/LICENSE-2.0. 
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and 
16  * limitations under the License.
17  */
18 package gov.nasa.jpf;
19
20 import gov.nasa.jpf.search.Search;
21 import gov.nasa.jpf.vm.VM;
22
23 import java.io.PrintWriter;
24
25 /**
26  * generic abstract base class implementing program properties. This is mostly
27  * a convenience construct that implements error printout, so that only
28  * the check itself has to be provided
29  * 
30  * <2do> why is this still not an interface ??
31  */
32 public abstract class GenericProperty implements Property, Cloneable {
33   @Override
34   public abstract boolean check (Search search, VM vm);
35
36   protected GenericProperty () {
37     // nothing yet
38   }
39   
40   @Override
41   public Property clone() throws CloneNotSupportedException {
42     return (Property) super.clone();
43   }
44   
45   @Override
46   public String getErrorMessage () {
47     return null;
48   }
49
50   @Override
51   public String getExplanation () {
52     return null;
53   }
54   
55   @Override
56   public void reset () {
57     // nothing to do here, but Property implementors that store
58     // stuff have to override (it's called if search.multiple_errors is on)
59   }
60   
61   @Override
62   public void printOn (PrintWriter pw) {
63     pw.println(getErrorMessage());
64   }
65 }