Sets yet again :)
    Fredrik Olsson 
    peylow at treyst.se
       
    Thu Mar  9 08:39:31 PST 2006
    
    
  
Code says more than 1000 words:
enum StreamFeature { ISREADABLE = 1, ISWRITABLE = 2, ISSEEKABLE = 4 };
// ...
class Stream {
   StreamFeature features();
   // ...
}
// ...
if ((someStream.features() && StreamFeatures.ISREADABLE) != 0)
   // ...
Pros: works now
Cons: What is more than 32 features, ugly even if != 0 is dropped.
enum StreamFeature { ISREADABLE, ISWRITEABLE, ISSEEKABLE };
set StreamFeatures { StreamFeature };
//..
class Stream {
   StreamFeatures features();
   // ...
}
// ...
if (StreamFeature.ISREADABLE in stream.features())
   // ...
Pros: No limit, looks good, is self commenting, focus is on
       functionality not implementation
Cons: Well... requires set support or at the very least a standard
       set lib.
// Fredrik Olsson
    
    
More information about the Digitalmars-d
mailing list