1 /***************************************************************************
2 * Copyright (C) 2006 by Michael Andreen *
3 * andreen@student.chalmers.se *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
19 ***************************************************************************/
21 #ifndef __SORTACTION_H__
22 #define __SORTACTION_H__
28 * Abstraction of a sort action, all child actions has to be immutable.
30 * \author Michael Andreen
34 typedef std::tr1::shared_ptr<SortAction> ActionPointer;
37 * Creates a new sort action, given a specified action.
38 * SortAction promises to remove the given action.
40 SortAction(SortAction* sa): _action(sa){
43 SortAction(const SortAction& sa): _action(sa._action){
46 virtual const SortAction& operator=(const SortAction& sa){
52 virtual ~SortAction(){};
55 * Applies the action on the GeneOrder and returning it.
57 virtual GeneOrder& operator()(GeneOrder& go) const{
58 return (*_action)(go);
62 * Compares sort actions.
64 virtual bool operator==(const SortAction& sa) const{
65 return (*_action) == (sa._action.get() == 0 ? sa : *sa._action);
69 * Gives a string representation of the action, for output
71 virtual std::string toString() const{
72 return _action->toString();
75 ActionPointer _action;