// internals.hpp | |
// Copyright (c) 2009 Ben Hanson (http://www.benhanson.net/) | |
// | |
// Distributed under the Boost Software License, Version 1.0. (See accompanying | |
// file licence_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
#ifndef BOOST_LEXER_INTERNALS_HPP | |
#define BOOST_LEXER_INTERNALS_HPP | |
#include "containers/ptr_vector.hpp" | |
namespace boost | |
{ | |
namespace lexer | |
{ | |
namespace detail | |
{ | |
struct internals | |
{ | |
typedef std::vector<std::size_t> size_t_vector; | |
typedef ptr_vector<size_t_vector> size_t_vector_vector; | |
size_t_vector_vector _lookup; | |
size_t_vector _dfa_alphabet; | |
size_t_vector_vector _dfa; | |
bool _seen_BOL_assertion; | |
bool _seen_EOL_assertion; | |
internals () : | |
_seen_BOL_assertion (false), | |
_seen_EOL_assertion (false) | |
{ | |
} | |
void clear () | |
{ | |
_lookup.clear (); | |
_dfa_alphabet.clear (); | |
_dfa.clear (); | |
_seen_BOL_assertion = false; | |
_seen_EOL_assertion = false; | |
} | |
void swap (internals &internals_) | |
{ | |
_lookup->swap (*internals_._lookup); | |
_dfa_alphabet.swap (internals_._dfa_alphabet); | |
_dfa->swap (*internals_._dfa); | |
std::swap (_seen_BOL_assertion, internals_._seen_BOL_assertion); | |
std::swap (_seen_EOL_assertion, internals_._seen_EOL_assertion); | |
} | |
private: | |
internals (const internals &); // No copy construction. | |
internals &operator = (const internals &); // No assignment. | |
}; | |
} | |
} | |
} | |
#endif |