From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b0d68c502c0ae6 X-Google-Attributes: gid103376,public From: Magnus Larsson Subject: Re: Printing Enum Variable Re: Linux World Date: 1999/03/04 Message-ID: <36DE3744.13F6A16A@omicron.se>#1/1 X-Deja-AN: 451072439 Content-Transfer-Encoding: 7bit References: <7bfc2n$jl9@dfw-ixnews5.ix.netcom.com> <7bhh26$r7c$1@remarQ.com> <36DCAC1F.430E2C5E@aasaa.ofe.org> <7bk5c2$8ge$1@remarQ.com> <36DDA9BA.E005E578@aasaa.ofe.org> X-Accept-Language: sv,en Content-Type: text/plain; charset=us-ascii Organization: Omicron Ceti AB Mime-Version: 1.0 Newsgroups: comp.lang.ada Date: 1999-03-04T00:00:00+00:00 List-Id: I think the Reading of an Enum is really the trick in Ada, and find these type of constructs really useful. Note that you could declare the State type in your "language package" which is precicely what I've used it for. Here you don't have care about any caps. My only problem is the latin-1 characters in DOS, but I guess that's no fault of Ada. ;-) /Magnus function State (Data : String) return Natural is type State is (Brake, Start, Resume, Reset); begin return State'Pos (State'Value (Data)); exception when others => -- Of course i should only trap the "right" exception, -- but I can't remember which one it was return Some_Error_Code; end State; David Starner wrote: > > Fraser Wilson wrote: > > Well, I have to disagree on this. Printing a string representation of > > a literal is not something that goes out to the User (bless his heart). > > It's for my information, and the all caps, direct representation of the > > name is exactly what I need. > > Actually, it rather annoyed me to find it in all caps. I typed into the > program with initial caps for a reason. If it's not something that goes > out to a user, why worry about it? For most my enumeration printing in > C, a couple nested "?:" did the trick. > > > > I understand gdb can do something similar, but debuggers are a poor > > substitute for understanding the code. > How does this help you understand the code? > > > > If you add an extra element to the enumeration, will the compiler > > warn you about the switch statement? What if the strings were stored > > in an array? > Yes, if you added a default case at the end of the switch statement. The > array is a totally different issue - a valid point to complain about. > > > > >IMO, printing enumerator literals, as is, is a quick and dirty hack that > > >should be used only if you're the only user. > > > > Again, it's for my eyes only. And I wouldn't call it a quick'n'dirty hack. > > It's a useful technique. > If it is just something I toss into a program and don't care how it > looks or runs, just that it does, that's what I call a quick'n'dirty > hack. YMMV > > > > > (How should you print a value that doesn't have an > > >associated name, for instance?) > > > > I'd completely forgotten you could do that in C. So an enum is basically > > a shorthand to avoid writing lots of #defines? Doesn't that somewhat miss > > the point. > > No, it just means that a C enum is not quite the same abstraction as an > Ada enum. > -- > David Starner - OSU student - dstarner98@aasaa.ofe.org > If you want a real optimist, look up Ray Bradbury. Guy's nuts. > He actually likes people. -David Brin -- ________________________________ .|, | Jobb: 08 - 750 74 30 -o---- | Mob : 0708 - 13 57 94 omicron | Hem : 08 - 545 600 76