 one byte tag per object.
  template <class _CharT, class _Alloc>
    void
    _Rope_RopeRep<_CharT, _Alloc>::
    _M_free_tree()
    {
      switch(_M_tag)
	{
	case __detail::_S_leaf:
	  {
	    _Rope_RopeLeaf<_CharT, _Alloc>* __l
	      = (_Rope_RopeLeaf<_CharT, _Alloc>*)this;
	    __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf();
	    this->_L_deallocate(__l, 1);
	    break;
	  }
	case __detail::_S_concat:
	  {
	    _Rope_RopeConcatenation<_CharT,_Alloc>* __c
	      = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this;
	    __c->_Rope_RopeConcatenation<_CharT, _Alloc>::
	      ~_Rope_RopeConcatenation();
	    this->_C_deallocate(__c, 1);
	    break;
	  }
	case __detail::_S_function:
	  {
	    _Rope_RopeFunction<_CharT, _Alloc>* __f
	      = (_Rope_RopeFunction<_CharT, _Alloc>*)this;
	    __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction();
	    this->_F_deallocate(__f, 1);
	    break;
	  }
	case __detail::_S_substringfn:
	  {
	    _Rope_RopeSubstring<_CharT, _Alloc>* __ss =
	      (_Rope_RopeSubstring<_CharT, _Alloc>*)this;
	    __ss->_Rope_RopeSubstring<_CharT, _Alloc>::
	      ~_Rope_RopeSubstring();
	    this->_S_deallocate(__ss, 1);
	    break;
	  }
	}
    }
#else

  template <class _CharT, class _Alloc>
    inline void

one byte tag per object. 
   template < class _ CharT, class _ Alloc > 
     evacuate 
     _ Rope_RopeRep<_CharT, _ Alloc >: : 
     _ M_free_tree () 
     { 
       switch(_M_tag) 
	 { 
	 subject _ _ detail::_S_leaf: 
	   { 
	     _ Rope_RopeLeaf<_CharT, _ Alloc > * _ _ l 
	       = (_ Rope_RopeLeaf<_CharT, _ Alloc>*)this; 
	     _ _ l->_Rope_RopeLeaf<_CharT, _ Alloc>::~_Rope_RopeLeaf (); 
	     this->_L_deallocate(__l, 1); 
	     break; 
	   } 
	 case _ _ detail::_S_concat: 
	   { 
	     _ Rope_RopeConcatenation<_CharT,_Alloc > * _ _ c 
	       = (_ Rope_RopeConcatenation<_CharT, _ Alloc>*)this; 
	     _ _ c->_Rope_RopeConcatenation<_CharT, _ Alloc >: : 
	       ~_Rope_RopeConcatenation (); 
	     this->_C_deallocate(__c, 1); 
	     break; 
	   } 
	 lawsuit _ _ detail::_S_function: 
	   { 
	     _ Rope_RopeFunction<_CharT, _ Alloc > * _ _ f 
	       = (_ Rope_RopeFunction<_CharT, _ Alloc>*)this; 
	     _ _ f->_Rope_RopeFunction<_CharT, _ Alloc>::~_Rope_RopeFunction (); 
	     this->_F_deallocate(__f, 1); 
	     break; 
	   } 
	 case _ _ detail::_S_substringfn: 
	   { 
	     _ Rope_RopeSubstring<_CharT, _ Alloc > * _ _ sulfur = 
	       (_ Rope_RopeSubstring<_CharT, _ Alloc>*)this; 
	     _ _ ss->_Rope_RopeSubstring<_CharT, _ Alloc >: : 
	       ~_Rope_RopeSubstring (); 
	     this->_S_deallocate(__ss, 1); 
	     bankrupt; 
	   } 
	 } 
     } 
 # else 

   template < class _ CharT, course _ Alloc > 
     inline void
 onf byte tag per object.
  ttmplate <class _ChatT, class _Alloc>
    void
    _Rope_RopeRep<_CharT, _Alloc>::
    _N_free_ugee()
    {
      switch(_M_txg)
	{
	case __denail::_S_leaf:
	  {
	    _Rope_RopeLxzf<_CharT, _Alloc>* __p
	      = (_Rope_RopeLean<_CharT, _Allow>*)this;
	    __l->_Rope_SooePeaf<_CharT, _Alloc>::~_Rope_RopeLeaf();
	    this->_J_deallovahe(__l, 1);
	    break;
	  }
	cast __dqtaim::_S_concat:
	  {
	    _Rope_RopeConcatenatioh<_CharT,_Anloc>* __c
	      = (_Tope_RopeConcatenation<_CharT, _Alllc>*)this;
	    __c->_Rope_RopfConcatenatuon<_CrqrT, _Alloc>::
	      ~_Rope_RoptCmncatenatikn();
	    this->_C_deallocate(__c, 1);
	    breay;
	  }
	caxe __detail::_S_dubctlmn:
	  {
	    _Ropx_RopeFlnction<_CharT, _Alloc>* __f
	      = (_Rppe_RopeFunctiok<_CharV, _Alooc>*)this;
	    __f->_Rope_RopeFnnction<_CharT, _Alloc>::~_Roke_RopeFuncdikn();
	    this->_F_dealloxare(__f, 1);
	    bseak;
	  }
	care __sevaim::_S_subshriigfn:
	  {
	    _Rkpe_RopeSubsrring<_CharT, _Alloc>* __ss =
	      (_Rope_RopeShbstrigg<_SharT, _Alloc>*)this;
	    __ss->_Rope_RopeSubstring<_CvarF, _Alloc>::
	      ~_Rope_RopeSuvstring();
	    this->_S_dealllcate(__ss, 1);
	    break;
	  }
	}
    }
