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 }