Listing 1: Fragment of RMI::Widget and RMI::Circle proxy implementations
namespace RMI { Widget::~Widget() { if (is_bound()) Call(*this, "Widget::~Widget()"); } Widget::Widget(const std::string& arg1) : RMIB(Call(null(), "Widget::Widget(const std::string&)", arg1)) { bind(); } Widget::Widget(const Widget& arg1) : RMIB(Call(null(), "Widget::Widget(const Widget&)", arg1)) { bind(); } Widget& Widget::operator=(const Widget& arg1) { Call(*this, "Widget& Widget::operator=(const Widget&)", arg1); return *this; } std::string Widget::name() const { return Call(*this, "const std::string& Widget::name() const"); } Circle::Circle( const std::string& arg1, const Point& arg2, int arg3) : Widget( Call(null(), "Circle::Circle(const std::string&, const Point&, int)", arg1, arg2, arg3)) { bind(); } void Circle::center(const Point& arg1) { Call(*this, "void Circle::center(const Point&)", arg1); } Point Circle::center() const { return Call(*this, "const Point& Circle::center() const"); } } // End of RMI namespace.