# $Id: wc.pliant,v 1.0 2002/02/11 17:03:00 dada Exp $
# http://dada.perl.it/shootout/
module "/pliant/language/unsafe.pli"
module "/pliant/language/context.pli"
module "/pliant/language/stream.pli"
module "/pliant/language/os.pli"
gvar Str line := ""
gvar Address Buf
gvar Int ReadSize := 4096
gvar Int i
gvar Int nl := 0
gvar Int nw := 0
gvar Int nc := 0
gvar Char ch
gvar Int j
gvar CBool state := false
gvar CBool ok
gvar Int ReadCount
gvar Int s := os_GetStdHandle -10
Buf := memory_allocate ReadSize+1 null
ok := os_ReadFile s Buf ReadSize ReadCount null
while ok and ReadCount > 0
line set Buf ReadCount false
nc := nc + (line len)
i := 0
while i<line:len
ch := line:i
if ch="[lf]"
nl += 1
if ch=" " or ch="[tab]" or ch="[lf]"
state := false
eif state = false
nw += 1
state := true
i += 1
ok := os_ReadFile s Buf ReadSize ReadCount null
console nl " " nw " " nc eol