- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
AbstractMessageFrame * DataLength = create_frame(
make_condition_reader(this,
fnc_ext::bind(
fnc_ext::compose1(
fnc_ext::compose2(std::logical_or<bool>(),
std::bind2nd(std::equal_to<byte>(), PC5000FlashFeatures::MARKER_SYMBOL),
std::bind2nd(std::equal_to<byte>(), PC5000FlashFeatures::SPACE_SYMBOL)),
fnc_ext::mem_fun<const ByteBuffer, const byte&>(&ByteBuffer::back) ),
&_receivedBuffer),
fnc_ext::bind(
fnc_ext::compose2(std::logical_or<bool>(),
fnc_ext::compose1(std::bind2nd(std::greater<WORD>(),
PC5000FlashFeatures::LENGTH_HEADER +
_maxCommandFieldLength +
PC5000FlashFeatures::LENGTH_MARKER +
PC5000FlashFeatures::LENGTH_OF_LENGTH),
fnc_ext::mem_fun(&ByteBuffer::length)),
fnc_ext::compose1(fnc_ext::compose2(std::logical_and<bool>(),
std::not1(std::ptr_fun<const char, bool>((SymbolCheckFunc)isDigit)),
std::not1(std::ptr_fun<const char, bool>((SymbolCheckFunc)isEnglishLetter))),
fnc_ext::mem_fun<const abstractBuffer<unsigned char>, const byte&>(&ByteBuffer::back)) ),
&_receivedBuffer) ),
fnc_ext::bind(std::mem_fun(&ThisClass::setDataLength), this),
"Data Length");
Композиции, частичные применения, функторы? Больше тотальной функциональщины! Вложенность продолжает расти с развитием проекта.
std::mem_fun fnc_ext::mem_fun
Парень не велосипедист, хотя промахнулся c isDigit std::isdigit.
Это что вообще такое? Гугл по запросу fnc_ext выдает 10 страниц уютненького, а дальше всякий хлам, не имеющий отношения к делу :)
Сибилдероблядство какое-нибудь?
Потому что они это делают на особых, функци анальных языках.