Skip to content

Commit 0e7565a

Browse files
author
fnecati
committed
cleanup
git-svn-id: https://www.ocp.inf.ethz.ch/svn/ocp/trunk@955 ee0346a5-954a-46bf-9309-d26f15615825
1 parent f7b5bcf commit 0e7565a

File tree

2 files changed

+34
-38
lines changed

2 files changed

+34
-38
lines changed

FFTW/FFTW.Mod

+17-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
MODULE FFTW; (** AUTHOR "fnecati"; PURPOSE "double precision wrapper for FFTW library"; *)
2-
IMPORT SYSTEM, Strings, Modules, KernelLog, HostLibs;
2+
IMPORT Strings, Modules, KernelLog, HostLibs;
33

44
(*! For double precision FLOAT64 type:
55
real: 8 bytes (64 bit), complex: 16 bytes (128 bit )*)
@@ -527,26 +527,24 @@ BEGIN
527527
END OnClose;
528528

529529
(* Get string from address *)
530-
PROCEDURE GetStringFromAddr* (adr: ADDRESS): Strings.String;
531-
VAR sadr: ADDRESS;
532-
cnt: INTEGER;
533-
ch: CHAR;
534-
s: Strings.String;
530+
(* Get string from address *)
531+
PROCEDURE GetStringFromAddr*(adr: ADDRESS): Strings.String;
532+
VAR s: POINTER {UNSAFE} TO ARRAY MAX(SIZE) OF CHAR;
533+
str: Strings.String;
534+
pos: SIGNED32;
535535
BEGIN
536-
IF adr # 0 THEN
537-
(* find length *)
538-
sadr := adr;
539-
cnt := 0;
540-
SYSTEM.GET(sadr,ch);
541-
WHILE (ch # 0X) DO INC(cnt); INC(sadr); SYSTEM.GET(sadr,ch); END;
542-
543-
(* then, copy string *)
544-
NEW(s, cnt+1);
545-
SYSTEM.MOVE(adr, ADDRESSOF(s[0]), cnt);
546-
ELSE NEW(s, 1); s[0] := 0X;
536+
s := adr;
537+
pos := 0;
538+
IF adr # NIL THEN
539+
WHILE s[pos] # 0X DO INC(pos); END;
540+
NEW(str, pos + 1);
541+
pos := 0;
542+
WHILE s[pos] # 0X DO str[pos] := s[pos]; INC(pos); END;
543+
544+
ELSE NEW(str, 1);
547545
END;
548-
549-
RETURN s;
546+
str[pos] := 0X;
547+
RETURN str;
550548
END GetStringFromAddr;
551549

552550
BEGIN

FFTW/FFTWf.Mod

+17-19
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
MODULE FFTWf; (** AUTHOR "fnecati"; PURPOSE "single precision wrapper for FFTW library"; *)
2-
IMPORT SYSTEM, Strings, Modules, KernelLog, HostLibs;
2+
IMPORT Strings, Modules, KernelLog, HostLibs;
33

44
(*! For single precision FLOAT32 type:
55
real: 4 bytes (32 bit), complex: 8 bytes (64 bit)*)
@@ -527,26 +527,24 @@ BEGIN
527527
END OnClose;
528528

529529
(* Get string from address *)
530-
PROCEDURE GetStringFromAddr* (adr: ADDRESS): Strings.String;
531-
VAR sadr: ADDRESS;
532-
cnt: INTEGER;
533-
ch: CHAR;
534-
s: Strings.String;
530+
(* Get string from address *)
531+
PROCEDURE GetStringFromAddr*(adr: ADDRESS): Strings.String;
532+
VAR s: POINTER {UNSAFE} TO ARRAY MAX(SIZE) OF CHAR;
533+
str: Strings.String;
534+
pos: SIGNED32;
535535
BEGIN
536-
IF adr # 0 THEN
537-
(* find length *)
538-
sadr := adr;
539-
cnt := 0;
540-
SYSTEM.GET(sadr,ch);
541-
WHILE (ch # 0X) DO INC(cnt); INC(sadr); SYSTEM.GET(sadr,ch); END;
542-
543-
(* then, copy string *)
544-
NEW(s, cnt+1);
545-
SYSTEM.MOVE(adr, ADDRESSOF(s[0]), cnt);
546-
ELSE NEW(s, 1); s[0] := 0X;
536+
s := adr;
537+
pos := 0;
538+
IF adr # NIL THEN
539+
WHILE s[pos] # 0X DO INC(pos); END;
540+
NEW(str, pos + 1);
541+
pos := 0;
542+
WHILE s[pos] # 0X DO str[pos] := s[pos]; INC(pos); END;
543+
544+
ELSE NEW(str, 1);
547545
END;
548-
549-
RETURN s;
546+
str[pos] := 0X;
547+
RETURN str;
550548
END GetStringFromAddr;
551549

552550
BEGIN

0 commit comments

Comments
 (0)