Author: wayland
Date: 2009-02-14 07:37:40 +0100 (Sat, 14 Feb 2009)
New Revision: 25329

Modified:
   docs/Perl6/Spec/S02-bits.pod
   docs/Perl6/Spec/S16-io.pod
Log:
S02: Moved comment about standard file handles to S16.
S16: Did more clearing up, and fixed some stupid things I did last time



Modified: docs/Perl6/Spec/S02-bits.pod
===================================================================
--- docs/Perl6/Spec/S02-bits.pod        2009-02-14 05:38:34 UTC (rev 25328)
+++ docs/Perl6/Spec/S02-bits.pod        2009-02-14 06:37:40 UTC (rev 25329)
@@ -2054,8 +2054,7 @@
 
 =item *
 
-Standard input is C<$*IN>, standard output is C<$*OUT>, and standard error
-is C<$*ERR>.  The magic command-line input handle is C<$*ARGFILES>.
+The magic command-line input handle is C<$*ARGFILES>.
 The arguments themselves come in C<@*ARGS>.  See also "Declaring a MAIN
 subroutine" in S06.
 

Modified: docs/Perl6/Spec/S16-io.pod
===================================================================
--- docs/Perl6/Spec/S16-io.pod  2009-02-14 05:38:34 UTC (rev 25328)
+++ docs/Perl6/Spec/S16-io.pod  2009-02-14 06:37:40 UTC (rev 25329)
@@ -10,9 +10,10 @@
  Author:        Largely, the authors of the related Perl 5 docs.
  Maintainer:    Larry Wall <la...@wall.org>
  Contributions: Mark Stosberg <m...@summersault.com>
+                Tim Nelson <wayl...@wayland.id.au>
  Date:          12 Sep 2006
- Last Modified: 1 May 2007
- Version:       18
+ Last Modified: 14 Feb 2009
+ Version:       19
 
 This is a draft document. Many of these functions will work as in Perl
 5, except we're trying to rationalize everything into roles.  For
@@ -22,6 +23,21 @@
 corresponding global function, it's merely an exported version of
 the method.
 
+=head1 Default IO handles
+
+In Perl 6, there are the I<standard> handles, and the I<default> handles.  
+
+The I<standard> ones are our old familiar friends (with new names).  Standard 
input is 
+C<$*IN>, standard output is C<$*OUT>, and standard error is C<$*ERR>.  
+
+However, the I<default> ones replace the Perl 5 $| variable with three new 
variables.  
+At the start of the program, the default handles (C<$*DEFIN>, C<$*DEFOUT>, and 
+C<$*DEFERR>) are aliased to the standard handles, but may be temporarily or 
permanently 
+rebound to some other file handle.  
+
+Many of the roles and functions below will operate on the default handles.  To 
set all 3 
+at once, do C<($*DEFIN, $*DEFOUT, $*DEFERR) ::= ($*IN, $*OUT, $*ERR)>.  
+
 =head1 Roles
 
 The functionality of IO objects is broken down into several roles,
@@ -127,6 +143,21 @@
 
 =back
 
+=head2 IO::Seekable
+
+=over
+
+=item method Bool eoi()
+
+Returns true if it's the end of the input (ie. end of file or whatever), 
returns false if 
+not, returns undef if we can't say for certain.  
+
+=item IO.seek
+
+=item IO.tell
+
+=back
+
 =head2 IO::Encoded
 
 This is a generic role for encoded data streams.
@@ -165,7 +196,6 @@
 This allows the definition of a escape character, which should be used
 by say and print to preserve the record/field semantics.
 
-
 =back
 
 =head2 IO::Readable::Encoded
@@ -202,13 +232,34 @@
 the latter case C<$!> is set). The C<:async> flag lets the call
 return an undefined value if no character is immediately available.
 
-=cut
+=item IO.lines
 
+    our List multi method lines (IO $handle:) is export;
+    our List multi lines (Str $filename);
+
+Returns all the lines of a file as a (lazy) List regardless of context.
+See also C<slurp>.
+
+=item IO.slurp
+
+    our Item multi method slurp (IO $handle: *%opts) is export;
+    our Item multi slurp (Str $filename, *%opts);
+
+Slurps the entire file into a Str or Buf regardless of context.
+(See also C<lines>.)  Whether a Str or Buf is returned depends on
+the options.
+
+=back
+
 =head2 IO::Writeable::Encoded
 
 This role provides encoded access to a writeable data stream, implies
 IO::Encoded. Might imply IO::Buffered, but that's not a requirement.
 
+If these are called in their non-object form, they operate on C<$*DEFOUT>, 
except in the 
+case of warn(), which operates on C<$*DEFERR>.  The form with leading dot 
prints C<$_> to 
+the appropriate default handle unless an explicit filehandle is supplied.
+
 =over
 
 =item method Bool print(Str $str)
@@ -248,11 +299,6 @@
 be followed by a colon, and any indirect object more complicated than
 a variable should be put into parentheses.
 
