Line data Source code
1 : /* 2 : Mosh: the mobile shell 3 : Copyright 2012 Keith Winstein 4 : 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 3 of the License, or 8 : (at your option) any later version. 9 : 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. 14 : 15 : You should have received a copy of the GNU General Public License 16 : along with this program. If not, see <http://www.gnu.org/licenses/>. 17 : 18 : In addition, as a special exception, the copyright holders give 19 : permission to link the code of portions of this program with the 20 : OpenSSL library under certain conditions as described in each 21 : individual source file, and distribute linked combinations including 22 : the two. 23 : 24 : You must obey the GNU General Public License in all respects for all 25 : of the code used other than OpenSSL. If you modify file(s) with this 26 : exception, you may extend this exception to your version of the 27 : file(s), but you are not obligated to do so. If you do not wish to do 28 : so, delete this exception statement from your version. If you delete 29 : this exception statement from all source files in the program, then 30 : also delete it here. 31 : */ 32 : 33 : #ifndef PARSERTRANSITION_HPP 34 : #define PARSERTRANSITION_HPP 35 : 36 : #include <stdlib.h> 37 : 38 : #include "parseraction.h" 39 : 40 : namespace Parser { 41 : class State; 42 : 43 288758108 : class Transition 44 : { 45 : public: 46 : // Transition is only a courier for an Action; it should 47 : // never create/delete one on its own. 48 : ActionPointer action; 49 : State *next_state; 50 : 51 72189527 : Transition( const Transition &x ) 52 72189527 : : action( x.action ), 53 72189527 : next_state( x.next_state ) {} 54 : Transition & operator=( const Transition &t ) 55 : { 56 : action = t.action; 57 : next_state = t.next_state; 58 : 59 : return *this; 60 : } 61 72129489 : Transition( ActionPointer s_action=shared::make_shared< Ignore >(), State *s_next_state=NULL ) 62 144258978 : : action( s_action ), next_state( s_next_state ) 63 : {} 64 : 65 : // This is only ever used in the 1-argument form; 66 : // we use this instead of an initializer to 67 : // tell Coverity the object never owns *action. 68 72219544 : Transition( State *s_next_state, ActionPointer s_action=shared::make_shared< Ignore >() ) 69 72279582 : : action( s_action ), next_state( s_next_state ) 70 : {} 71 : }; 72 : } 73 : 74 : #endif