aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tool/PGListUtil/src/common/CIpList.h56
-rw-r--r--tool/PGListUtil/src/common/common.h48
2 files changed, 104 insertions, 0 deletions
diff --git a/tool/PGListUtil/src/common/CIpList.h b/tool/PGListUtil/src/common/CIpList.h
new file mode 100644
index 00000000..591c3877
--- /dev/null
+++ b/tool/PGListUtil/src/common/CIpList.h
@@ -0,0 +1,56 @@
+#ifndef CIPLIST_H
+#define CIPLIST_H
+
+#include <boost/pool/pool.hpp>
+#include <boost/xpressive/xpressive.hpp>
+#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 00000000..60530d5b
--- /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 <boost/cstdint.hpp>
+
+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