Canola  0.8.D001
lib/lexer/functor/program_mode.h
Go to the documentation of this file.
00001 //
00002 // canola - canon canola 1614p emulator
00003 // Copyright (C) 2011 Peter Miller
00004 //
00005 // This program is free software; you can redistribute it and/or modify
00006 // it under the terms of the GNU General Public License, version 3, as
00007 // published by the Free Software Foundation.
00008 //
00009 // This program is distributed in the hope that it will be useful,
00010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 // General Public License for more details.
00013 //
00014 // You should have received a copy of the GNU General Public License along
00015 // with this program. If not, see <http://www.gnu.org/licenses/>.
00016 //
00017 
00018 #ifndef LIB_LEXER_FUNCTOR_PROGRAM_MODE_H
00019 #define LIB_LEXER_FUNCTOR_PROGRAM_MODE_H
00020 
00021 #include <lib/calculator.h>
00022 #include <lib/lexer/functor.h>
00023 
00028 class lexer_functor_program_mode:
00029     public lexer_functor
00030 {
00031 public:
00032     typedef boost::shared_ptr<lexer_functor_program_mode> pointer;
00033 
00037     virtual ~lexer_functor_program_mode();
00038 
00048     static pointer create(calculator &subject,
00049         calculator::program_mode_t program_mode);
00050 
00051     // See base class for documentation.
00052     void do_it(const location::pointer &where);
00053 
00054 private:
00064     lexer_functor_program_mode(calculator &subject,
00065         calculator::program_mode_t program_mode);
00066 
00071     calculator &subject;
00072 
00077     calculator::program_mode_t program_mode;
00082     lexer_functor_program_mode();
00083 
00091     lexer_functor_program_mode(const lexer_functor_program_mode &rhs);
00092 
00100     lexer_functor_program_mode &operator=(
00101         const lexer_functor_program_mode &rhs);
00102 };
00103 
00104 #endif // LIB_LEXER_FUNCTOR_PROGRAM_MODE_H