xfail scan-tree-dump-not throw in g++.dg/pr99966.C on hppa*64*-*-*
[official-gcc.git] / gcc / m2 / gm2-libs-iso / RawIO.mod
blobe612dfe7c95b29dfa3799898f913120ac300938f
1 (* RawIO.mod implement the ISO RawIO specification.
3 Copyright (C) 2008-2024 Free Software Foundation, Inc.
4 Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
6 This file is part of GNU Modula-2.
8 GNU Modula-2 is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3, or (at your option)
11 any later version.
13 GNU Modula-2 is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
18 Under Section 7 of GPL version 3, you are granted additional
19 permissions described in the GCC Runtime Library Exception, version
20 3.1, as published by the Free Software Foundation.
22 You should have received a copy of the GNU General Public License and
23 a copy of the GCC Runtime Library Exception along with this program;
24 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
25 <http://www.gnu.org/licenses/>. *)
27 IMPLEMENTATION MODULE RawIO ;
29 FROM IOChan IMPORT RawWrite, RawRead, ReadResult ;
30 FROM IOConsts IMPORT ReadResults ;
31 FROM libc IMPORT printf ;
32 FROM FIO IMPORT FlushOutErr ;
35 (* Reading and writing data over specified channels using raw
36 operations, that is, with no conversion or interpretation.
37 The read result is of the type IOConsts.ReadResults.
41 Read - storage units from cid, and assigns them to successive
42 components of to. The read result is set to the value
43 allRight, wrongFormat, or endOfInput.
46 PROCEDURE Read (cid: IOChan.ChanId; VAR to: ARRAY OF SYSTEM.LOC) ;
47 VAR
48 i, n: CARDINAL ;
49 a : SYSTEM.ADDRESS ;
50 BEGIN
51 FlushOutErr ;
52 a := SYSTEM.ADR(to) ;
53 n := HIGH(to)+1 ;
54 LOOP
55 RawRead(cid, a, n, i) ;
56 IF (n=0) OR
57 (ReadResult(cid)=wrongFormat) OR
58 (ReadResult(cid)=endOfInput)
59 THEN
60 EXIT
61 ELSE
62 INC(a, i) ;
63 DEC(n, i)
64 END
65 END
66 END Read ;
70 memDump -
73 PROCEDURE memDump (a: SYSTEM.ADDRESS; len: CARDINAL) ;
74 VAR
75 i, j: CARDINAL ;
76 p : POINTER TO SYSTEM.LOC ;
77 BEGIN
78 p := a ;
79 j := 0 ;
80 FOR i := 0 TO len DO
81 IF j MOD 16 = 0
82 THEN
83 printf ("\n%p %02x", p, VAL(CARDINAL, p^))
84 ELSE
85 printf (" %02x", VAL(CARDINAL, p^))
86 END ;
87 INC(p) ;
88 INC(j)
89 END ;
90 printf ("\n")
91 END memDump ;
95 Write - storage units to cid from successive components of from.
98 PROCEDURE Write (cid: IOChan.ChanId; from: ARRAY OF SYSTEM.LOC);
99 BEGIN
101 printf ("in RawIO.mod ");
102 memDump (SYSTEM.ADR(from), HIGH(from)+1) ;
104 RawWrite(cid, SYSTEM.ADR(from), HIGH(from)+1)
105 END Write ;
108 END RawIO.