001 /* Copyright 2000, 2001, Compaq Computer Corporation */ 002 003 package javafe.util; 004 005 /** 006 * The <code>Info</code> class is responsible for displaying verbose 007 * and debugging information to the user. 008 * 009 * <p> Information is displayed only if the <code>on</code> flag is set 010 * (via the <code>-v</code> option, defaults to unset). 011 * 012 * <p> Currently, information is displayed by printing it to 013 * <code>System.out</code>. 014 * 015 * <p> Future versions of this class may support identifying 016 * information with the section it comes from; verbose control could 017 * then be allowed on a section-by-section basis. 018 */ 019 020 public class Info 021 { 022 // Prevent javadoc from displaying a public constructor 023 private Info() {} 024 025 // Class Variables 026 027 /** 028 * Verbose and debugging information is displayed iff this is true. 029 * Defaults to false. 030 */ 031 public static boolean on = false; 032 033 // Reporting information 034 035 /** 036 * Report verbose or debugging information if <code>on</code> is 037 * set. 038 * 039 * <p> Precondition: <code>msg</code> is not null. 040 * 041 * <p> The message is displayed directly, without any indication 042 * that it is verbose or debugging information. 043 * 044 * <p> Clients of this routine may wish to place calls to it 045 * within a conditional on <code>on</code>. For example, 046 * 047 * <code> 048 * if (Info.on) Info.out("[total count = " + countNodes() + "]"); 049 * </code><p> 050 * 051 * <p> This may be especially useful if <code>countNodes()</code> 052 * is an expensive operation. 053 */ 054 //@ requires msg != null; 055 public static void out(String msg) { 056 if (on) { 057 System.out.println(msg); 058 System.out.flush(); 059 } 060 } 061 }