diff --git a/tool/PGListUtil/src/common/CIpList.h b/tool/PGListUtil/src/common/CIpList.h new file mode 100644 index 000000000..591c3877d --- /dev/null +++ b/tool/PGListUtil/src/common/CIpList.h @@ -0,0 +1,56 @@ +#ifndef CIPLIST_H +#define CIPLIST_H + +#include +#include +#include "common.h" +#include "CFilter.h" + +namespace pglu { +namespace ip { + +struct CIp { + char * caption; + union { + ulong ip64; + uint ip32[2]; + uchar ip8[8]; + }; + CIp * next; +}; + +class CIpList { +private: + boost::pool<> m_poolIp; + CIp m_ipHead; + CIp * m_ipFoot; + + filter::CFilter m_filter; + + int m_count; + int m_countDisabled; + + CIp * CreateIp(boost::xpressive::cmatch & match); + +public: + CIpList(); + ~CIpList(); + + void Clear(); + + void SetFilter(const char *filter, const filter::EFilterMode mode, const bool del); + void UnSetFilter(); + + bool LoadListFile(const char *path); + bool SaveListFile(const char *path, const bool append); + + void CheckAndSort(const bool sortCap, const bool sortIp, const bool delDupIp); + + int Count(); + int CountDisabled(); +}; + +} // namespace ip +} // namespace pglu + +#endif // CIPLIST_H diff --git a/tool/PGListUtil/src/common/common.h b/tool/PGListUtil/src/common/common.h new file mode 100644 index 000000000..60530d5b3 --- /dev/null +++ b/tool/PGListUtil/src/common/common.h @@ -0,0 +1,48 @@ +#ifndef COMMON_H +#define COMMON_H + +#ifdef _MSC_VER + +typedef unsigned __int8 uchar; +typedef unsigned __int32 uint; +typedef unsigned __int64 ulong; + +# else + +#include + +typedef uint8_t uchar; +typedef uint32_t uint; +typedef uint64_t ulong; + +#endif + +namespace pglu { + +#define PGLU_LENGTH_FILELINE 1024 + +inline uint ParseDigit3(const char *begin, const char *end) { + switch(end - begin) { + case 3: + return ((*begin & 0xF) * 100) + ((*(begin + 1) & 0xF) * 10) + (*(begin + 2) & 0xF); + case 2: + return ((*begin & 0xF) * 10) + (*(begin + 1) & 0xF); + case 1: + return (*begin & 0xF); + default: + return 256; + } +} + +#ifdef __MINGW32__ + +inline void ZeroString(char *str) { + while(*str != '\0') + *(str++) = '\0'; +} + +#endif + +} // namespace pglu + +#endif // COMMON_H