Fixing issues: counter bugs, object ID comparison, exclusion of non-event and non...
[jpf-core.git] / src / main / gov / nasa / jpf / JPFShell.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
19 package gov.nasa.jpf;
20
21 /**
22  * type that can be used to instantiate and run a JPF object
23  * Shell objects can be configured via the JPF 'shell' property, and are
24  * typically JPF user interface implementations
25  * 
26  * Instantiation and start() call are done from the JPF.main() method
27  *
28  * Usually, JPFShell implementors have a <init>(Config) ctor so that they
29  * don't need to obtain a new Config object. This is the reason for
30  * using a shell *instance* instead of a static main() method - we cannot
31  * pass the Config object that was already created by JPF.main() at this point
32  * into the shell main(), which means we would either have to turn Config
33  * into a singleton (causing problems for multiple JPF runs), or create a new
34  * Config object within the shell. Since initialization of Config objects is
35  * an expensive task with our new bootstrapping, it seems better to pass the
36  * Config object from JPF.main() (which is done automatically when using
37  * Config based initialization)
38  */
39 public interface JPFShell {
40
41   void start(String[] args);
42 }