]> Creatis software - creaContours.git/blob - lib/kernel_ManagerContour_NDimensions/ComposedCommand.cxx
Feature #1772 Add licence terms for all files.
[creaContours.git] / lib / kernel_ManagerContour_NDimensions / ComposedCommand.cxx
1 /*# ---------------------------------------------------------------------
2 #
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
4 #                        pour la Sant�)
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
8 #
9 #  This software is governed by the CeCILL-B license under French law and
10 #  abiding by the rules of distribution of free software. You can  use,
11 #  modify and/ or redistribute the software under the terms of the CeCILL-B
12 #  license as circulated by CEA, CNRS and INRIA at the following URL
13 #  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 #  or in the file LICENSE.txt.
15 #
16 #  As a counterpart to the access to the source code and  rights to copy,
17 #  modify and redistribute granted by the license, users are provided only
18 #  with a limited warranty  and the software's author,  the holder of the
19 #  economic rights,  and the successive licensors  have only  limited
20 #  liability.
21 #
22 #  The fact that you are presently reading this means that you have had
23 #  knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
25
26
27 //----------------------------------------------------------------------------------------------------------------
28 // Class definition include
29 //----------------------------------------------------------------------------------------------------------------
30 #include "ComposedCommand.h"
31
32 //----------------------------------------------------------------------------------------------------------------
33 // Class implementation
34 //----------------------------------------------------------------------------------------------------------------
35 /** @file ComposedCommand.cxx */
36
37 //------------------------------------------------------------------------------------------------------------
38 // Constructors & Destructors
39 //------------------------------------------------------------------------------------------------------------
40
41
42         ComposedCommand :: ComposedCommand( )
43         {
44
45         }
46
47         ComposedCommand :: ~ComposedCommand( )
48         {
49                 clear();        
50         }
51
52 //------------------------------------------------------------------------------------------------------------
53 // Methods
54 //------------------------------------------------------------------------------------------------------------
55         
56         /*
57         * Adds a command to the list of command
58         * @param nwCommand Is the new command to include
59         */
60         void ComposedCommand :: addCommand(CommandObject * nwCommand)
61         {       
62                 internalCommands.push_back(nwCommand);
63         }
64
65         /*
66         * Virtual method implentation that includes the commands list into the given queue for execution
67         * @param executionQueue Is the queue in which is included the command
68         */
69         void ComposedCommand :: includeToExecute(std::deque<CommandObject* > &executionQueue)
70         {
71         std::deque<CommandObject *>::iterator actualCommandIter = internalCommands.end();
72                 while( actualCommandIter != internalCommands.begin())
73                 {
74                         (*actualCommandIter)->includeToExecute(executionQueue);                 
75                         actualCommandIter--;                    
76                 }       
77         }
78
79         /*
80         * Virtual method implementation that returns 1 as the ExecutableCommand is just one command effective
81         * @return The value of commands that represents this
82         */
83         int ComposedCommand :: count()
84         {
85                 int count = 0;
86                 int i =0;
87                 while( i<internalCommands.size() )
88                 {
89                         count += internalCommands[i]->count();  
90                         i++;
91                 }
92                 return count;
93         }
94
95         /*
96         * Virtual method implentation that that clears the commands inside the composed command calling each one to clean it self
97         */
98         void ComposedCommand :: clear()
99         {               
100                 while( internalCommands.size()>0 )
101                 {
102                         internalCommands.back()->clear();
103                         internalCommands.pop_back();
104                 }
105                 internalCommands.clear();
106         }
107                 
108