/usr/include/pegtl/contrib/changes.hh is in pegtl-dev 1.3.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | // Copyright (c) 2015 Dr. Colin Hirsch and Daniel Frey
// Please see LICENSE for license or visit https://github.com/ColinH/PEGTL/
#ifndef PEGTL_CONTRIB_CHANGES_HH
#define PEGTL_CONTRIB_CHANGES_HH
#include <type_traits>
#include "../normal.hh"
namespace pegtl
{
namespace internal
{
struct dummy_disabled_state
{
template< typename ... Ts >
void success( Ts && ... )
{ }
};
template< pegtl::apply_mode A, typename State >
using state_disable_helper = typename std::conditional< A == pegtl::apply_mode::ACTION, State, dummy_disabled_state >::type;
} // internal
template< typename Rule, typename State, template< typename ... > class Base = pegtl::normal >
struct change_state
: public Base< Rule >
{
template< pegtl::apply_mode A, template< typename ... > class Action, template< typename ... > class Control, typename Input, typename ... States >
static bool match( Input & in, States && ... st )
{
internal::state_disable_helper< A, State > s;
if ( Base< Rule >::template match< A, Action, Control >( in, s ) ) {
s.success( st ... );
return true;
}
return false;
}
};
template< typename Rule, template< typename ... > class Action, template< typename ... > class Base = pegtl::normal >
struct change_action
: public Base< Rule >
{
template< pegtl::apply_mode A, template< typename ... > class, template< typename ... > class Control, typename Input, typename ... States >
static bool match( Input & in, States && ... st )
{
return Base< Rule >::template match< A, Action, Control >( in, st ... );
}
};
template< template< typename ... > class Action, template< typename ... > class Base >
struct change_both_helper
{
template< typename T > using change_action = change_action< T, Action, Base >;
};
template< typename Rule, typename State, template< typename ... > class Action, template< typename ... > class Base = pegtl::normal >
struct change_state_and_action
: public change_state< Rule, State, change_both_helper< Action, Base >::template change_action >
{ };
} // pegtl
#endif
|