// /*----------------------------------------------------------------------*\ // | Concrete Template : Sequence_1a_Reverse_1 (HOW NOT TO DO IT!) // \*----------------------------------------------------------------------*/ #ifndef CT_SEQUENCE_1A_REVERSE_1 #define CT_SEQUENCE_1A_REVERSE_1 1 ///------------------------------------------------------------------------ /// Global Context -------------------------------------------------------- ///------------------------------------------------------------------------ #include "AT/Sequence/Reverse.h" #include "CT/Sequence/Kernel_1a.h" ///------------------------------------------------------------------------ /// Interface ------------------------------------------------------------- ///------------------------------------------------------------------------ concrete_template < concrete_instance class Item > class Sequence_1a_Reverse_1 : extends concrete_instance Sequence_Kernel_1a , implements abstract_instance Sequence_Reverse { public: procedure_body Reverse () /*! decreases |self| !*/ { if (self.Length () > 1) { object catalyst Item x; self.Remove (0, x); self.Reverse (); self.Add (self.Length (), x); } } }; #endif // CT_SEQUENCE_1A_REVERSE_1