Author: wayland
Date: 2009-02-18 12:16:00 +0100 (Wed, 18 Feb 2009)
New Revision: 25382

Modified:
   docs/Perl6/Spec/S16-io.pod
Log:
Fixed some things people were complaining about.  


Modified: docs/Perl6/Spec/S16-io.pod
===================================================================
--- docs/Perl6/Spec/S16-io.pod  2009-02-18 11:11:32 UTC (rev 25381)
+++ docs/Perl6/Spec/S16-io.pod  2009-02-18 11:16:00 UTC (rev 25382)
@@ -54,6 +54,16 @@
 
 This role provides unbuffered read access to the data stream.
 
+role   IO::Readable {
+       has     $.isReadable;
+
+       method Int read($buf is rw, Int $length)
+}
+
+When the $.isReadable is set, it tries to change the readability of the 
filehandle.  This 
+is not always possible, but can be done in a number of cases.  IO::Socket can 
remove 
+readability by calling shutdown(), for example.  
+
 =over
 
 =item method Int read($buf is rw, Int $length)
@@ -68,17 +78,22 @@
 you're going to need to encode it later, or use "getc" or other
 IO::Readable::Encoded methods.
 
-=item method Bool is_readable()
-
-Indicates whether socket is actually opened for reading.  Closed sockets
-return false.  
-
 =back
 
 =head2 IO::Writeable
 
 This role provides unbuffered write access to the data stream.
 
+role   IO::Writeable {
+       has     $.isWriteable;
+
+       method Int write($buf, Int $length)
+}
+
+When the $.isWriteable is set, it tries to change the writeability of the 
filehandle.  
+This is not always possible, but can be done in a number of cases.  IO::Socket 
can remove 
+writeability by calling shutdown(), for example.
+
 =over
 
 =item method Int write($buf, Int $length)
@@ -92,11 +107,6 @@
 encoded data, you should decode it first, or use "print" or other
 IO::Writeable::Encoded methods.
 
-=item method Bool is_writeable()
-
-Indicates whether socket is actually opened for writing.  Closed sockets
-return false.  
-
 =back
 
 =head2 IO::Seekable
@@ -356,6 +366,19 @@
 
  method IO::Socket accept()
 
+=head2 IO::FileDescriptor
+
+This role indicates that this object actually represents an open file
+descriptor in the os level.
+
+=over
+
+=item method int fileno()
+
+File descriptors are always native integers, conforming to C89.
+
+=back
+
 =head2 Tree Roles and Classes
 
 To support the filesystem, it is also useful to define some generic tree 
roles, which 
@@ -535,7 +558,7 @@
        multi method infix:{'<=>'}(DateTime $self, DateTime $other);
        multi method infix:{'<=>'}(DateTime $self, Duration $other);
 
-       method  new(Str $String);
+       method  new(:$String);
        method  truncate(Str $to);
        method  last(Str $type, Str $of);
        method  toString($format?);
@@ -548,7 +571,7 @@
 
 =item new
 
- method new(Str $String) # parser defaults to 'strptime' or something similar
+ method new(Str :$String) # parser defaults to 'strptime' or something similar
        | (Str $parser, Str $String) # $parser = 'strptime'
        | (Str $parser, Int $Epoch)  # $parser = 'epoch'
        | (Str $parser, Str $Timezone?) # $parser = 'today' [unless strptime 
does this]
@@ -596,8 +619,8 @@
 
 =item new
 
- method new(Str $filename, $options?);
- method new(Int $fd);
+ method new(Str :$filename, $options?);
+ method new(Int :$fd);
 
  # Read
  $fobj = new IO::File($filename);
@@ -815,12 +838,18 @@
 
 This is called automatically on object creation.  
 
-multi method new(@pathelements); # new IO::FSNode('home', 'wayland')
-multi method new(String $type, String $path) # new IO::FSNode('Unix', 
'/home/wayland');
-multi method new(String $path) # new IO::FSNode('/home/wayland');
+multi method new(Array of Str :@pathelements);
+multi method new(String :$type, String :$path);
+multi method new(String :$path);
 
 This last throws an error if "use portable" pragma is used.  
 
+Examples:
+
+ $fsnode = new IO::FSNode(pathelements => ['home', 'wayland']);
+ $fsnode = new IO::FSNode(type => 'Unix', path => '/home/wayland');
+ $fsnode = new IO::FSNode(path => '/home/wayland');
+
 =back
 
 =head2 IO::FSNodeACL
@@ -916,11 +945,11 @@
 
 =item new
 
- method Bool new(
-       $RemoteHost, $RemotePort, 
-       $LocalHost?, $LocalPort?, 
-       $Blocking?, 
-       $NoOpen?
+ method IO::Socket::TCP new(
+       :$RemoteHost, :$RemotePort, 
+       :$LocalHost, :$LocalPort, 
+       :$Blocking, 
+       :$NoOpen
  );
 
 The creation of the object will also open the connection, unless NoOpen is 
specified.  
@@ -1010,19 +1039,6 @@
 
 =head2 Unix
 
-=head2 IO::FileDescriptor
-
-This role indicates that this object actually represents an open file
-descriptor in the os level.
-
-=over
-
-=item method int fileno()
-
-File descriptors are always native integers, conforming to C89.
-
-=back
-
 =head2 IO::FSNode::Unix
 
 =item chown
@@ -1170,7 +1186,7 @@
 
 =item IO.shutdown()
 
-Gone, see IO::Socket.close()
+Gone, see IO::Socket.close(), $IO::Readable.isReadable, and 
$IO::Writeable.isWriteable
 
 =item socketpair
 

Reply via email to