Category : Recently Uploaded Files
Archive   : SNIP9503.ZIP
Filename : ENUMS.TXT

 
Output of file : ENUMS.TXT contained in archive : SNIP9503.ZIP
Some of my favorites...
-----------------------

typedef enum {ERROR = -1, SUCCESS, FALSE = 0, TRUE} logical;
#define BOOL(x) (!(!(x))) /* always TRUE or FALSE */

/* (trivial) Example code follows */

#define MAX_VAL 10000 /* data upper bound */
#define MIN_VAL -37 /* data lower bound */

logical testfunc(int intvalue)
{
if (MAX_VAL < intvalue || MIN_VAL > intvalue)
return ERROR; /* if out of bounds */
else return BOOL(intvalue); /* zero returns FALSE,
anything else is TRUE*/
}

/* Examples using SUCCESS/ERROR */

if (SUCCESS == strcmp(my_string, "something"))
do_something();
if (ERROR == open("my_file", O_READ))
abort();

And, speaking of enumerated data types (which we can feel free to do
since they're now "official" with the adoption of ANSI C), these are very
handy when defining lists of data which may need to be appended in the
future. If you define your enums this way:

enum CARS {CARS_MIN = -1, FORD, CHEVY, PLYMOUTH, CARS_MAX};

...then you can write "expandable" code as follows:

logical real_car(enum CARS my_car)
{
if (CARS_MIN >= my_car || CARS_MAX <= my_car)
return FALSE;
else return TRUE;
}

By including `CARS_MIN' and `CARS_MAX' as dummy enumerations, you can
change the declaration to:

enum CARS {CARS_MIN = -1, FORD, CHEVY, PLYMOUTH, FERRARI, CARS_MAX};

...and all your existing code will still work properly, allowing you to
spend your time writing new code to support the new enumerations rather
than going back to fix any bounds checking you may have already written.
In addition if, within the enum declaration, you declare `CARS_MIN = -1',
then you can also include this handy little bit of expandable code:

printf("Right now, I know about %d type%s of CARS\n", CARS_MAX,
&"s"[1 == CARS_MAX]);


  3 Responses to “Category : Recently Uploaded Files
Archive   : SNIP9503.ZIP
Filename : ENUMS.TXT

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/