#include "Rad/Indent.h"
class Fred
{
public:
void print(ostream& os) const { os<<RD_Indent()<<"Fred's data"; }
};
ostream& operator<<(ostream& os, const Fred& fred)
{
os<<"Fred: "<<endl;
RD_Indent(os)++;
fred.print(os);
RD_Indent(os)--;
return os;
}
class Jim
{
private:
Fred _fred;
public:
void print(ostream& os) const
{ os<<RD_Indent()<<_fred<<endl;
os<<RD_Indent()<<"Jim's other data"; }
};
ostream& operator<<(ostream& os, const Jim& jim)
{
os<<"Jim: "<<endl;
RD_Indent(os)++;
jim.print(os);
RD_Indent(os)--;
return os;
}
main()
{
Jim jim;
cout<<jim<<endl;
}
Output:
Jim:
Fred:
Fred's data
Jim's other data