00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef WIFI_FRAME_FILTER_MERGE_HH_
00023 # define WIFI_FRAME_FILTER_MERGE_HH_
00024
00025 # include <wipal/phy/prism_header.hh>
00026 # include <wipal/wifi/frame/frame.hh>
00027 # include <wipal/wifi/addr_mapping.hh>
00028 # include <wipal/pcap/frame_descriptor.hh>
00029 # include <wipal/tool/endianness.hh>
00030
00031 namespace wifi
00032 {
00033 namespace frame
00034 {
00035 namespace filter
00036 {
00037
00038 namespace internals
00039 {
00040
00041 template <class HT>
00042 struct equal
00043 {
00044 equal(const pcapxx::frame_descriptor& lhs,
00045 const tool::endian::endianness& phy_end);
00046
00047 bool operator == (const pcapxx::frame_descriptor& rhs) const;
00048 private:
00049 const pcapxx::frame_descriptor& lhs_;
00050 const tool::endian::endianness& phy_end_;
00051 };
00052
00053 template <class HT>
00054 bool
00055 operator == (const pcapxx::frame_descriptor& lhs, const equal<HT>& rhs);
00056
00057 }
00058
00069 template <class UniqueId,
00070 class HeaderType,
00071 template <class, class, class> class Intersector,
00072 template <class, class, class, class> class Merger,
00073 class I1, class I2, class F, class BL>
00074 void
00075 provide_merge(const I1& first1, const I1& last1,
00076 const I2& first2, const I2& last2,
00077 addr_mapping& mapping,
00078 F& func,
00079 bool filter_prism,
00080 tool::endian::endianness phy_end,
00081 const BL& blist);
00082
00083 }
00084
00085 }
00086
00087 }
00088
00089 # include "merge.hxx"
00090
00091 #endif // ! WIFI_FRAME_FILTER_MERGE_HH_