License:
BSD style: see license.txt

Version:
Feb 2007: Separated from Stdout

author:
Kris

  • class Print (T): OutputStream;
  • A bridge between a Layout instance and a Buffer. This is used for the Stdout & Stderr globals, but can be used for general purpose buffer-formatting as desired. The Template type 'T' dictates the text arrangement within the target buffer ~ one of char, wchar or dchar (utf8, utf16, or utf32).

    Print exposes this style of usage:
            auto print = new Print!(char) (...);
    
            print ("hello");                        => hello
            print (1);                              => 1
            print (3.14);                           => 3.14
            print ('b');                            => b
            print (1, 2, 3);                        => 1, 2, 3
            print ("abc", 1, 2, 3);                 => abc, 1, 2, 3
            print ("abc", 1, 2) ("foo");            => abc, 1, 2foo
            print ("abc") ("def") (3.14);           => abcdef3.14
    
            print.format ("abc {}", 1);             => abc 1
            print.format ("abc {}:{}", 1, 2);       => abc 1:2
            print.format ("abc {1}:{0}", 1, 2);     => abc 2:1
            print.format ("abc ", 1);               => abc
    
    Note that the last example does not throw an exception. There are several use-cases where dropping an argument is legitimate, so we're currently not enforcing any particular trap mechanism.

    Flushing the output is achieved through the flush() method, or via an empty pair of parens:
            print ("hello world") ();
            print ("hello world").flush;
    
            print.format ("hello {}", "world") ();
            print.format ("hello {}", "world").flush;
    
    Special character sequences, such as "\n", are written directly to the output without any translation (though an output-filter could be inserted to perform translation as required). Platform-specific newlines are generated instead via the newline() method, which also flushes the output when configured to do so:
            print ("hello ") ("world").newline;
            print.format ("hello {}", "world").newline;
            print.formatln ("hello {}", "world");
    
    The format() method supports the range of formatting options exposed by tango.text.convert.Layout and extensions thereof; including the full I18N extensions where configured in that manner. To create a French instance of Print :
            import tango.text.locale.Locale;
    
            auto locale = new Locale (Culture.getCulture ("fr-FR"));
            auto print = new Print!(char) (locale, ...);
    
    Note that Print is *not* intended to be thread-safe. Use either tango.util.log.Trace or the standard logging facilities in order to enable atomic console I/O


  • this(Layout!(T) convert, OutputStream output, T[] eol = Eol);
  • Construct a Print instance, tying the provided stream to a layout formatter

  • Print format (T[] fmt,...);
  • Layout using the provided formatting specification

  • Print formatln (T[] fmt,...);
  • Layout using the provided formatting specification

  • Print print (...);
  • Unformatted layout, with commas inserted between args. Currently supports a maximum of 24 arguments

  • Print newline ();
  • Output a newline and optionally flush

  • Print flush (bool yes);
  • Control implicit flushing of newline(), where true enables flushing. An explicit flush () will always flush the output.

  • OutputStream stream ();
  • Return the associated output stream

  • Print stream (OutputStream output);
  • Set the associated output stream

  • Layout!(T) layout ();
  • Return the associated Layout

  • Print layout (Layout!(T) layout );
  • Set the associated Layout

  • uint sink (T[] s);
  • Sink for passing to the formatter

  • IConduit conduit ();
  • OutputStream Interface

    Return the host conduit



  • uint write (void[] src);
  • Write to conduit from a source array. The provided src content will be written to the conduit.

    Returns the number of bytes written from src, which may be less than the quantity provided



  • OutputStream flush ();
  • Flush the output stream

  • OutputStream copy (InputStream src);
  • Transfer the content of another conduit to this one. Returns a reference to this class, and throws IOException on failure.

  • void close ();
  • Close the output

    Copyright (c) 2007 Kris Bell. All rights reserved :: page rendered by CandyDoc