Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

Stdin.d File Reference

Go to the source code of this file.

Functions

static this ()

Variables

module mango io Stdin
import mango io Console
import mango io mango io TextReader
import mango io mango io mango
io 
BufferCodec
import mango text QuotedToken


Detailed Description

Copyright (c) 2004 Kris Bell

This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for damages of any kind arising from the use of this software.

Permission is hereby granted to anyone to use this software for any purpose, including commercial applications, and to alter it and/or redistribute it freely, subject to the following restrictions:

1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment within documentation of said product would be appreciated but is not required.

2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software.

3. This notice may not be removed or altered from any distribution of the source.

4. Derivative works are permitted, but they must carry this notice in full and credit the original source.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Version:
Initial version, Feb 2005
Author:
Kris

Definition in file Stdin.d.


Function Documentation

static this  )  [static]
 

Definition at line 131 of file Stdin.d.

References QuotedToken, Reader::setDecoder(), Stdin, TextReader, and UnicodeExporter().


Variable Documentation

TextReader Stdin
 

The ubiquitous console IO support. These are standard Conduit instances, with Reader/Writer wrappers applied appropriately. Note that the outputs use FlushBuffer to automatically flush data as it is added to the buffer. The basic usage of this module is illustrated below:

        char[] msg = "on the console";

        Stdout ("print ") (1) (' ') ("message ") (msg) (CR);

An alternative is to use put() notation like so:

        char[] msg = "on the console";

        Stdout.put ("print ")
              .put (1)
              .put (' ')
              .put ("message ")
              .put (msg)
              .put (CR);

Another alternative is to use the C++ iostream operators like so:

        char[] msg = "on the console";

        Stdout << "print "
               << 1
               << ' '
               << "message "
               << msg
               << CR;

Since console idioms are based upon Conduit, you can use them as direct targets for stream-oriented operations. For example, the code:

          FileConduit fc = new FileConduit ("myfile.txt");
          Stdout.conduit.copy (fc);

copies a text file directly to the console. Likewise, you can copy console input directly to a FileConduit or a SocketConduit. Input via Stdin is similar in nature, but uses the Token classes to isolate and parse each token on an input line:

        Stdout ("please enter your name: ") ();
        char[] you;
        Stdin (you);           
        Stdout ("Hello ") (you) (CR);

Note that Stdin awaits a carriage-return before parsing the input into the targets. Note also that the Stdout and Stderr are not written to be thread-safe. As such you may find that output from two threads intersect across each other. If this is a problem you should wrap a synchronized block around the offending entity, like so:

        synchronized (Stdout)
                      Stdout ("this is ") ("'atomic' ") (" output") (CR);

Alternatively, please consider using the mango.log (Logger) package to provide detailed runtime diagnostics from your application. The functionality exposed there is likely sufficient for most application needs.

Redirecting the standard IO handles (via a shell) operates as one would expect.

Definition at line 129 of file Stdin.d.

import mango io Console
 

Definition at line 41 of file Stdin.d.

import mango io mango io TextReader
 

Definition at line 41 of file Stdin.d.

import mango io mango io mango io BufferCodec
 

Definition at line 41 of file Stdin.d.

import mango text QuotedToken
 

Definition at line 45 of file Stdin.d.


Generated on Sat Dec 24 17:28:36 2005 for Mango by  doxygen 1.4.0