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.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,68038c52a7413447 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2004-04-06 10:50:04 PST Path: archiver1.google.com!news1.google.com!news.glorb.com!newsfeed.stueberl.de!newsr1.ipcore.viaginterkom.de!news-peer1!btnet-feed5!btnet!news.btopenworld.com!not-for-mail From: "Martin Dowie" Newsgroups: comp.lang.ada Subject: Re: Enum or Named Number Date: Tue, 6 Apr 2004 17:49:38 +0000 (UTC) Organization: BT Openworld Message-ID: References: NNTP-Posting-Host: host81-129-83-80.in-addr.btopenworld.com X-Trace: titan.btinternet.com 1081273778 11441 81.129.83.80 (6 Apr 2004 17:49:38 GMT) X-Complaints-To: news-complaints@lists.btinternet.com NNTP-Posting-Date: Tue, 6 Apr 2004 17:49:38 +0000 (UTC) X-Newsreader: Microsoft Outlook Express 6.00.2800.1158 X-MSMail-Priority: Normal X-Priority: 3 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 Xref: archiver1.google.com comp.lang.ada:6777 Date: 2004-04-06T17:49:38+00:00 List-Id: "Jeff" wrote in message news:fe4bb2c2.0404060930.f932668@posting.google.com... > Looking for implementation advise. I'm writing a binding to some C > code that has several defined number macros (e.g. #define Viewable 1) > for states and flags. I would like to bitwise-or these numbers in Ada > which leads me to believe I should define these as named mod numbers > such as below: > > type State is mod 2**Interfaces.C.Int'Size > State1 : constant State := 2#0001# > State2 : constant State := 2#0010# > State3 : constant State := 2#0100# > > Any reason to define these as an Enum with a representation clause? > Seems like there would be more plumbing code. For example, I believe > that I would need to write my own bitwise-or function for the Enum. > > Is the named number implementation the way to go, or is there a better > way? Depends on a couple of things: 1) are you trying to provide a thick or thin binding? 2) can the "states" really mutually exclusive or can they be 'set' at the same time? If the answer to 1) is "thick binding" and 2) is "really mutually exclusive" then I would take the hit and declare an Ada enumeration and use a lookup table to get the C representation. Otherwise, I think I'd just stick with the above. -- Martin