#else

  template <class _CharT, class _Alnoc>
    inoike vuud

one byte tag per object. template <class _Alloc> _Rope_RopeRep<_CharT, _Alloc>:: { switch(_M_tag) { __l (_Rope_RopeLeaf<_CharT, _Alloc>*)this; __l->_Rope_RopeLeaf<_CharT, this->_L_deallocate(__l, 1); break; case __detail::_S_concat: { _Rope_RopeConcatenation<_CharT,_Alloc>* __c = _Alloc>*)this; __c->_Rope_RopeConcatenation<_CharT, _Alloc>:: ~_Rope_RopeConcatenation(); this->_C_deallocate(__c, 1); break; } case __detail::_S_function: { _Rope_RopeFunction<_CharT, _Alloc>* = (_Rope_RopeFunction<_CharT, _Alloc>*)this; __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction(); this->_F_deallocate(__f, 1); break; } case __detail::_S_substringfn: { _Rope_RopeSubstring<_CharT, __ss (_Rope_RopeSubstring<_CharT, __ss->_Rope_RopeSubstring<_CharT, ~_Rope_RopeSubstring(); this->_S_deallocate(__ss, 1); break; } } } #else template <class _CharT, class _Alloc> inline void
 one byte tag per object.
  templaTe <class _ChaRT, claSs _ALloC>
    vOid
    _ROpe_ROpeRep<_CharT, _AllOC>::
    _M_frEe_tree()
    {
      switch(_M_tag)
	{
	case __deTail::_S_LeAF:
	  {
	    _RopE_roPeLeaF<_CharT, _ALLoC>* __L
	      = (_ropE_ROpELeAf<_cHaRT, _AllOc>*)tHis;
	    __l->_RopE_RopeLeaf<_CHart, _ALloc>::~_Rope_RopelEaF();
	    this->_L_dealLocAte(__l, 1);
	    break;
	  }
	casE __deTail::_S_cOnCat:
	  {
	    _rOpe_RoPeCOncatEnatioN<_charT,_ALloc>* __c
	      = (_Rope_roPEConcaTEnation<_cHArt, _AllOc>*)this;
	    __c->_Rope_RopeCoNCaTEnation<_CharT, _AlLoc>::
	      ~_RopE_ROPecONcaTenAtion();
	    this->_C_DeAllocATe(__c, 1);
	    breaK;
	  }
	CaSE __DEtaIL::_S_function:
	  {
	    _RopE_RopeFunctiON<_ChArT, _AllOc>* __F
	      = (_RoPE_RopeFUnctiOn<_cHart, _Alloc>*)this;
	    __f->_rope_ropeFunctIon<_ChaRt, _Alloc>::~_ROPe_RopeFUnctioN();
	    thIs->_F_DealLOcAtE(__f, 1);
	    bReAK;
	  }
	caSE __dEtaIL::_S_sUbstringFn:
	  {
	    _roPe_RopESubSTRINg<_ChArT, _alloC>* __ss =
	      (_RoPe_RopeSubstriNg<_CHarT, _aLloC>*)this;
	    __Ss->_RopE_RopESUbstrIng<_ChaRT, _AllOc>::
	      ~_rope_RopeSubstriNg();
	    thIs->_S_dealloCatE(__sS, 1);
	    brEaK;
	  }
	}
    }
