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.