]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Cleanup: simplify libTrie
authorFrancesco Chemolli <kinkie@squid-cache.org>
Fri, 27 Jun 2014 15:39:17 +0000 (17:39 +0200)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Fri, 27 Jun 2014 15:39:17 +0000 (17:39 +0200)
lib/libTrie/Makefile.am
lib/libTrie/Trie.cc
lib/libTrie/Trie.cci [deleted file]
lib/libTrie/Trie.h
lib/libTrie/TrieNode.cc
lib/libTrie/TrieNode.cci [deleted file]
lib/libTrie/TrieNode.h
lib/libTrie/test/Makefile.am
lib/libTrie/test/trie-c.c [deleted file]

index 14bcd6a44ef7b1af1d16b03341abbff83de0b9dd..2a1a92965a94cd6f7a9d59db340238fce2e1937d 100644 (file)
@@ -9,9 +9,7 @@ noinst_LIBRARIES = libTrie.a
 noinst_HEADERS = Trie.h TrieNode.h TrieCharTransform.h
 
 libTrie_a_SOURCES = Trie.cc \
-       Trie.cci \
        Trie.h \
        TrieNode.cc \
-       TrieNode.cci \
        TrieNode.h \
        TrieCharTransform.h
index 32e39afa6c8dc9cb16afee02366d62add72cd60d..ca2efb3ca2e319f579c905764a738b601030c58e 100644 (file)
 
 #include "squid.h"
 #include "Trie.h"
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
 #include "TrieCharTransform.h"
 #include "TrieNode.h"
 
-#if !_USE_INLINE_
-#include "Trie.cci"
+#if HAVE_UNISTD_H
+#include <unistd.h>
 #endif
 
 Trie::Trie(TrieCharTransform *aTransform) : head(0) , transform(aTransform)
 {}
 
-extern "C" void *TrieCreate()
-{
-    return new Trie;
-}
-
 Trie::~Trie()
 {
     delete head;
     delete transform;
 }
 
-extern "C" void TrieDestroy(void *aTrie)
-{
-    delete (Trie *)aTrie;
-}
-
-extern "C" void *TrieFind(void *aTrie, char const *aString, size_t theLength)
-{
-    return ((Trie *)aTrie)->find(aString, theLength);
-}
-
 bool
 Trie::add(char const *aString, size_t theLength, void *privatedata)
 {
@@ -70,9 +52,3 @@ Trie::add(char const *aString, size_t theLength, void *privatedata)
 
     return head->add(aString, theLength, privatedata, transform);
 }
-
-extern "C" int TrieAdd(void *aTrie, char const *aString, size_t theLength, void *privatedata)
-{
-
-    return ((Trie *)aTrie)->add(aString, theLength, privatedata);
-}
diff --git a/lib/libTrie/Trie.cci b/lib/libTrie/Trie.cci
deleted file mode 100644 (file)
index 87aead8..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2002,2003 Robert Collins <rbtcollins@hotmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
- *
- */
-
-#ifdef __cplusplus
-#include "Trie.h"
-#include "TrieNode.h"
-
-void *
-Trie::find (char const *aString, size_t theLength)
-{
-    if (head)
-        return head->find (aString, theLength, transform, false);
-
-    return NULL;
-}
-
-void *
-Trie::findPrefix (char const *aString, size_t theLength)
-{
-    if (head)
-        return head->find (aString, theLength, transform, true);
-
-    return NULL;
-}
-
-#endif
index b5d32e4680473b5618734d2ff5a82e46ebf79b74..1346d6370e73a3837747a912f31b23effc048b1a 100644 (file)
 #ifndef   LIBTRIE_SQUID_H
 #define   LIBTRIE_SQUID_H
 
-/* This is the header for libTrie.
- * libTrie provides both C and C++
- * bindings. libtrie itself is written in C++.
- */
-
+#include "TrieNode.h"
 #if HAVE_SYS_TYPES_H
 #include <sys/types.h>
 #endif
 
-/* C bindings */
-#ifndef   __cplusplus
-
-/* TODO: provide parameterisation for C bindings */
-void *TrieCreate (void);
-void TrieDestroy (void *);
-void *TrieFind (void *, char const *, size_t);
-int TrieAdd (void *, char const *, size_t, void *);
-
-/* C++ bindings */
-#else
-
-/* MinGW needs NULL definition */
-#ifndef NULL
-#define NULL 0
-#endif
-
 class TrieCharTransform;
 
-class TrieNode;
-
 /* TODO: parameterize this to be more generic -
 * i.e. M-ary internal node sizes etc
 */
@@ -67,11 +44,11 @@ public:
     * If found, return the private data.
     * If not found, return NULL.
     */
-    _SQUID_INLINE_ void *find (char const *, size_t);
+    inline void *find (char const *, size_t);
     /* find any element of the trie in the buffer from the
     * beginning thereof
     */
-    _SQUID_INLINE_ void *findPrefix (char const *, size_t);
+    inline void *findPrefix (char const *, size_t);
 
     /* Add a string.
     * returns false if the string is already
@@ -87,10 +64,22 @@ private:
     TrieCharTransform *transform;
 };
 
-#endif /* __cplusplus */
+void *
+Trie::find (char const *aString, size_t theLength)
+{
+    if (head)
+        return head->find (aString, theLength, transform, false);
 
-#if _USE_INLINE_
-#include "Trie.cci"
-#endif
+    return NULL;
+}
+
+void *
+Trie::findPrefix (char const *aString, size_t theLength)
+{
+    if (head)
+        return head->find (aString, theLength, transform, true);
+
+    return NULL;
+}
 
 #endif /* LIBTRIE_SQUID_H */
