comp.lang.ada
 help / color / mirror / Atom feed
From: Thomas Locke <thomas@kenshi.dk>
Subject: Re: C getchar() functionality in Ada
Date: Tue, 17 Feb 2009 23:03:20 +0100
Date: 2009-02-17T23:03:20+01:00	[thread overview]
Message-ID: <499b3428$0$90271$14726298@news.sunsite.dk> (raw)
In-Reply-To: <499ab51b$0$30223$9b4e6d93@newsspool1.arcor-online.net>

Georg Bauhaus wrote:
> We can write the same program in Ada, of course. :-)
> Only, the Ada version is likely written without
> resorting to the C's idiomatic
> "statement-used-as-expression-in-the-loop-conditional".
> 
> with Interfaces.C;
> 
> procedure C_1 is
> 
>    use Interfaces.C;
> 
>    function getchar return int;
>    function putchar(item: int) return int;
> 
>    pragma Import(C, getchar);
>    pragma Import(C, putchar);
> 
>    EOF: constant int := -1;             --  see <stdio.h>
>    c, not_checked: int;
> 
> begin
>    loop
>       c := getchar;
>       exit when C = EOF;
>       not_checked := putchar(c);
>    end loop;
> end C_1;


Thank you for this very nice example Georg!

I've experimented a bit on it, and the result is this:

-----
with Ada.Text_IO;  use Ada.Text_IO;

procedure Ito is

    function getchar return Integer;
    pragma Import (C, getchar);

    EOF   : constant Integer := -1;
    C     : Integer;

begin
    loop
       C := getchar;
       exit when C = EOF;
       Put (Character'Val (C));
    end loop;
end Ito;
-----

Basically I've just tried to get rid of the C putchar function, and 
instead use plain Put. Would the above be considered absolutely 
horrible, or?

/Thomas



  reply	other threads:[~2009-02-17 22:03 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-02-16 20:36 C getchar() functionality in Ada Thomas Locke
2009-02-16 21:43 ` Jeffrey R. Carter
2009-02-17  7:23   ` Thomas Locke
2009-02-17  8:16     ` Niklas Holsti
2009-02-17 13:01       ` Georg Bauhaus
2009-02-17 22:03         ` Thomas Locke [this message]
2009-03-03  8:57         ` David Thompson
2009-02-17 20:48     ` Jeffrey R. Carter
2009-02-17 21:59       ` Thomas Locke
2009-02-16 23:46 ` Adam Beneschan
2009-02-17  7:19   ` Thomas Locke
2009-02-17  8:37     ` Jacob Sparre Andersen
2009-02-17 17:31       ` Keith Thompson
2009-02-17 14:57     ` Hibou57 (Yannick Duchêne)
2009-02-17 14:55   ` Hibou57 (Yannick Duchêne)
2009-02-17 10:37 ` m.collado
2009-02-17 22:07   ` Thomas Locke
2009-02-17 16:40 ` Jean-Pierre Rosen
2009-02-17 19:46   ` Thomas Locke
2009-02-17 20:24     ` Hyman Rosen
2009-02-17 23:44       ` Robert A Duff
2009-02-18  5:44         ` anon
2009-02-18  0:39       ` Adam Beneschan
2009-02-18  7:43     ` Jean-Pierre Rosen
2009-02-18 11:42       ` christoph.grein
2009-02-17 20:38   ` Jeffrey R. Carter
2009-02-18  7:46     ` Jean-Pierre Rosen
2009-02-18 10:41       ` christoph.grein
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox