Crypto++
|
00001 #ifndef CRYPTOPP_FLTRIMPL_H 00002 #define CRYPTOPP_FLTRIMPL_H 00003 00004 #define FILTER_BEGIN \ 00005 switch (m_continueAt) \ 00006 { \ 00007 case 0: \ 00008 m_inputPosition = 0; 00009 00010 #define FILTER_END_NO_MESSAGE_END_NO_RETURN \ 00011 break; \ 00012 default: \ 00013 assert(false); \ 00014 } 00015 00016 #define FILTER_END_NO_MESSAGE_END \ 00017 FILTER_END_NO_MESSAGE_END_NO_RETURN \ 00018 return 0; 00019 00020 /* 00021 #define FILTER_END \ 00022 case -1: \ 00023 if (messageEnd && Output(-1, NULL, 0, messageEnd, blocking)) \ 00024 return 1; \ 00025 FILTER_END_NO_MESSAGE_END 00026 */ 00027 00028 #define FILTER_OUTPUT3(site, statement, output, length, messageEnd, channel) \ 00029 {\ 00030 case site: \ 00031 statement; \ 00032 if (Output(site, output, length, messageEnd, blocking, channel)) \ 00033 return STDMAX(size_t(1), length-m_inputPosition);\ 00034 } 00035 00036 #define FILTER_OUTPUT2(site, statement, output, length, messageEnd) \ 00037 FILTER_OUTPUT3(site, statement, output, length, messageEnd, DEFAULT_CHANNEL) 00038 00039 #define FILTER_OUTPUT(site, output, length, messageEnd) \ 00040 FILTER_OUTPUT2(site, 0, output, length, messageEnd) 00041 00042 #define FILTER_OUTPUT_BYTE(site, output) \ 00043 FILTER_OUTPUT(site, &(const byte &)(byte)output, 1, 0) 00044 00045 #define FILTER_OUTPUT2_MODIFIABLE(site, statement, output, length, messageEnd) \ 00046 {\ 00047 case site: \ 00048 statement; \ 00049 if (OutputModifiable(site, output, length, messageEnd, blocking)) \ 00050 return STDMAX(size_t(1), length-m_inputPosition);\ 00051 } 00052 00053 #define FILTER_OUTPUT_MODIFIABLE(site, output, length, messageEnd) \ 00054 FILTER_OUTPUT2_MODIFIABLE(site, 0, output, length, messageEnd) 00055 00056 #define FILTER_OUTPUT2_MAYBE_MODIFIABLE(site, statement, output, length, messageEnd, modifiable) \ 00057 {\ 00058 case site: \ 00059 statement; \ 00060 if (modifiable ? OutputModifiable(site, output, length, messageEnd, blocking) : Output(site, output, length, messageEnd, blocking)) \ 00061 return STDMAX(size_t(1), length-m_inputPosition);\ 00062 } 00063 00064 #define FILTER_OUTPUT_MAYBE_MODIFIABLE(site, output, length, messageEnd, modifiable) \ 00065 FILTER_OUTPUT2_MAYBE_MODIFIABLE(site, 0, output, length, messageEnd, modifiable) 00066 00067 #endif