]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/m2/gm2-libs-iso/StringChan.mod
Update copyright years.
[thirdparty/gcc.git] / gcc / m2 / gm2-libs-iso / StringChan.mod
CommitLineData
1eee94d3
GM
1(* StringChan.mod implements String input/output over channels.
2
83ffe9cd 3Copyright (C) 2009-2023 Free Software Foundation, Inc.
1eee94d3
GM
4Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
5
6This file is part of GNU Modula-2.
7
8GNU Modula-2 is free software; you can redistribute it and/or modify
9it under the terms of the GNU General Public License as published by
10the Free Software Foundation; either version 3, or (at your option)
11any later version.
12
13GNU Modula-2 is distributed in the hope that it will be useful, but
14WITHOUT ANY WARRANTY; without even the implied warranty of
15MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16General Public License for more details.
17
18Under Section 7 of GPL version 3, you are granted additional
19permissions described in the GCC Runtime Library Exception, version
203.1, as published by the Free Software Foundation.
21
22You should have received a copy of the GNU General Public License and
23a copy of the GCC Runtime Library Exception along with this program;
24see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25<http://www.gnu.org/licenses/>. *)
26
27IMPLEMENTATION MODULE StringChan ;
28
29
30FROM DynamicStrings IMPORT Length, char ;
31FROM TextIO IMPORT WriteChar ;
32
33
34(*
35 writeString - writes a string, s, to ChanId, cid.
36 The string, s, is not destroyed.
37*)
38
39PROCEDURE writeString (cid: IOChan.ChanId; s: String) ;
40VAR
41 i, h: CARDINAL ;
42BEGIN
43 h := Length(s) ;
44 i := 0 ;
45 WHILE i<h DO
46 WriteChar(cid, char(s, i)) ;
47 INC(i)
48 END
49END writeString ;
50
51
52(*
53 writeFieldWidth - writes a string, s, to ChanId, cid.
54 The string, s, is not destroyed and it
55 is prefixed by spaces so that at least,
56 width, characters are written. If the
57 string, s, is longer than width then
58 no spaces are prefixed to the output
59 and the entire string is written.
60*)
61
62PROCEDURE writeFieldWidth (cid: IOChan.ChanId;
63 s: String; width: CARDINAL) ;
64VAR
65 i: CARDINAL ;
66BEGIN
67 i := Length(s) ;
68 WHILE i<width DO
69 WriteChar(cid, ' ') ;
70 INC(i)
71 END ;
72 writeString(cid, s)
73END writeFieldWidth ;
74
75
76END StringChan.