home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / lang / vhdl / 625 < prev    next >
Encoding:
Text File  |  1993-01-05  |  2.3 KB  |  51 lines

  1. Newsgroups: comp.lang.vhdl
  2. Path: sparky!uunet!spool.mu.edu!agate!usenet.ins.cwru.edu!gatech!hubcap!ncrcae!ncrcol.ColumbiaSC.NCR.COM!beihl
  3. From: beihl@ncrcol.ColumbiaSC.NCR.COM (Gary Beihl)
  4. Subject: Overload Resolution (Was: type conversion and configuration)
  5. Message-ID: <1993Jan05.101254.26831@ncrcae.ColumbiaSC.NCR.COM>
  6. Nntp-Posting-Host: linville.columbiasc.ncr.com
  7. Organization: NCR E&M Columbia SC.
  8. References: <1992Dec30.130712.5464@phcomgw.seri.philips.nl> <1993Jan4.225957.26359@viewlogic.com>
  9. Date: Tue, 05 Jan 93 15:12:54 GMT
  10. Lines: 39
  11.  
  12. In article <1993Jan4.225957.26359@viewlogic.com> sunder@viewlogic.com (Sunder Singhani) writes:
  13. >
  14. >The above IS ambiguous. Explanation follows -
  15.  
  16. IMHO, there is NO ambiguity.  Sufficient information is available.
  17.  
  18. >-- 4    FUNCTION To_X01  ( b : BIT_VECTOR        ) RETURN  std_logic_vector;
  19. >-- 5    FUNCTION To_X01  ( b : BIT_VECTOR        ) RETURN  std_ulogic_vector;
  20. >Of these you are choosing 4, 5 explicitly by using type qualification -
  21. >ie bit_vector'("00"). 5 returns std_logic_vector and 4 returns std_ulogic_vector.
  22.  
  23. So far, so good.  Yes, there are two candidates with the same parameter and
  24. result profile.
  25.  
  26. >The first one when indexed gives you an element of std_ulogic, and the latter
  27. >gives std_logic. Now, std_logic is a subtype of std_ulogic, which implies
  28. >both have the same base type which is std_ulogic. Hence, you end up
  29. >with two interpretations, which is erroneous. The final type qualification
  30.  
  31. Not so fast.  Just because the parameter/result profiles match doesn't mean
  32. the declaration is ambiguous.  According to LRM 10.5 (The Context of Overload
  33. Resolution) there is a list of rules to be considered along with syntax and
  34. scope/visiblity rules.  The first of these is:
  35.  
  36.   "1. Any rule that requires a name or expression to have a certain type,
  37.       or to have the same type as another name or expression."
  38.  
  39. Since this is a constant declaration with a default expression, the following
  40. rule for interface objects (LRM 4.3.3) seems applicable:
  41.  
  42.   "...The type of a default expression must be that of the corresponding
  43.    interface object."
  44.  
  45. This narrows the search down to a single choice.  Unless I've missed 
  46. something, Model Technologies appears to be doing the right thing here.
  47.  
  48. Gary Beihl (gary.beihl@columbiasc.ncr.com)
  49.  
  50.