
class Foo :
   public Bar
{

};

#define CTOR(i, _) : \
   T(X()), \
   y() \
{ }

class Foo2 :
   public Bar
{

};

class GLOX_API ClientBase :
   public Class,
   public OtherClass,
   public ThridClass,
   public ForthClass
{
public:
ClientBase(const ClientBase & f) {
   // do something
}
};

ClientBase::ClientBase (const std::string& ns,
                        const std::string& ns1,
                        const std::string& ns2) {

}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}

Foo::Foo(int bar) :
   someVar(bar),
   othervar(0) {
}
