/* verify that one can step thru all the code and that the this and obj variables make sense. */
#define USE_INLINE
class foo
{
    char ch;
public:
#ifdef USE_INLINE
    foo()
    {
        ch = 'k';
        int ch2 = 1;
        ch += ch2;
        int ch3 = 1;
        ch += ch3;
        #if 1
        if (ch == 123)
        {
            int ch4 = 23;
            ch -= ch4;
        }
        #endif
    }

    virtual ~foo()
    {
        ch = 0;
    }

    virtual void set(int ch)
    {
        this->ch = ch;
    }

#else
    foo();
    virtual ~foo();
    virtual void set(int ch);

#endif
};

#ifndef USE_INLINE
foo::foo()
{
    ch = 'k';
    int ch2 = 1;
    ch += ch2;
    int ch3 = 1;
    ch += ch3;
    #if 0
    if (ch == 123)
    {
        int ch4 = 23;
        ch -= ch4;
    }
    #endif
}

foo::~foo()
{
    ch = 0;
}

void foo::set(int ch)
{
    this->ch = ch;
}
#endif


int main(int argc, char **argv)
{
    foo obj;
    obj.set('k');
    return 0;
}
