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=-2.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM, MAILING_LIST_MULTI,WEIRD_PORT autolearn=unavailable autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,44aecd08962a2500 X-Google-Attributes: gid103376,public X-Google-ArrivalTime: 2003-06-07 01:21:51 PST Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!skynet.be!skynet.be!freenix!enst.fr!not-for-mail From: And838N@netscape.net Newsgroups: comp.lang.ada Subject: Visibility Date: Sat, 07 Jun 2003 04:21:17 -0400 Organization: ENST, France Message-ID: NNTP-Posting-Host: marvin.enst.fr Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Trace: avanie.enst.fr 1054974110 23886 137.194.161.2 (7 Jun 2003 08:21:50 GMT) X-Complaints-To: usenet@enst.fr NNTP-Posting-Date: Sat, 7 Jun 2003 08:21:50 +0000 (UTC) To: comp.lang.ada@ada.eu.org Return-Path: X-Mailer: Atlas Mailer 2.0 X-BeenThere: comp.lang.ada@ada.eu.org X-Mailman-Version: 2.1.2 Precedence: list List-Id: comp.lang.ada mail to news gateway List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Xref: archiver1.google.com comp.lang.ada:38782 Date: 2003-06-07T04:21:17-04:00 >Why did you "with" and "use" ada.text_io, when your program doesn't >need them? Elimination of this error solves the problem of visibility >of "count". Well, if I don't "with" ada.text_io I get the following message from gnatmake. iotest.adb:4:09: "put_line" is undefined iotest.adb:4:09: possible missing with of Text_IO iotest.adb:4:10: "put" is undefined iotest.adb:4:10: possible missing with of Text_IO hence, the reason I "withed" text_io. >I could find no such statement on my copy of Cohen's book. Page 1039, Section A.2 >There is no such unit as "unbounded_text_io" in the Ada standard >libraries. Hmmm...I have a "with" for Ada.strings.unbounded.text_io and the file in /adainclude/a-suteio.ads (using gcc-lib) says otherwise. The package that has the Count function I am talking about is ada.strings.unbounded. According to Cohen and obviously GNAT, the Count variable in text_io and the function with the same name from unbounded are visible in the same place, and for some reason it, GNAT, does not "determine" or maybe cannot determine which one to use by "signature". To me, if anything, GNAT should have said something to the effect that I was trying to perform some sort of narrowing conversion rather than telling me that it did not know which Count to use because of a visibility issue. with ada.strings.unbounded, ada.text_io, ada.strings.maps; use ada.strings.unbounded, ada.text_io, ada.strings.maps; procedure visibilitytest is astring: string := "hello world"; somenumber: integer; begin put_line(astring); somenumber := count(to_unbounded_string(astring), to_set(' ')); put_line(Integer'image(somenumber)); end visibilitytest; This code does not compile first because of a visibility issue. The compiler output, gnatmake visibilitytest.adb -gnatf, yields: adagcc -c -gnatf visibilitytest.adb visibilitytest.adb:18:23: "count" is not visible visibilitytest.adb:18:23: multiple use clauses cause hiding visibilitytest.adb:18:23: hidden declaration at a-textio.ads:66 visibilitytest.adb:18:23: hidden declaration at a-strunb.ads:217 visibilitytest.adb:18:23: hidden declaration at a-strunb.ads:211 visibilitytest.adb:18:23: hidden declaration at a-strunb.ads:205 gnatmake: "visibilitytest.adb" compilation error The fix is to specify which one to use on line 18. somenumber := ada.strings.unbounded.count(to_unbounded_string(as tring), to_set(' '));. To me, GNAT should be able to resolve which count to use because the count in ada.strings.unbounded is a function and count in ada.text_io is a type. Not to mention the function returns (or is of type) Natural, not count. The answer to my question was in Cohen's book, chapter 10. The rules for the "with" clause and packages are to make a large number of files easier to manage and to make it clear to the reader what is going on with any particular file. The "with" clause just makes "stuff" visible; it is up to the programmer/engineer to specify or clarify, by using an expanded name, what facilities they are "use" ing from a particular package. Thus, GNAT's compiler message tells me not that GNAT can't determine which count to use but that I need to specify, for future readers, which count I needed. In doing so ,if I am searching for count, I narrow the search to the exact package I need to look in for the count I "used". I'll be looking into Elaboration next. It sounds to me like the elaboration of a package is like the instantiation of a C++ class. If that's true, then I should be able to have multiple elaborations of a package that all have different values for their data members. And if that is true, then I've been using the package the wrong way. Thanks for the help all. Andrew __________________________________________________________________ McAfee VirusScan Online from the Netscape Network. Comprehensive protection for your entire computer. Get your free trial today! http://channels.netscape.com/ns/computing/mcafee/index.jsp?promo=393397 Get AOL Instant Messenger 5.1 free of charge. Download Now! http://aim.aol.com/aimnew/Aim/register.adp?promo=380455