stringsk.sa
Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
class STRINGSK
class STRINGSK is
-- Copyright (C) 1996 Kouji KODAMA
-- IntCh:='0123456789ABCDEF';
-- def ReadLineF(F:File; inout str:ARRAY OF CHAR);
-- Use FILE::get_str or FILE::get_line
-- Use STR_CURSOR::skipspace
skipSpace(str:STR, inout pos:CARD) is
loop
if pos>=str.size then break!;
elsif str[pos].is_space then pos:=pos+1;
else break!;
end;
end;
end;
splitStr(inout s:STR_CURSOR):STR is
str:STR:="";
ch:CHAR;
s.skip_space;
loop
ch:=s.item;
if ch='\0' then return str;
elsif (ch='-') or (ch.is_digit) then
str:= str+s.get_char;
loop while!(s.item.is_digit); str:=str+s.get_char; end;
s.skip_space; return str;
elsif ch.is_alpha then
loop while!(s.item.is_alpha); str:=str+s.get_char; end;
s.skip_space; return str;
else
str:=str+s.get_char;
s.skip_space; return str;
end;
end;
end;
-- searchStr(str0:STR, inout pos:INT, str1:STR):BOOL is
-- Use STR_CURSOR::skip_over or STR_CURSOR::skip_thru
-- STR::search(s:SAME, st:INT):INT
-- Str2Int(str:ARRAY OF CHAR; inout pos:INT; inout i:INT):BOOL;
Str2Int(str:STR, inout pos:CARD, inout i:INT):BOOL is
ch:CHAR;
pos0:CARD;
neg:BOOL;
i:=0.int;
skipSpace(str,inout pos);
if str.size<=pos then return false; end;
ch:=str[pos];
if ch='-' then neg:=true; pos:=pos+1; else neg:=false; end;
pos0:=pos;
loop
if str.size<=pos then break!; end;
if str[pos].is_digit then i:=i*10+str[pos].digit_value; pos:=pos+1;
else break!
end;
end;
if neg then i:=-i; end;
return (pos0<pos)
end;
Int2Str(i:INT, inout str:STR):BOOL is
-- obsolete. Use INT::str or INTI::decimal_str.
str:=i.inti.decimal_str; return true;
end;
TimeStr:STR is
str:STR;
str:="#Date:";
str:=str+DATE::year.card.decimal_str+"-"+DATE::mon.str+"-"+DATE::mday.str+",";
str:=str+DATE::hour.str+":"+DATE::min.str+":"+DATE::sec.str+".";
return str;
end;
end;