-- Copyright (C) 1985, 1986  by Xerox Corporation. All rights reserved. 
-- Atof.mesa
-- NFS   18-Dec-85 15:13:56

-- C Library function atof (other procedures of CFormat are implemented in C).

DIRECTORY
  Ascii USING [NUL],
  CFormat USING [],
  CString USING [CString, IncrBPointer, ReadChar],
  DoubleReal USING [Double, ReadDouble, PlusZero];
Atof: PROGRAM IMPORTS CString, DoubleReal EXPORTS CFormat =
  {

  atof: PUBLIC PROCEDURE [nptr: CString.CString] RETURNS [d: DoubleReal.Double] = {
    GetChar: PROCEDURE RETURNS [c: CHAR] = {
      c ← CString.ReadChar[nptr];
      IF c # Ascii.NUL THEN nptr ← CString.IncrBPointer[nptr];
      };
    d ← DoubleReal.PlusZero;  -- in case 1st char. is invalid.
    d ← DoubleReal.ReadDouble[GetChar];
    };

  }.