Server code -- list

  template<class T>
  class list_srv : _crob(hush,container) {
  public:
      list_srv(list<T>* it = 0) : _bdy(it) {
          this->_duplicate();
          }
  
      hush::iterator* walk( ENV ) {
          iter<void>* it = ((list<void>*) _body())->walk();
          iter_srv* x = new iter_srv(it);
          x->_duplicate();
          return x;
          }
  
      long length( ENV ) {
          return (long)  _body()->length();
          }
  
      CORBA::Object* first( ENV ) {
          T* x = _body()->first();
          //dummy->_duplicate(x); // Orbix 2.0
          x->_duplicate();
          return x;
          }
  
      CORBA::Object* current( ENV ) {
          T* x = _body()->current();
  	x->_duplicate();
  	return x;
          }
  
      CORBA::Object* next( ENV ) {
          T* x = _body()->next();
          x->_duplicate();
          return x;
          }
  
  protected:
      T* dummy; // for duplication in 2.0
      list<T>* _bdy;
      list<T>* _body() const { return (list<T>*) _bdy; }
  };
  
  

slide: Server code -- list