# Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: kinkie@squid-cache.org-20140603115956-q46uuszw534vp55i # target_branch: http://bzr.squid-cache.org/bzr/squid3/trunk/ # testament_sha1: 3f26b6e3a368c2aadd2b82a5c5eaf265086f8ca4 # timestamp: 2014-06-03 16:25:09 +0200 # base_revision_id: squid3@treenet.co.nz-20140603085229-\ # j3lxeh8daub7fe0g # # Begin patch === modified file 'lib/libTrie/Makefile.am' --- lib/libTrie/Makefile.am 2013-06-11 13:13:23 +0000 +++ lib/libTrie/Makefile.am 2014-06-03 10:49:08 +0000 @@ -9,9 +9,7 @@ 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 === modified file 'lib/libTrie/Trie.cc' --- lib/libTrie/Trie.cc 2013-10-25 00:13:46 +0000 +++ lib/libTrie/Trie.cc 2014-06-03 10:49:08 +0000 @@ -19,40 +19,22 @@ #include "squid.h" #include "Trie.h" +#include "TrieCharTransform.h" +#include "TrieNode.h" + #if HAVE_UNISTD_H #include #endif -#include "TrieCharTransform.h" -#include "TrieNode.h" - -#if !_USE_INLINE_ -#include "Trie.cci" -#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 @@ 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); -} === removed file 'lib/libTrie/Trie.cci' --- lib/libTrie/Trie.cci 2013-06-11 13:13:23 +0000 +++ lib/libTrie/Trie.cci 1970-01-01 00:00:00 +0000 @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2002,2003 Robert Collins - * - * 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 === modified file 'lib/libTrie/Trie.h' --- lib/libTrie/Trie.h 2013-06-11 13:13:23 +0000 +++ lib/libTrie/Trie.h 2014-06-03 10:49:08 +0000 @@ -20,36 +20,13 @@ #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 #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 @@ * 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 @@ TrieCharTransform *transform; }; -#endif /* __cplusplus */ - -#if _USE_INLINE_ -#include "Trie.cci" -#endif +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 /* LIBTRIE_SQUID_H */ === modified file 'lib/libTrie/TrieNode.cc' --- lib/libTrie/TrieNode.cc 2013-10-25 00:13:46 +0000 +++ lib/libTrie/TrieNode.cc 2014-06-03 11:59:56 +0000 @@ -60,7 +60,3 @@ return true; } } - -#if !_USE_INLINE_ -#include "TrieNode.cci" -#endif === removed file 'lib/libTrie/TrieNode.cci' --- lib/libTrie/TrieNode.cci 2013-10-25 00:13:46 +0000 +++ lib/libTrie/TrieNode.cci 1970-01-01 00:00:00 +0000 @@ -1,57 +0,0 @@ -/* - * Copyright (c) 2002,2003 Robert Collins - * - * 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 -#endif -#include - -/* 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 === modified file 'lib/libTrie/TrieNode.h' --- lib/libTrie/TrieNode.h 2013-06-11 13:13:23 +0000 +++ lib/libTrie/TrieNode.h 2014-06-03 10:49:08 +0000 @@ -20,32 +20,15 @@ #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 - -/* C++ bindings */ -#else +#include "TrieCharTransform.h" + #include #include -/* 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 @@ * 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 @@ 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 */ === modified file 'lib/libTrie/test/Makefile.am' --- lib/libTrie/test/Makefile.am 2013-06-11 13:13:23 +0000 +++ lib/libTrie/test/Makefile.am 2014-06-03 10:49:08 +0000 @@ -2,14 +2,9 @@ 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 === removed file 'lib/libTrie/test/trie-c.c' --- lib/libTrie/test/trie-c.c 2014-02-21 10:46:19 +0000 +++ lib/libTrie/test/trie-c.c 1970-01-01 00:00:00 +0000 @@ -1,41 +0,0 @@ -/* - * Copyright (c) 2002 Robert Collins - * - * 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; -} # Begin bundle IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWZhSrLEABjXfgERUXH////8H 3gq////6YAn/GjQAAA0oAAAAoAAg0qepkaNNGTQGQAGRoZDJkNABoAEkoU9oU20U3oo9QNDQAAAA 0AAAcZMmjEMTTAQMCaYIwTE000AGEOMmTRiGJpgIGBNMEYJiaaaADCHGTJoxDE0wEDAmmCMExNNN ABhBJJoEAIATImJoGKeqm/UNU/VMJie1Rk/VH6akkhTOYfhjhz373b2F9WonQ1T9v8HVY1v9S/n0 aPZbl+EyyMR4Jm7OREeEGi1cNVe1iOuAQvY0f/iynRYASpAubSDJ+6KCDITDsM90iMZ6noSvcnOt I0KOlmkyLx8QgXIQiUEsQa7tjEvxkzd4PZRL1ZqQsGXjEI/9ftzwl9usX1FyEwzDMwwMwmYF/nvS OvnDKZqPP0fsaPY7NB+zwsVpKN0+1geMe+JZVmiTpKdkLWla0HaxgqytjVweyEBptKUAmy6XHz6Z t726t7Aok44RhEhqOElKsRSAZg+6CTi+hGYET1LaBymG4CnJmBNSpj5XzAdJ4AoRTEmRcGh4Bw6z tY7ex4R7NVPazQ9gdrTOCOHb543X8tYitYB4jMMgXiEFJkB+kD/zw457DX4yH2dfIjXo2C9BkHzY BmIxsudi5QC6BGDRlNWociHIJOUF+EySNgg4GaA1Gpkku0sOivOIVF7SAgyt65OhaFihmzML4pkk thy/SgssJohCHc3/vYG1scu/vuQEGRrZHmyZhLczU5j07yog4sSSBhWjCFIjQke22ggirhAySPKh bVAXueucbxCsChEkUQEVAkImj2GBiWVHWJTGJqIjlg4IjDMEzWMF9sYvEhn6OfEkIPVkgn4hr3H8 6loa7wzEFop1LDWTso+utNWl8XKlRWBEIGuN+ZEQrxDo0Ykf/GRAe0QbmE11xnNWXGZvf5W7WDdm LTvyP3C+owwcijZg4xacdUPuIIkiYgxQHHjXYEGW0KQZoWzi8JO1hqEDDABEoPr5THMjUYlCJrsX IeOQYO5OBrOrHgRwvqEBnzRWRmYTvVuhGmvNa0jA1TNDR7jHsDXbkrmK0eyE5ycHEE8BBQGUBhBA ZJGybhKOThqLBBO1WVmVJi5WbGpts1YxjIZRJwLiw0iWZDBW2Z91heEjEye+pdElkwkGt3dFMx3p sLHLKMOWbxRgSIGNxcQwQEgggmBGpnA2mUIpaUwsubKOFjvbAlQ30lOBgWrmtxIQfgWZMvJpbylj bcRB1i0FQzNkqDC1F/AnMxbWbSuYzkdQpCDAzK0g06wtmeUCoqKicQomCWLHGjKYFd4phaXsZ8CZ BUail5XRhrtC4mWFwtQUoOxoZWFo63BMxHOobUMsGL2vwxH68y7aZldCOhdfqhrMREjIuNxMkL+d ggriqaosjFRBASOe+Mc5QvuIi6dUSlk5XcYE9ht169pd8FmYbUB+aAuxpLJ3WxpRQFpuNGrr1D2G 43ErxbyZY4xUlTA3DbjMYhVVL3yKK9Ym6kVoQIBtUCJvGqkaEAJkBDFBogWqQyROgx3Hd47n+TKH 1viQPgBqSc1CkMJg8EcWZC6z0FS86KH+LA8xkC4r6QMUzAwmZmPrSCGI5/WyS5kV+/3UUsyxQRZ9 9RYbgJ+aPfYNmRTig/2XtOf0x/LqOiHGZJXE/GIKKXl393yMTprJWADyPJfEl7vCJ71Ip8T1EFTm YlDE0Pp+oMNQ1n0uNZqSS4SDe2JibzrSPh9hg6l68OYnFsKBeyRM5pZsLIQfmgLl4HzIFdF9EB+t 3VuPZ04m04+9vfDpVdp+FW0cvTnefpZIcsvLSAxytD/uBuCwvR5+KAKi6Gv5wMtCI0TQ2uZTND80 ktxTiQPYdwG8sOEDuMWNnwS4a0ktg0SSPAuXAokYxCQZMUAaKGqDpJR9zGRwqVc3nyzsURjcXoIm +0RZE3HXpYJRMSBktZpxxMjy4B2oNBoUvC0stLPcBLChgWujswF/vRcMWqibTE1GGQyY+CSTidzR fRAY1+e81wgd0OZMh20cgx0J0OBEY6DnwMsm8hOKCEsyTK4YgzocfUk4tQskiqV5JF3PmHx3cOkM Dd2FhU3F8ypnsYmb9IEzFbzA6hOLZ6LUW3WGOkDjD9hw7959x1+qVgYgcBMI5CCG6HUsmXea+JYd ZJi0NigQBFoUJCUSaWvrOJ7ezgkHUdiycwJz+G48pVZWkjlge4wJF5NYgXGQERB9hOL4CuS6z1NC EISExw5JE040YEUuKEmY79BmSGwiBx+QmEwcSxNcAMB9UMklJLyMDCRxNEB0Kjm0QNYrjTgUQQyP IDyEB5n5CUCBJJfJCTCVzBceh/yv8w7gN9uiBUDd4fYIRSwSGIW8fxt2rhoBlahLNaXWnaZpOQBT 7QJ2+QKSx0BMhV5S5jP40AxppYEJdEjUH9TyEyIAxAaG09ip2gYgsSADntQLa2hItUbkYKnAuO08 EBfJwtNEeK3hWZBDAx1GGOLNFH9yYthqOQxKB4lxmFCgHBAVqBMO4GAdzAVAdIZhI/SRYnEMlzIA BNwmkbJpEogMMJmETCAviuO1H8UBy/kwyYbHuAuWwehaC9SCRqUe5hkjBJLAA9XEyttHYuE+vcMJ hEQHJxPjs9zr2lTyEG4WYdqA4nqHgCDqSB0HCGiAZOjRI+5Yf0W0TE83X7m0LBB6bJ+v5ehKC++8 8ygGiSWPHJGYwzDITMwlkSAJcgGI9KTJSJzYWg3hF0hyPAiegMdRMMvBI6QEzGAn5gu5xakrzyYT MfuklVF5YIZmIJDA2gjIDDGblydgg5RQiSIi/gCgRJHcRIlxljU84ArTYlBdbKpt1mgPLJItFvr1 jLYvYj8smbnoO7N+ALa5QETNwGS47ET6gQYZmgdjbwPijmL6CyDImDHEjE1YK1Xww9gtwVqAnHJg axMAWCsEHSgKU5yFhEDOKhPT1ZEtY/xdyRThQkJhSrLE