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
00022
00023
00024
00025
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