index a641444697ec3028beef233ade34abee8940667c..c9ea136cdc03f9ac99e194306041980cda3e0471 100644 (file)
@@ -60,7 +60,3 @@ TrieNode::add(char const *aString, size_t theLength, void *privatedata, TrieChar
         return true;
     }
 }
-
-#if !_USE_INLINE_
-#include "TrieNode.cci"
-#endif
diff --git a/lib/libTrie/TrieNode.cci b/lib/libTrie/TrieNode.cci
deleted file mode 100644 (file)
index 882914e..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2002,2003 Robert Collins <rbtcollins@hotmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
- *
- */
-
-#ifdef __cplusplus
-#include "TrieCharTransform.h"
-#include "TrieNode.h"
-#if HAVE_UNISTD_H
-#include <unistd.h>
-#endif
-#include <ctype.h>
-
-/* recursive. TODO? make iterative */
-void *
-TrieNode::find (char const *aString, size_t theLength, TrieCharTransform *transform, bool const prefix) const
-{
-    if (theLength) {
-        int index = -1;
-        unsigned char pos = transform ? (*transform) (*aString) : *aString;
-
-        if (internal[pos])
-            index = pos;
-
-        if (index > -1) {
-            void *result;
-            result = internal[index]->find(aString + 1, theLength - 1, transform, prefix);
-
-            if (result)
-                return result;
-        }
-
-        if (prefix)
-            return _privateData;
-
-        return NULL;
-    } else {
-        /* terminal node */
-        return _privateData;
-    }
-}
-
-#endif
index dc978d25f5c40838ab83d7a8f1188f209997c2df..f1b7fabf9c4306620304e29b3f5aa3d3db621c3d 100644 (file)
 #ifndef   LIBTRIE_TRIENODE_H
 #define   LIBTRIE_TRIENODE_H
 
-/* This is an internal header for libTrie.
- * libTrie provides both C and C++
- * bindings.
- * libTrie itself is written in C++.
- * For C bindings see Trei.h
- */
-
-/* C bindings */
-#ifndef   __cplusplus
+#include "TrieCharTransform.h"
 
-/* C++ bindings */
-#else
 #include <sys/types.h>
 #include <utility>
 
-/* MinGW needs NULL definition */
-#ifndef NULL
-#define NULL 0
-#endif
-
 /* TODO: parameterize this to be more generic -
 * i.e. M-ary internal node sizes etc
 */
 
-class TrieCharTransform;
-
 class TrieNode
 {
 
@@ -59,15 +42,14 @@ public:
     * If found, return the private data.
     * If not found, return NULL.
     */
-    _SQUID_INLINE_ void *find (char const *, size_t, TrieCharTransform *, bool const prefix) const;
+    inline void *find (char const *, size_t, TrieCharTransform *, bool const prefix) const;
 
     /* Add a string.
     * returns false if the string is already
     * present or can't be added.
     */
 
-    bool add
-    (char const *, size_t, void *, TrieCharTransform *);
+    bool add (char const *, size_t, void *, TrieCharTransform *);
 
 private:
     /* 256-way Trie */
@@ -82,10 +64,32 @@ private:
     void *_privateData;
 };
 
-#endif /* __cplusplus */
-
-#if _USE_INLINE_
-#include "TrieNode.cci"
-#endif
-
+/* recursive. TODO? make iterative */
+void *
+TrieNode::find (char const *aString, size_t theLength, TrieCharTransform *transform, bool const prefix) const
+{
+    if (theLength) {
+        int index = -1;
+        unsigned char pos = transform ? (*transform) (*aString) : *aString;
+
+        if (internal[pos])
+            index = pos;
+
+        if (index > -1) {
+            void *result;
+            result = internal[index]->find(aString + 1, theLength - 1, transform, prefix);
+
+            if (result)
+                return result;
+        }
+
+        if (prefix)
+            return _privateData;
+
+        return NULL;
+    } else {
+        /* terminal node */
+        return _privateData;
+    }
+}
 #endif /* LIBTRIE_TRIENODE_H */
index df33eba011d2b48b0c0e16e1a8d3b6490cc44682..700ae41071e6bb766951495ef33a221ca068a56c 100644 (file)
@@ -2,14 +2,9 @@ include $(top_srcdir)/src/Common.am
 
 INCLUDES += -I$(top_srcdir)/include
 
-# TESTS = trie trie-c
 TESTS += trie
 
-# check_PROGRAMS = trie trie-c
 check_PROGRAMS += trie
 
 trie_SOURCES = trie.cc
-trie_LDADD = $(top_builddir)/lib/libTrie/libTrie.a
-
-#trie_c_SOURCES = trie-c.c
-#trie_c_LDADD = $(top_builddir)/lib/libTrie/libTrie.a -lm
+trie_LDADD = $(top_builddir)/lib/libTrie/libTrie.a
\ No newline at end of file
diff --git a/lib/libTrie/test/trie-c.c b/lib/libTrie/test/trie-c.c
deleted file mode 100644 (file)
index 39bd82f..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2002 Robert Collins <rbtcollins@hotmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
- *
- */
-
-#include "squid.h"
-#include "Trie.h"
-
-int
-main (int argc, char **argv)
-{
-    void *aTrie = TrieCreate();
-    if (!TrieAdd (aTrie, "User-Agent", 10, (void *)1)) {
-        fprintf(stderr,"Could not add User-Agent\n");
-        return 1;
-    }
-    if (TrieAdd (aTrie, "User-Agent", 10, (void *)2)) {
-        fprintf(stderr, "Could add duplicate User-Agent\n");
-        return 1;
-    }
-    if (TrieFind (aTrie, "User-Agent", 10) != (void *)1) {
-        fprintf(stderr, "Could not find User-Agent\n");
-        return 1;
-    }
-    TrieDestroy (aTrie);
-    return 0;
-}