Initial revision
This commit is contained in:
36
include/occam/printd.ocm
Normal file
36
include/occam/printd.ocm
Normal file
@@ -0,0 +1,36 @@
|
||||
proc printd(chan out, value fmt[], d)=
|
||||
-- Like fprintf(out, fmt, d), with only %d or %<width>d in fmt[]
|
||||
|
||||
def otherwise=true:
|
||||
var i, len:
|
||||
seq
|
||||
len:=fmt[byte 0]
|
||||
i:=1
|
||||
|
||||
while i<=len
|
||||
if
|
||||
fmt[byte i] = '%'
|
||||
var w:
|
||||
seq
|
||||
i:=i+1
|
||||
w:=0
|
||||
while (i<=len) and ('0'<=fmt[byte i]) and (fmt[byte i]<='9')
|
||||
seq
|
||||
w:=(w*10)+(fmt[byte i]-'0')
|
||||
i:=i+1
|
||||
if
|
||||
i<=len
|
||||
var key:
|
||||
seq
|
||||
key:=fmt[byte i]
|
||||
if
|
||||
key='d'
|
||||
decout(out, d, w)
|
||||
otherwise
|
||||
out ! key
|
||||
i:=i+1
|
||||
otherwise
|
||||
seq
|
||||
out ! fmt[byte i]
|
||||
i:=i+1
|
||||
:
|
||||
Reference in New Issue
Block a user