Mercurial > repos > rhope
view file.rhope @ 79:80d8c9248f85
Began work on File
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Jul 2010 18:02:04 -0400 |
parents | |
children | d78613686a38 |
line wrap: on
line source
Blueprint Stat { } Blueprint File { Name } Blueprint File Read { Name Descriptor(Int32,Naked) Info Buffer } Blueprint File Write { Name Descriptor(Int32,Naked) Info Buffer } Blueprint File ReadWrite { Name Read Offset(Int64,Naked) Descriptor(Int32,Naked) Info Buffer } File[name:out] { out <- [Build[File()]]Name <<[name] } Open@File[file,mode:out,error] { If[[mode]=["r"]] { imode <- type <- File Read() out <- Val[ofile] }{ If[[mode]=["w"]] { imode <- type <- File Write() out <- Val[ofile] }{ ,error <- If[[mode]=["rw"]] { imode <- type <- File ReadWrite() out <- [ofile]Read Offset <<[0i64] } } } fd <- open[[file]Name >>] error <- If[[fd]=[-1i32]] {} { ofile <- [[[[Build[type] ]Name <<[ [file]Name >> ] ]Descriptor <<[fd] ]Info <<[Stat[fd]] ]Buffer <<[Array[]] } } Read@File[file,bytes:data,outfile,error] { ,error <- [file]Open["r"] { data,outfile,error <- [~]Read[bytes] } } Append@File[file,data:out,error] { ,error <- [file]Open["w"] { out,error <- [~]Append[data] } } String@File[file:out,error] { ,error <- [file]Open["w"] { out,error <- String[~] } } Read@File Read[file,inbytes(Int32):data,outfile,error] { buflen <- [[file]Buffer >>]Length If[buflen] { If[[inbytes]=[buflen]] { data <- [file]Buffer >> outfile <- [file]Buffer <<[Array[]] }{ If[[inbytes]<[buflen]] { }{ } } }{ readbytes, mdata <- read[[file]Descriptor >>, [Array[]]Set[inbytes, 0u8], Int64[inbytes]] error <- If[[readbytes]<[0i64]] {} { outfile <- file data <- [mdata]Length <<[ Trunc Int32[readbytes] ] } } }