Happy New Year!
// Words and music by B.G. DeSylva, Lew Brown and Ray Henderson.
// C++ code by Jack Rose, Rose Business Systems Inc., Saint Paul, MN.
// Class declarations
class Son {
public:
Son();
~Son();
};
class Money {
public:
Money();
~Money();
};
class Team {
public:
Team();
~Team();
Money *make( void ) {
return new Money;
}
};
class Laughter {
public:
Laughter();
~Laughter();
void hide( void );
void show( void );
};
class Leg {
public:
Leg();
~Leg();
// methods
void stand( void );
};
// forward declaration
class Side;
class Egg {
public:
Egg();
~Egg();
// methods
Egg *conform( Side * );
enum _status { raw, boiled, poached, fried, scrambled } Status;
};
class Side {
public:
// data elements
enum _descriptor {
blue,
gloomy,
neutral,
sunny,
funny,
ebullient
};
enum _upstate {
down,
up
};
enum _showstate {
hidden,
showing
};
Laughter laughter;
#define NLEGS 2
Leg legs[NLEGS];
protected:
Son **pSons;
int nSons;
enum _descriptor Desc;
enum _upstate Upstate;
enum _showstate Showstate;
// methods
public:
Side() {
pSons = NULL;
}
~Side() {
free( pSons );
}
enum _descriptor getDesc( void ) {
return this->Desc;
}
void setDesc( enum _descriptor Desc ) {
this->Desc = Desc;
}
enum _upstate getUpstate( void ) {
return this->Upstate;
}
void setUpstate( enum _upstate Upstate ) {
this->Upstate = Upstate;
}
enum _showstate getShowstate( void ) {
return this->Showstate;
}
void setShowstate( enum _showstate Showstate ) {
this->Showstate = Showstate;
}
void Hide( void ) {
this->setShowstate( hidden );
}
void Show( void ) {
this->setShowstate( showing );
}
int countSons( void ) {
return this->nSons;
}
void addSon( Son *pSon ) {
this->pSons = (Son **)realloc( this->pSons, sizeof( pSon ) * ( this->nSons + 1 ));
this->pSons[ this->nSons++ ] = pSon;
}
};
BOOL happynewYear( void )
{
#define NSIDES 2
Side sides[ NSIDES ];
Team Baseball;
Money *pMoney;
for ( int i = 0; i < NSIDES; i++ ) {
if ( sides[ i ].getDesc() == Side::sunny )
sides[ i ].setUpstate( Side::up );
if ( sides[ i ].getDesc() == Side::blue )
sides[ i ].Hide();
for ( int j = 0; j < 9; j++ ) {
sides[ i ].addSon( new Son );
}
if ( sides[ i ].countSons == 9 )
pMoney = Baseball.make();
if ( sides[ i ].getDesc() == Side::funny )
sides[ i ].setUpstate( Side::up );
sides[ i ].laughter.show();
for ( int k = 0; k < NLEGS; k++ )
sides[ i ].legs[ k ].stand();
Egg egg;
egg.Status = Egg::fried;
egg.conform( &sides[ i ]);
if ( sides[ i ].getDesc() == Side::sunny )
sides[ i ].setUpstate( Side::up );
}
return TRUE;
}
(Click here
if you didn't get the joke.)