Canola  0.8.D001
lib/lexer/functor.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_H
00019 #define LIB_LEXER_FUNCTOR_H
00020 
00021 #include <boost/shared_ptr.hpp>
00022 
00023 #include <lib/location.h>
00024 
00029 class lexer_functor
00030 {
00031 public:
00032     typedef boost::shared_ptr<lexer_functor> pointer;
00033 
00037     virtual ~lexer_functor();
00038 
00043     void operator()(const location::pointer &where) { do_it(where); }
00044 
00045 protected:
00050     virtual void do_it(const location::pointer &where) = 0;
00051 
00056     lexer_functor();
00057 
00058 private:
00066     lexer_functor(const lexer_functor &rhs);
00067 
00068 public:
00076     lexer_functor &operator=(const lexer_functor &rhs);
00077 };
00078 
00079 #endif // LIB_LEXER_FUNCTOR_H