27#include <ext/algorithm>
29#include <alib/multimap>
49class PushdownStoreAlphabet;
50class BottomOfTheStackSymbol;
80template <
class InputSymbolTypeT = DefaultSymbolType,
class PushdownStoreSymbolTypeT = DefaultSymbolType,
class StateTypeT = DefaultStateType >
81class VisiblyPushdownNPDA final :
public core::Components < VisiblyPushdownNPDA < InputSymbolTypeT, PushdownStoreSymbolTypeT, StateTypeT >, ext::set < InputSymbolTypeT >, component::Set, std::tuple < CallAlphabet, ReturnAlphabet, LocalAlphabet >, ext::set < PushdownStoreSymbolTypeT >, component::Set, PushdownStoreAlphabet, PushdownStoreSymbolTypeT, component::Value, BottomOfTheStackSymbol, ext::set < StateTypeT >, component::Set, std::tuple < States, InitialStates, FinalStates > > {
132 return this->
template accessComponent < InitialStates > ( ).get ( );
141 return std::move ( this->
template accessComponent < InitialStates > ( ).
get ( ) );
152 return this->
template accessComponent < InitialStates > ( ).add ( std::move ( state ) );
161 this->
template accessComponent < InitialStates > ( ).set ( std::move ( states ) );
172 return this->
template accessComponent < InitialStates > ( ).remove ( state );
181 return this->
template accessComponent < States > ( ).get ( );
190 return std::move ( this->
template accessComponent < States > ( ).
get ( ) );
201 return this->
template accessComponent < States > ( ).add ( std::move ( state ) );
210 this->
template accessComponent < States > ( ).set ( std::move ( states ) );
221 return this->
template accessComponent < States > ( ).remove ( state );
230 return this->
template accessComponent < FinalStates > ( ).get ( );
239 return std::move ( this->
template accessComponent < FinalStates > ( ).
get ( ) );
250 return this->
template accessComponent < FinalStates > ( ).add ( std::move ( state ) );
259 this->
template accessComponent < FinalStates > ( ).set ( std::move ( states ) );
270 return this->
template accessComponent < FinalStates > ( ).remove ( state );
279 return this->
template accessComponent < PushdownStoreAlphabet > ( ).get ( );
288 return std::move ( this->
template accessComponent < PushdownStoreAlphabet > ( ).
get ( ) );
299 return this->
template accessComponent < PushdownStoreAlphabet > ( ).add ( std::move ( symbol ) );
308 this->
template accessComponent < PushdownStoreAlphabet > ( ).add ( std::move ( symbols ) );
317 this->
template accessComponent < PushdownStoreAlphabet > ( ).set ( std::move ( symbols ) );
328 return this->
template accessComponent < PushdownStoreAlphabet > ( ).remove ( symbol );
337 return this->
template accessComponent < BottomOfTheStackSymbol > ( ).get ( );
346 return std::move ( this->
template accessComponent < BottomOfTheStackSymbol > ( ).
get ( ) );
357 return this->
template accessComponent < BottomOfTheStackSymbol > ( ).set ( std::move ( symbol ) );
366 return this->
template accessComponent < CallAlphabet > ( ).get ( );
375 return std::move ( this->
template accessComponent < CallAlphabet > ( ).
get ( ) );
386 return this->
template accessComponent < CallAlphabet > ( ).add ( std::move ( symbol ) );
395 this->
template accessComponent < CallAlphabet > ( ).add ( std::move ( symbols ) );
404 this->
template accessComponent < CallAlphabet > ( ).set ( std::move ( symbols ) );
415 return this->
template accessComponent < CallAlphabet > ( ).remove ( symbol );
424 return this->
template accessComponent < ReturnAlphabet > ( ).get ( );
433 return std::move ( this->
template accessComponent < ReturnAlphabet > ( ).
get ( ) );
444 return this->
template accessComponent < ReturnAlphabet > ( ).add ( std::move ( symbol ) );
453 this->
template accessComponent < ReturnAlphabet > ( ).add ( std::move ( symbols ) );
462 this->
template accessComponent < ReturnAlphabet > ( ).set ( std::move ( symbols ) );
473 return this->
template accessComponent < ReturnAlphabet > ( ).remove ( symbol );
482 return this->
template accessComponent < LocalAlphabet > ( ).get ( );
491 return std::move ( this->
template accessComponent < LocalAlphabet > ( ).
get ( ) );
502 return this->
template accessComponent < LocalAlphabet > ( ).add ( std::move ( symbol ) );
511 this->
template accessComponent < LocalAlphabet > ( ).add ( std::move ( symbols ) );
520 this->
template accessComponent < LocalAlphabet > ( ).set ( std::move ( symbols ) );
531 return this->
template accessComponent < LocalAlphabet > ( ).remove ( symbol );
689 return std::tie(
getStates(),
getCallInputAlphabet(),
getReturnInputAlphabet(),
getLocalInputAlphabet(),
getInitialStates(),
getFinalStates(),
getPushdownStoreAlphabet(),
getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions) <=>
std::tie(other.getStates(), other.getCallInputAlphabet(), other.getReturnInputAlphabet(), other.getLocalInputAlphabet(), other.getInitialStates(), other.getFinalStates(), other.getPushdownStoreAlphabet(), other.getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
700 return std::tie(
getStates(),
getCallInputAlphabet(),
getReturnInputAlphabet(),
getLocalInputAlphabet(),
getInitialStates(),
getFinalStates(),
getPushdownStoreAlphabet(),
getBottomOfTheStackSymbol(), callTransitions, returnTransitions, localTransitions) ==
std::tie(other.
getStates(), other.
getCallInputAlphabet(), other.
getReturnInputAlphabet(), other.
getLocalInputAlphabet(), other.
getInitialStates(), other.
getFinalStates(), other.
getPushdownStoreAlphabet(), other.
getBottomOfTheStackSymbol(), other.callTransitions, other.returnTransitions, other.localTransitions);
712 return out <<
"(VisiblyPushdownNPDA"
713 <<
" states = " << instance.
getStates ( )
728template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
729VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >::VisiblyPushdownNPDA (
ext::set < StateType > states,
ext::set < InputSymbolType > callAlphabet,
ext::set < InputSymbolType > returnAlphabet,
ext::set < InputSymbolType > localAlphabet,
ext::set < PushdownStoreSymbolType > pushdownStoreAlphabet,
ext::set < StateType > initialStates,
PushdownStoreSymbolType bottomOfTheStackSymbol,
ext::set < StateType > finalStates ) :
core::Components <
VisiblyPushdownNPDA,
ext::set < InputSymbolType >, component::Set, std::tuple < CallAlphabet, ReturnAlphabet, LocalAlphabet >,
ext::set < PushdownStoreSymbolType >, component::Set, PushdownStoreAlphabet,
PushdownStoreSymbolType, component::Value, BottomOfTheStackSymbol,
ext::set < StateType >, component::Set, std::tuple < States, InitialStates, FinalStates > > ( std::move ( callAlphabet ), std::move ( returnAlphabet ), std::move ( localAlphabet ), std::move ( pushdownStoreAlphabet ), std::move ( bottomOfTheStackSymbol ), std::move ( states ), std::move ( initialStates ), std::move ( finalStates ) ) {
732template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
736template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
738 if ( ! getStates().count(from)) {
742 if ( ! getCallInputAlphabet().count(input)) {
746 if ( ! getStates().count(to)) {
750 if (! getPushdownStoreAlphabet().count(push)) {
754 auto upper_bound = callTransitions.upper_bound (
ext::tie ( from, input ) );
755 auto lower_bound = callTransitions.lower_bound (
ext::tie ( from, input ) );
759 auto iter = std::lower_bound ( lower_bound, upper_bound, value, [ ] (
const auto & transition,
const auto & target ) {
return transition.second < target; } );
760 if ( iter != upper_bound && value >= iter->second )
765 callTransitions.insert ( iter,
std::make_pair ( std::move ( key ), std::move ( value ) ) );
769template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
771 if (! getStates().count(from)) {
775 if (! getReturnInputAlphabet().count(input)) {
779 if (! getStates().count(to)) {
783 if (! getPushdownStoreAlphabet().count(pop)) {
787 auto upper_bound = returnTransitions.upper_bound (
ext::tie ( from, input, pop ) );
788 auto lower_bound = returnTransitions.lower_bound (
ext::tie ( from, input, pop ) );
790 auto iter = std::lower_bound ( lower_bound, upper_bound, to, [ ] (
const auto & transition,
const auto & target ) {
return transition.second < target; } );
791 if ( iter != upper_bound && to >= iter->second )
796 returnTransitions.insert ( iter,
std::make_pair ( std::move ( key ), std::move ( to ) ) );
800template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
802 if (! getStates().count(from)) {
806 if (! getLocalInputAlphabet().count(input)) {
810 if (! getStates().count(to)) {
814 auto upper_bound = localTransitions.upper_bound (
ext::tie ( from, input ) );
815 auto lower_bound = localTransitions.lower_bound (
ext::tie ( from, input ) );
817 auto iter = std::lower_bound ( lower_bound, upper_bound, to, [ ] (
const auto & transition,
const auto & target ) {
return transition.second < target; } );
818 if ( iter != upper_bound && to >= iter->second )
823 localTransitions.insert ( iter,
std::make_pair ( std::move ( key ), std::move ( to ) ) );
827template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
829 auto upper_bound = callTransitions.upper_bound (
ext::tie ( from, input ) );
830 auto lower_bound = callTransitions.lower_bound (
ext::tie ( from, input ) );
831 auto iter = std::find_if ( lower_bound, upper_bound, [ & ] (
const auto & transition ) {
return transition.second.first == to && transition.second.second == push; } );
832 if ( iter == upper_bound )
835 callTransitions.erase ( iter );
839template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
841 auto upper_bound = returnTransitions.upper_bound (
ext::tie ( from, input, pop ) );
842 auto lower_bound = returnTransitions.lower_bound (
ext::tie ( from, input, pop ) );
843 auto iter = std::find_if ( lower_bound, upper_bound, [ & ] (
const auto & transition ) {
return transition.second == to; } );
844 if ( iter == upper_bound )
847 returnTransitions.erase ( iter );
851template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
853 auto upper_bound = localTransitions.upper_bound (
ext::tie ( from, input ) );
854 auto lower_bound = localTransitions.lower_bound (
ext::tie ( from, input ) );
855 auto iter = std::find_if ( lower_bound, upper_bound, [ & ] (
const auto & transition ) {
return transition.second == to; } );
856 if ( iter == upper_bound )
859 localTransitions.erase ( iter );
863template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
865 return callTransitions;
868template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
870 return std::move ( callTransitions );
873template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
875 return returnTransitions;
878template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
880 return std::move ( returnTransitions );
883template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
885 return localTransitions;
888template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
890 return std::move ( localTransitions );
904template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
905class SetConstraint<
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >, InputSymbolType, automaton::CallAlphabet > {
917 if ( symbol == callTransition.first.second )
942 if(
automaton.getLocalInputAlphabet().count(symbol))
944 if(
automaton.getReturnInputAlphabet().count(symbol))
956template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
957class SetConstraint<
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >, InputSymbolType, automaton::ReturnAlphabet > {
969 if (symbol == std::get<1>(returnTransition.first))
994 if(
automaton.getLocalInputAlphabet().count(symbol))
996 if(
automaton.getCallInputAlphabet().count(symbol))
1008template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1009class SetConstraint<
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >, InputSymbolType, automaton::LocalAlphabet > {
1021 if (symbol == localTransition.first.second)
1046 if(
automaton.getReturnInputAlphabet().count(symbol))
1048 if(
automaton.getCallInputAlphabet().count(symbol))
1060template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1061class SetConstraint<
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >, PushdownStoreSymbolType, automaton::PushdownStoreAlphabet > {
1073 if (symbol == transition.second.second)
1077 if (symbol == std::get<2>(returnTransition.first))
1080 if(
automaton.getBottomOfTheStackSymbol() == symbol)
1115template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1116class ElementConstraint<
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType >, PushdownStoreSymbolType, automaton::BottomOfTheStackSymbol > {
1127 return automaton.template accessComponent < automaton::PushdownStoreAlphabet > ( ).get ( ).count ( symbol );
1147template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1159 if (
automaton.getInitialStates ( ).count ( state ) )
1162 if (
automaton.getFinalStates ( ).count ( state ) )
1166 if ( state == transition.first.first )
1168 if ( transition.second.first == state )
1173 if (state == std::get<0>(transition.first))
1175 if ( transition.second == state )
1180 if (state == transition.first.first)
1182 if ( transition.second == state )
1218template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1242 return automaton.template accessComponent < automaton::States > ( ).get ( ).count ( state );
1262template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1286 return automaton.template accessComponent < automaton::States > ( ).get ( ).count ( state );
1304template <
class InputSymbolType,
class PushdownStoreSymbolType,
class StateType >
1305struct normalize <
automaton::VisiblyPushdownNPDA < InputSymbolType, PushdownStoreSymbolType, StateType > > {
1316 automaton::VisiblyPushdownNPDA < > res ( std::move ( states ), std::move ( call_alphabet ), std::move ( return_alphabet ), std::move ( local_alphabet ), std::move ( pushdownAlphabet ), std::move ( initialStates ), std::move ( initialSymbol ), std::move ( finalStates ) );
1325 res.addCallTransition ( std::move ( from ), std::move ( input ), std::move ( to ), std::move ( push ) );
1335 res.addReturnTransition ( std::move ( from ), std::move ( input ), std::move ( pop ), std::move ( to ) );
1344 res.addLocalTransition ( std::move ( from ), std::move ( input ), std::move ( to ) );
static ext::set< DefaultSymbolType > normalizeAlphabet(ext::set< SymbolType > &&symbols)
Definition: SymbolNormalize.h:50
static DefaultSymbolType normalizeSymbol(SymbolType &&symbol)
Definition: SymbolNormalize.h:68
Definition: AutomatonException.h:15
static DefaultStateType normalizeState(StateType &&state)
Definition: AutomatonNormalize.h:76
static ext::multiset< DefaultStateType > normalizeStates(ext::multiset< StateType > &&states)
Definition: AutomatonNormalize.h:49
Nondeterministic visibly pushdown automaton. Accepts subset of context free languages.
Definition: VisiblyPushdownNPDA.h:81
void setPushdownStoreAlphabet(ext::set< PushdownStoreSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:316
void setCallInputAlphabet(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:403
bool removeLocalInputSymbol(const InputSymbolType &symbol)
Definition: VisiblyPushdownNPDA.h:530
VisiblyPushdownNPDA(ext::set< StateType > states, ext::set< InputSymbolType > callAlphabet, ext::set< InputSymbolType > returnAlphabet, ext::set< InputSymbolType > localAlphabet, ext::set< PushdownStoreSymbolType > pushdownStoreAlphabet, ext::set< StateType > initialStates, PushdownStoreSymbolType bottomOfTheStackSymbol, ext::set< StateType > finalStates)
Creates a new instance of the automaton with a concrete set of states, call, return,...
Definition: VisiblyPushdownNPDA.h:729
bool removeLocalTransition(const StateType &from, const InputSymbolType &input, const StateType &to)
Removes a local transition from the automaton.
Definition: VisiblyPushdownNPDA.h:852
bool addLocalTransition(StateType from, InputSymbolType input, StateType to)
Adds a local transition to the automaton.
Definition: VisiblyPushdownNPDA.h:801
ext::set< StateType > && getFinalStates() &&
Definition: VisiblyPushdownNPDA.h:238
const PushdownStoreSymbolType & getBottomOfTheStackSymbol() const &
Definition: VisiblyPushdownNPDA.h:336
const ext::set< StateType > & getInitialStates() const &
Definition: VisiblyPushdownNPDA.h:131
const ext::set< PushdownStoreSymbolType > & getPushdownStoreAlphabet() const &
Definition: VisiblyPushdownNPDA.h:278
bool removeReturnInputSymbol(const InputSymbolType &symbol)
Definition: VisiblyPushdownNPDA.h:472
bool removePushdownStoreSymbol(const PushdownStoreSymbolType &symbol)
Definition: VisiblyPushdownNPDA.h:327
ext::set< InputSymbolType > && getReturnInputAlphabet() &&
Definition: VisiblyPushdownNPDA.h:432
bool removeState(const StateType &state)
Definition: VisiblyPushdownNPDA.h:220
bool addFinalState(StateType state)
Definition: VisiblyPushdownNPDA.h:249
StateTypeT StateType
Definition: VisiblyPushdownNPDA.h:85
const ext::set< StateType > & getStates() const &
Definition: VisiblyPushdownNPDA.h:180
bool addCallInputSymbol(InputSymbolType symbol)
Definition: VisiblyPushdownNPDA.h:385
bool addReturnTransition(StateType from, InputSymbolType input, PushdownStoreSymbolType pop, StateType to)
Adds a return transition to the automaton.
Definition: VisiblyPushdownNPDA.h:770
bool addReturnInputSymbol(InputSymbolType symbol)
Definition: VisiblyPushdownNPDA.h:443
bool operator==(const VisiblyPushdownNPDA &other) const
Definition: VisiblyPushdownNPDA.h:699
bool removeInputSymbol(const InputSymbolType &symbol)
Definition: VisiblyPushdownNPDA.h:541
void setInitialStates(ext::set< StateType > states)
Definition: VisiblyPushdownNPDA.h:160
PushdownStoreSymbolTypeT PushdownStoreSymbolType
Definition: VisiblyPushdownNPDA.h:84
ext::set< InputSymbolType > && getCallInputAlphabet() &&
Definition: VisiblyPushdownNPDA.h:374
const ext::multimap< ext::pair< StateType, InputSymbolType >, StateType > & getLocalTransitions() const &
Definition: VisiblyPushdownNPDA.h:884
void addReturnInputSymbols(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:452
bool removeCallInputSymbol(const InputSymbolType &symbol)
Definition: VisiblyPushdownNPDA.h:414
bool removeCallTransition(const StateType &from, const InputSymbolType &input, const StateType &to, const PushdownStoreSymbolType &push)
Removes a call transition from the automaton.
Definition: VisiblyPushdownNPDA.h:828
ext::set< InputSymbolType > && getLocalInputAlphabet() &&
Definition: VisiblyPushdownNPDA.h:490
void setFinalStates(ext::set< StateType > states)
Definition: VisiblyPushdownNPDA.h:258
void setReturnInputAlphabet(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:461
bool addCallTransition(StateType from, InputSymbolType input, StateType to, PushdownStoreSymbolType push)
Adds a call transition to the automaton.
Definition: VisiblyPushdownNPDA.h:737
bool removeInitialState(const StateType &state)
Definition: VisiblyPushdownNPDA.h:171
void setLocalInputAlphabet(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:519
friend ext::ostream & operator<<(ext::ostream &out, const VisiblyPushdownNPDA &instance)
Definition: VisiblyPushdownNPDA.h:711
InputSymbolTypeT InputSymbolType
Definition: VisiblyPushdownNPDA.h:83
bool addLocalInputSymbol(InputSymbolType symbol)
Definition: VisiblyPushdownNPDA.h:501
bool addInitialState(StateType state)
Definition: VisiblyPushdownNPDA.h:151
const ext::set< InputSymbolType > & getCallInputAlphabet() const &
Definition: VisiblyPushdownNPDA.h:365
ext::set< StateType > && getStates() &&
Definition: VisiblyPushdownNPDA.h:189
void addLocalInputSymbols(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:510
bool removeReturnTransition(const StateType &from, const InputSymbolType &input, const PushdownStoreSymbolType &pop, const StateType &to)
Removes a return transition from the automaton.
Definition: VisiblyPushdownNPDA.h:840
void addCallInputSymbols(ext::set< InputSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:394
ext::set< StateType > && getInitialStates() &&
Definition: VisiblyPushdownNPDA.h:140
const ext::set< StateType > & getFinalStates() const &
Definition: VisiblyPushdownNPDA.h:229
bool addState(StateType state)
Definition: VisiblyPushdownNPDA.h:200
void addPushdownStoreSymbols(ext::set< PushdownStoreSymbolType > symbols)
Definition: VisiblyPushdownNPDA.h:307
const ext::set< InputSymbolType > & getReturnInputAlphabet() const &
Definition: VisiblyPushdownNPDA.h:423
PushdownStoreSymbolType && getBottomOfTheStackSymbol() &&
Definition: VisiblyPushdownNPDA.h:345
ext::set< PushdownStoreSymbolType > && getPushdownStoreAlphabet() &&
Definition: VisiblyPushdownNPDA.h:287
const ext::multimap< ext::tuple< StateType, InputSymbolType, PushdownStoreSymbolType >, StateType > & getReturnTransitions() const &
Definition: VisiblyPushdownNPDA.h:874
bool removeFinalState(const StateType &state)
Definition: VisiblyPushdownNPDA.h:269
const ext::multimap< ext::pair< StateType, InputSymbolType >, ext::pair< StateType, PushdownStoreSymbolType > > & getCallTransitions() const &
Definition: VisiblyPushdownNPDA.h:864
void setStates(ext::set< StateType > states)
Definition: VisiblyPushdownNPDA.h:209
bool setBottomOfTheStackSymbol(PushdownStoreSymbolType symbol)
Definition: VisiblyPushdownNPDA.h:356
const ext::set< InputSymbolType > & getLocalInputAlphabet() const &
Definition: VisiblyPushdownNPDA.h:481
bool addPushdownStoreSymbol(PushdownStoreSymbolType symbol)
Definition: VisiblyPushdownNPDA.h:298
Definition: components.hpp:181
Definition: components.hpp:25
Definition: setComponents.hpp:26
Class extending the multimap class from the standard library. Original reason is to allow printing of...
Definition: multimap.hpp:48
Class extending the pair class from the standard library. Original reason is to allow printing of the...
Definition: pair.hpp:43
Class extending the tuple class from the standard library. Original reason is to allow printing of th...
Definition: tuple.hpp:42
typename T::StateType StateType
Definition: ToGrammarLeftRG.h:64
return res
Definition: MinimizeByPartitioning.h:145
Definition: ToGrammar.h:31
Definition: normalize.hpp:10
Definition: sigHandler.cpp:20
constexpr tuple< Elements &... > tie(Elements &... args) noexcept
Helper of extended tuple of references construction. The tuple is constructed to reffer to values in ...
Definition: tuple.hpp:218
reference_mover< T > make_mover(T ¶m)
Move adaptor construction function specialized to lvalue reference parameter.
Definition: iterator.hpp:468
std::string to_string(const T &value)
To string method designated for objects that can be casted to string.
Definition: string.hpp:131
constexpr auto make_pair(T1 &&x, T2 &&y)
Definition: pair.hpp:79
auto & get(ext::ptr_array< Type, N > &tpl)
Specialisation of get function for pointer arrays.
Definition: ptr_array.hpp:693
Definition: normalize.hpp:13