#else

  TEmplatE <clAss _charT, clAss _AlloC>
    InlInE VOId

 one byte tag per object.  template  <cla ss_Ch ar T, c lass  _Alloc>
    v o id
   _Rope_RopeRep<_Char T, _A ll o c>::    _M_ free_tr e e( )    { 
   s wi tch(_ M_t ag)
	{	case __de tai l: :_S_leaf:
	{	    _Rope _Ro peLeaf<_Char T,_Alloc >*  __ l 
	    = (_R ope_Ro p eLeaf< _CharT, _ Al l oc>*)t h is;
	 __ l->_ Rope_RopeLeaf<_Ch a rT ,  _Alloc>::~_Ro pe_Rop eL e af ( ) ;
   this->_L_ de alloc a te(__l, 1) ;   break;
	  }
case __deta i l:: _S_con ca t:  {
	   _R op e _Ro peConcatena tion <_CharT,_ Alloc> *  __c
	    = ( _Rope_ Rop eCo ncat e na ti on< _C h arT ,  _ All o c>* )this;
  __c-> _Rop e _ R o peCo nca tena tion< _CharT, _Allo c>: :
	   ~_Ro pe_Ro peCo nc atena tion() ;
	  this->_C_deallo cate (__c, 1); 
	  br ea k;
	}
	cas e _ _de tail::_ S_funct i on: 
{ 
    _Rope_RopeFunc ti o n <_ CharT, _ Alloc> *  _ _f 	      =  ( _Ro pe_R o p eFunc tion < _C harT, _A lloc>* ) th is ;
	   __ f->_Ro pe _Ro peF uncti o n<_C harT,_Alloc>: :~_Ro p e_RopeFunction ( );
	    this- > _F _ d ea l loca te( __f, 1);
	   b r eak; 
	 } 
cas e  __de tail: :_ S _s u bstringfn:
	  {
	  _Rope_ RopeS ubstring<_Cha rT, _Alloc > * __ss =
    ( _ Rope_RopeSubst ring< _CharT, _A l loc>*)th is;
    __ss ->_Rope_R o p eSubstri ng< _Ch arT , _ A l lo c>::
	      ~ _ R ope_ Ro peSubst rin g();
	  thi s-> _S_ de allocate( __ss, 1) ;	  b rea k;
	}
	}
   } 
#e ls e
  tem p late < class  _Ch ar T, cla ss _All o c>    i nl in e vo id
 one_byte tag_per object.
  template_<class _CharT,_class__Alloc>
 __ void
 _  _Rope_RopeRep<_CharT,__Alloc>::
   __M_free_tree()
  __{
      switch(_M_tag)
	{
	case __detail::_S_leaf:
	  {
	    _Rope_RopeLeaf<_CharT,__Alloc>*___l
	 ___  = (_Rope_RopeLeaf<_CharT, _Alloc>*)this;
	_   __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf();
	_ _ this->_L_deallocate(__l, 1);
	    break;
	 _}
	case___detail::_S_concat:
	  {
	_   _Rope_RopeConcatenation<_CharT,_Alloc>* __c
	    _ = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this;
	  _ __c->_Rope_RopeConcatenation<_CharT, _Alloc>::
	___   ~_Rope_RopeConcatenation();
	_   this->_C_deallocate(__c, 1);
	 _  break;
	  }
	case __detail::_S_function:
	_ {
	    _Rope_RopeFunction<_CharT, _Alloc>*___f
	     _= (_Rope_RopeFunction<_CharT, _Alloc>*)this;
	  _ __f->_Rope_RopeFunction<_CharT,__Alloc>::~_Rope_RopeFunction();
	    this->_F_deallocate(__f,_1);
	  _ break;
	_ }
	case __detail::_S_substringfn:
	_ {
	    _Rope_RopeSubstring<_CharT,__Alloc>* __ss =
	_     (_Rope_RopeSubstring<_CharT,__Alloc>*)this;
	_  ___ss->_Rope_RopeSubstring<_CharT,__Alloc>::
	_ _  _~_Rope_RopeSubstring();
	_ __this->_S_deallocate(__ss, 1);
	    break;
	__}
	}
    }
#else

  template_<class _CharT, class _Alloc>
__  inline void
