Related articles |
---|
Enumeration data type irobot@swbell.net (Brian Webb) (2001-01-18) |
Re: Enumeration data type iRobot@swbell.net (Brian Webb) (2001-01-19) |
Re: Enumeration data type tim.vanholder@falconsoft.be (Tim Van Holder) (2001-01-19) |
Re: Enumeration data type kszabo@nortelnetworks.com (Kevin Szabo) (2001-01-19) |
Re: Enumeration data type mike@dimmick.demon.co.uk (Mike Dimmick) (2001-01-19) |
From: | "Brian Webb" <iRobot@swbell.net> |
Newsgroups: | comp.compilers |
Date: | 19 Jan 2001 23:15:00 -0500 |
Organization: | FlashNet Communications, http://www.flash.net |
References: | 01-01-081 |
Keywords: | types |
Posted-Date: | 19 Jan 2001 23:15:00 EST |
Here's a more verbose example of what I'm trying to do. I use the
color code example.
The following is just an example.
Do not try and solve it as a problem.
Suppose I have a routine that accepts one of the following five color
codes as an argument.
Black = 0
Red = 1
Green = 2
Blue = 8
White = 16
A sample call would look like this:
Call Set_Background(Blue)
I don't want the following call to work, since the value used wasn't
pre-defined.
Call Set_Background(7)
I'd prefer not to allow the following to work, even though the numeric
value is correct. I may forget what 8 means, or decide to modify the
color codes.
Call Set_Background(8)
I could just define some constants...
integer constant Black = 0
integer constant Red = 1
integer constant Green = 2
integer constant Blue = 8
integer constant White = 16
....or some typed constants,...
datatype Color_Code is integer
Color_Code constant Black = 0
Color_Code constant Red = 1
Color_Code constant Green = 2
Color_Code constant Blue = 8
Color_Code constant White = 16
....but someone might decide to scroll down a few pages and add their
own color codes for an unrelated routine.
integer constant Purple = 6
integer constant Grey = 15
or even
Color_Code constant Purple = 6
Color_Code constant Purple = 15
Then, someone might try
Call Set_Background(Purple)
and wonder why it doesn't work.
So, what I'm trying to design is a construct that forces all of the
values of a data type to be declared in one place. I thought the
following looked OK, but I'm worried that using the term "enumeration"
may a poor word to use, especially for the non-integer data types.
enumeration Color_Code is integer
Black = 0
Red = 1
Green = 2
Blue = 8
White = 16
end enumeration Color_Code
I was wondering if anyone has seen anything like this in an existing
language.
- Brian
Return to the
comp.compilers page.
Search the
comp.compilers archives again.