-If IO is omitted, prints to C<$*DEFOUT>, which is aliased to C<$*OUT>
-when the program starts but may be temporarily or permanently rebound to
-some other file handle.  The form with leading dot prints C<$_> to C<$*DEFOUT>
-unless an explicit filehandle is supplied.
-
 It is a compiler error to use a bare C<print> without arguments.
 (However, it's fine if you have an explicit argument list that evaluates to
 the empty list at runtime.)
@@ -284,8 +330,16 @@
 The function form works as in Perl 5 and always prints to $*DEFOUT.
 The method form uses IO handles, not formats, as objects.
 
+=item warn LIST
+
+=item Str.warn
+
+Prints a warning just like Perl 5, except that it is always sent to
+the object in $*DEFERR, which is just standard error ($*ERR).
+
 =back
 
+
 =head2 IO::Openable
 
 This role implies that the object can be connected to, or listened on.
@@ -303,12 +357,30 @@
 
 =head2 IO::Socket
 
-role   IO::Socket does IO::POSIX does IO::Openable does IO::Closeable {
+role   IO::Socket  {
 ...
 }
 
 =over
 
+=item socket
+
+=item IO.setsockopt
+
+=item IO.shutdown
+
+(should IO::Socket.close() call shutdown, instead of having a different name?)
+
+=back
+
+=head2 IO::Streamable
+
+role   IO::Streamable does IO::POSIX does IO::Openable does IO::Closeable {
+...
+}
+
+=over
+
 =item IO.accept
 
 =item IO.bind
@@ -360,7 +432,7 @@
 
 This does file input and output.  
 
-class  IO::File does IO::POSIX does IO::Closeable does IO::Openable {
+class  IO::File does IO::Streamable {
 ...
 }
 
@@ -383,13 +455,19 @@
 Associate an IO object with an already-open file descriptor,
 presumably passed in from the parent process.
 
+=item open()
+
+ the :binmode option can be passed to open()
+
+=item IO.truncate
+
 =back
 
 =head2 IO::FileSystem
 
 This reads directories, worries about ownership and permissions, and the like. 
 
 
-class  IO::FileSystem does IO::POSIX does IO::Closeable does IO::Openable {
+class  IO::FileSystem does IO::Streamable {
 ...
 }
 
@@ -604,23 +682,36 @@
 
 =back
 
-=head2 IO::Socket::INET
+=head2 IO::Socket::TCP
 
-class  IO::Socket::INET does IO::Socket {
+class  IO::Socket::TCP does IO::Socket does IO::Streamable {
 ...
 }
 
 =over
 
-=item  init
+=item has $.RemoteHost
 
- method Bool init($RemoteHost, $RemotePort, $LocalHost?, $LocalPort?);
+=item has $.RemotePort
 
-=item open($Listen?);
+=item has $.LocalHost
 
-If $Listen is 0, it does a connect().  If $Listen is 1, it does a connect() 
and a 
-listen().  If $Listen is 2, it does a listen(), but no connect().  
+=item has $.LocalPort
 
+=item method Bool open($Listen?);
+
+If $Listen is 2, it does a listen(), but no connect().  
+If $Listen is any other true value, it does a connect() and a listen().  
+If $Listen is false, it does a connect(), but no listen().
+
+=item method Int read($buf is rw, Int $length)
+
+Does a recv().  
+
+=item method Int write($buf, Int $length)
+
+Does a send().
+
 =item IO.getpeername
 
 =item /[get|set][host|net|proto|serv|sock].*/
@@ -629,7 +720,7 @@
 
 =head2 IO::Pipe
 
-class  IO::Pipe does IO::POSIX does IO::Closeable does IO::Openable {
+class  IO::Pipe does IO::Streamable {
 ...
 }
 
@@ -682,6 +773,8 @@
 
 =item open()
 
+...
+
 =back
 
 =head1 Unfiled
@@ -690,70 +783,28 @@
 
 =item IO.fileno
 
-=item IO.flock
-
-=item IO.eof
-
 =item alarm
 
-=item IO.binmode
-
-=item IO.lines
-
-    our List multi method lines (IO $handle:) is export;
-    our List multi lines (Str $filename);
-
-Returns all the lines of a file as a (lazy) List regardless of context.
-See also C<slurp>.
-
 =item prompt
 
     our Str prompt (Str $prompt)
 
 =item Str.readpipe
 
-=item IO.recv
-
-=item IO.seek
-
-=item IO.send
-
-=item IO.setsockopt
-
-=item IO.shutdown
-
-=item IO.slurp
-
-    our Item multi method slurp (IO $handle: *%opts) is export;
-    our Item multi slurp (Str $filename, *%opts);
-
-Slurps the entire file into a Str or Buf regardless of context.
-(See also C<lines>.)  Whether a Str or Buf is returned depends on
-the options.
-
-=item socket
-
 =item IO.sysread
 
 =item IO.sysseek
 
 =item IO.syswrite
 
-=item IO.tell
+=back
 
-=item IO.truncate
+=head1 Removed functions
 
-=item warn LIST
+=item IO.eof
 
-=item Str.warn
+Gone, see IO::Endable
 
-Prints a warning just like Perl 5, except that it is always sent to
-the object in $*DEFERR, which is just standard error ($*ERR).
-
-=back
-
-=head1 Removed functions
-
 =item pipe
 
 Gone, see Pipe.pair

Reply via email to