Initial import
[jpf-core.git] / src / main / gov / nasa / jpf / util / StructuredPrinter.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.util;
20
21 import java.io.PrintWriter;
22
23 /**
24  * a common base for printers that need to keep track of indentation levels
25  */
26 public abstract class StructuredPrinter {
27
28   protected PrintWriter pw;
29
30   protected int indentLevel = 0;
31   protected String indent = "";
32   
33   protected StructuredPrinter(){
34     pw = new PrintWriter(System.out, true);
35   }
36   
37   protected StructuredPrinter (PrintWriter pw){
38     this.pw = pw;
39   }
40   
41   protected void incIndent(){
42     indentLevel++;
43     indent = indent();
44   }
45
46   protected void decIndent(){
47     if (indentLevel > 0){
48       indentLevel--;
49       indent = indent();
50     }
51   }
52
53   protected String indent(){
54     switch (indentLevel){
55       case 0: return "";
56       case 1: return "    ";
57       case 2: return "        ";
58       case 3: return "            ";
59       case 4: return "                ";
60       default:
61         StringBuilder sb = new StringBuilder();
62         for (int i=0; i<indentLevel; i++){
63           sb.append("    ");
64         }
65         return sb.toString();
66     }
67   }
68   
69   protected void printSectionHeader(String id){
70     pw.println();
71     pw.print("--------------------------------------------------- ");
72     pw.println(id);
73   }
74
75   
76 }