www.digitalmars.com         C & C++   DMDScript  

D - enum : type ???

reply Russ Lewis <spamhole-2001-07-16 deming-os.org> writes:
In com.d (in the newest D alpha source), there is this declaration:

enum : int
{
        S_OK = 0,
        S_FALSE = 0x00000001,
        NOERROR = 0,
        E_NOTIMPL     = 0x80004001,
        E_NOINTERFACE = 0x80004002,
        E_POINTER     = 0x80004003,
        E_ABORT       = 0x80004004,
        E_FAIL        = 0x80004005,
        E_HANDLE      = 0x80070006,
        CLASS_E_NOAGGREGATION = 0x80040110,
        E_OUTOFMEMORY = 0x8007000E,
        E_INVALIDARG  = 0x80070057,
        E_UNEXPECTED  = 0x8000FFFF,
}

Does D allow you to specify the underlying type of an enum, then?

--
The Villagers are Online! villagersonline.com

.[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ]
.[ (a version.of(English).(precise.more)) is(possible) ]
?[ you want.to(help(develop(it))) ]
Apr 09 2002
parent reply "Walter" <walter digitalmars.com> writes:
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message
news:3CB329ED.C26B55E7 deming-os.org...
 In com.d (in the newest D alpha source), there is this declaration:

 enum : int
 {
         S_OK = 0,
         S_FALSE = 0x00000001,
         NOERROR = 0,
         E_NOTIMPL     = 0x80004001,
         E_NOINTERFACE = 0x80004002,
         E_POINTER     = 0x80004003,
         E_ABORT       = 0x80004004,
         E_FAIL        = 0x80004005,
         E_HANDLE      = 0x80070006,
         CLASS_E_NOAGGREGATION = 0x80040110,
         E_OUTOFMEMORY = 0x8007000E,
         E_INVALIDARG  = 0x80070057,
         E_UNEXPECTED  = 0x8000FFFF,
 }

 Does D allow you to specify the underlying type of an enum, then?

Yes!
Apr 09 2002
parent reply "OddesE" <OddesE_XYZ hotmail.com> writes:
"Walter" <walter digitalmars.com> wrote in message
news:a8vbhm$okj$1 digitaldaemon.com...
 "Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message
 news:3CB329ED.C26B55E7 deming-os.org...
 In com.d (in the newest D alpha source), there is this declaration:

 enum : int
 {
         S_OK = 0,
         S_FALSE = 0x00000001,
         NOERROR = 0,
         E_NOTIMPL     = 0x80004001,
         E_NOINTERFACE = 0x80004002,
         E_POINTER     = 0x80004003,
         E_ABORT       = 0x80004004,
         E_FAIL        = 0x80004005,
         E_HANDLE      = 0x80070006,
         CLASS_E_NOAGGREGATION = 0x80040110,
         E_OUTOFMEMORY = 0x8007000E,
         E_INVALIDARG  = 0x80070057,
         E_UNEXPECTED  = 0x8000FFFF,
 }

 Does D allow you to specify the underlying type of an enum, then?

Yes!

I saw this too. Is the omission of an enum name a hack, or was it meant to be that way? How do you define a parameter to a function that takes such an enum, just as the same type? So int in this case? Could you explain this a bit more, I am quite intrigued by it! -- Stijn OddesE_XYZ hotmail.com http://OddesE.cjb.net _________________________________________________ Remove _XYZ from my address when replying by mail
Apr 09 2002
parent reply Russ Lewis <spamhole-2001-07-16 deming-os.org> writes:
OddesE wrote:

 I saw this too.
 Is the omission of an enum name a hack, or
 was it meant to be that way?
 How do you define a parameter to a function
 that takes such an enum, just as the same
 type? So int in this case?
 Could you explain this a bit more,
 I am quite intrigued by it!

I've used unnamed enums before as a shorthand to declare a set of constants. It can be a lot easier to read, and gives the programmer a visual clue that all of the constants are related. In this case, it would be a set of int constants. -- The Villagers are Online! villagersonline.com .[ (the fox.(quick,brown)) jumped.over(the dog.lazy) ] .[ (a version.of(English).(precise.more)) is(possible) ] ?[ you want.to(help(develop(it))) ]
Apr 09 2002
parent "Walter" <walter digitalmars.com> writes:
"Russ Lewis" <spamhole-2001-07-16 deming-os.org> wrote in message
news:3CB33CD5.ACF32C8A deming-os.org...
 OddesE wrote:
 I saw this too.
 Is the omission of an enum name a hack, or
 was it meant to be that way?
 How do you define a parameter to a function
 that takes such an enum, just as the same
 type? So int in this case?
 Could you explain this a bit more,
 I am quite intrigued by it!

constants. It can be a lot easier to read, and gives the programmer a visual clue that all of the constants are related. In this case, it would be a set of int constants.

You're right. Specifying no name for the enum creates an "anonymous" enum, which is just a convenient way to create a bunch of integer constants in the enclosing scope. They'll be typed as an "int" (or whatever the enum base type is), not an enum.
Apr 09 2002