1#ifndef CRYPTOPP_FLTRIMPL_H 2#define CRYPTOPP_FLTRIMPL_H 3 4#define FILTER_BEGIN \ 5 switch (m_continueAt) \ 6 { \ 7 case 0: \ 8 m_inputPosition = 0; 9 10#define FILTER_END_NO_MESSAGE_END_NO_RETURN \ 11 break; \ 12 default: \ 13 assert(false); \ 14 } 15 16#define FILTER_END_NO_MESSAGE_END \ 17 FILTER_END_NO_MESSAGE_END_NO_RETURN \ 18 return 0; 19 20/* 21#define FILTER_END \ 22 case -1: \ 23 if (messageEnd && Output(-1, NULL, 0, messageEnd, blocking)) \ 24 return 1; \ 25 FILTER_END_NO_MESSAGE_END 26*/ 27 28#define FILTER_OUTPUT3(site, statement, output, length, messageEnd, channel) \ 29 {\ 30 case site: \ 31 statement; \ 32 if (Output(site, output, length, messageEnd, blocking, channel)) \ 33 return STDMAX(size_t(1), length-m_inputPosition);\ 34 } 35 36#define FILTER_OUTPUT2(site, statement, output, length, messageEnd) \ 37 FILTER_OUTPUT3(site, statement, output, length, messageEnd, DEFAULT_CHANNEL) 38 39#define FILTER_OUTPUT(site, output, length, messageEnd) \ 40 FILTER_OUTPUT2(site, 0, output, length, messageEnd) 41 42#define FILTER_OUTPUT_BYTE(site, output) \ 43 FILTER_OUTPUT(site, &(const byte &)(byte)output, 1, 0) 44 45#define FILTER_OUTPUT2_MODIFIABLE(site, statement, output, length, messageEnd) \ 46 {\ 47 case site: \ 48 statement; \ 49 if (OutputModifiable(site, output, length, messageEnd, blocking)) \ 50 return STDMAX(size_t(1), length-m_inputPosition);\ 51 } 52 53#define FILTER_OUTPUT_MODIFIABLE(site, output, length, messageEnd) \ 54 FILTER_OUTPUT2_MODIFIABLE(site, 0, output, length, messageEnd) 55 56#define FILTER_OUTPUT2_MAYBE_MODIFIABLE(site, statement, output, length, messageEnd, modifiable) \ 57 {\ 58 case site: \ 59 statement; \ 60 if (modifiable ? OutputModifiable(site, output, length, messageEnd, blocking) : Output(site, output, length, messageEnd, blocking)) \ 61 return STDMAX(size_t(1), length-m_inputPosition);\ 62 } 63 64#define FILTER_OUTPUT_MAYBE_MODIFIABLE(site, output, length, messageEnd, modifiable) \ 65 FILTER_OUTPUT2_MAYBE_MODIFIABLE(site, 0, output, length, messageEnd, modifiable) 66 67#endif 68