// Copyright {Jagger Software Limited} 2003 #if !defined GRAMMAR_PREDICATE_SYMBOL_DEFINITION_INCLUDED || \ defined GRAMMAR_PREDICATE_SYMBOL_DEFINITION_TEMPLATE_INCLUDED #error "grammar/predicate_symbol_definition-template.hpp" #included directly #endif #define GRAMMAR_PREDICATE_SYMBOL_DEFINITION_TEMPLATE_INCLUDED #include "contract/pre_condition.hpp" #include "grammar/visitor.hpp" #include namespace grammar // predicate_symbol_definition - 'tor { template predicate_symbol_definition::predicate_symbol_definition ( const key_type & key, const char * name, named_method ptr ) : symbol_definition(key, name) , predicate(ptr) { PRE_CONDITION(ptr != 0); } } namespace grammar // predicate_symbol_definition - visiting { template bool predicate_symbol_definition::accept(::grammar::visitor & visitor) const { return (dynamic_cast(visitor).*predicate)(*this); } } namespace grammar // predicate_symbol_definition - streaming { template void predicate_symbol_definition::write(::std::ostream & out) const { out << "PREDICATE(" << name << ")\n"; } }