You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by am...@apache.org on 2017/02/26 00:04:17 UTC

[trafficserver] 01/01: PR #1209: Remove unused classes from Map.h

This is an automated email from the ASF dual-hosted git repository.

amc pushed a commit to branch amc-map-h-cleanup
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

commit ed189a16d109dbad1dc143be51a396ef9fe20832
Author: Alan M. Carroll <so...@yahoo-inc.com>
AuthorDate: Mon Nov 7 15:20:47 2016 -0600

    PR #1209: Remove unused classes from Map.h
---
 lib/ts/Map.h       | 538 -----------------------------------------------------
 lib/ts/test_Map.cc |  50 -----
 2 files changed, 588 deletions(-)

diff --git a/lib/ts/Map.h b/lib/ts/Map.h
index e142591..d4ade96 100644
--- a/lib/ts/Map.h
+++ b/lib/ts/Map.h
@@ -570,544 +570,6 @@ HashMap<K, AHashFns, C, A>::get_values(Vec<C> &values)
   Map<K, C, A>::get_values(values);
 }
 
-template <class C, class AHashFns, class A>
-C
-ChainHash<C, AHashFns, A>::put(C c)
-{
-  uintptr_t h = AHashFns::hash(c);
-  List<C, A> *l;
-  MapElem<uintptr_t, List<C, A>> e(h, (C)0);
-  MapElem<uintptr_t, List<C, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else {
-    l = &Map<uintptr_t, List<C, A>, A>::put(h, c)->value;
-    return l->head->car;
-  }
-  forc_List(ChainCons, x, *l) if (AHashFns::equal(c, x->car)) return x->car;
-  l->push(c);
-  return (C)0;
-}
-
-template <class C, class AHashFns, class A>
-C
-ChainHash<C, AHashFns, A>::get(C c)
-{
-  uintptr_t h = AHashFns::hash(c);
-  List<C> empty;
-  MapElem<uintptr_t, List<C, A>> e(h, empty);
-  MapElem<uintptr_t, List<C, A>> *x = this->set_in(e);
-  if (!x)
-    return 0;
-  List<C> *l = &x->value;
-  forc_List(ChainCons, x, *l) if (AHashFns::equal(c, x->car)) return x->car;
-  return 0;
-}
-
-template <class C, class AHashFns, class A>
-C
-ChainHash<C, AHashFns, A>::put_bag(C c)
-{
-  uintptr_t h = AHashFns::hash(c);
-  List<C, A> *l;
-  MapElem<uintptr_t, List<C, A>> e(h, (C)0);
-  MapElem<uintptr_t, List<C, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else {
-    l = &Map<uintptr_t, List<C, A>>::put(h, c)->value;
-    return l->head->car;
-  }
-  l->push(c);
-  return (C)0;
-}
-
-template <class C, class AHashFns, class A>
-int
-ChainHash<C, AHashFns, A>::get_bag(C c, Vec<C> &v)
-{
-  uintptr_t h = AHashFns::hash(c);
-  List<C, A> empty;
-  MapElem<uintptr_t, List<C, A>> e(h, empty);
-  MapElem<uintptr_t, List<C, A>> *x = this->set_in(e);
-  if (!x)
-    return 0;
-  List<C, A> *l = &x->value;
-  forc_List(C, x, *l) if (AHashFns::equal(c, x->car)) v.add(x->car);
-  return v.n;
-}
-
-template <class C, class AHashFns, class A>
-void
-ChainHash<C, AHashFns, A>::get_elements(Vec<C> &elements)
-{
-  for (int i = 0; i < n; i++) {
-    List<C, A> *l = &v[i].value;
-    forc_List(C, x, *l) elements.add(x);
-  }
-}
-
-template <class C, class AHashFns, class A>
-int
-ChainHash<C, AHashFns, A>::del(C c)
-{
-  uintptr_t h = AHashFns::hash(c);
-  List<C> *l;
-  MapElem<uintptr_t, List<C, A>> e(h, (C)0);
-  MapElem<uintptr_t, List<C, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else
-    return 0;
-  ConsCell<C> *last = 0;
-  forc_List(ConsCell<C>, x, *l)
-  {
-    if (AHashFns::equal(c, x->car)) {
-      if (!last)
-        l->head = x->cdr;
-      else
-        last->cdr = x->cdr;
-      A::free(x);
-      return 1;
-    }
-    last = x;
-  }
-  return 0;
-}
-
-template <class K, class AHashFns, class C, class A>
-MapElem<K, C> *
-ChainHashMap<K, AHashFns, C, A>::put(K akey, C avalue)
-{
-  uintptr_t h = AHashFns::hash(akey);
-  List<MapElem<K, C>, A> empty;
-  List<MapElem<K, C>, A> *l;
-  MapElem<K, C> c(akey, avalue);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> e(h, empty);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else {
-    l = &Map<uintptr_t, List<MapElem<K, C>, A>, A>::put(h, c)->value;
-    return &l->head->car;
-  }
-  for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-    if (AHashFns::equal(akey, p->car.key)) {
-      p->car.value = avalue;
-      return &p->car;
-    }
-  l->push(c);
-  return 0;
-}
-
-template <class K, class AHashFns, class C, class A>
-C
-ChainHashMap<K, AHashFns, C, A>::get(K akey)
-{
-  uintptr_t h = AHashFns::hash(akey);
-  List<MapElem<K, C>, A> empty;
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> e(h, empty);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> *x = this->set_in(e);
-  if (!x)
-    return 0;
-  List<MapElem<K, C>, A> *l = &x->value;
-  if (l->head)
-    for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-      if (AHashFns::equal(akey, p->car.key))
-        return p->car.value;
-  return 0;
-}
-
-template <class K, class AHashFns, class C, class A>
-MapElem<K, C> *
-ChainHashMap<K, AHashFns, C, A>::put_bag(K akey, C avalue)
-{
-  uintptr_t h = AHashFns::hash(akey);
-  List<MapElem<K, C>, A> empty;
-  List<MapElem<K, C>, A> *l;
-  MapElem<K, C> c(akey, avalue);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> e(h, empty);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else {
-    l = &Map<uintptr_t, List<MapElem<K, C>, A>, A>::put(h, c)->value;
-    return &l->head->car;
-  }
-  for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-    if (AHashFns::equal(akey, p->car.key) && AHashFns::equal_value(avalue, p->car.value))
-      return &p->car;
-  l->push(c);
-  return 0;
-}
-
-template <class K, class AHashFns, class C, class A>
-int
-ChainHashMap<K, AHashFns, C, A>::get_bag(K akey, Vec<C> &v)
-{
-  uintptr_t h = AHashFns::hash(akey);
-  List<MapElem<K, C>, A> empty;
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> e(h, empty);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> *x = this->set_in(e);
-  if (!x)
-    return 0;
-  List<MapElem<K, C>, A> *l = &x->value;
-  for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-    if (AHashFns::equal(akey, p->car.key))
-      return v.add(x->car);
-  return v.n;
-}
-
-template <class K, class AHashFns, class C, class A>
-int
-ChainHashMap<K, AHashFns, C, A>::del(K akey)
-{
-  uintptr_t h = AHashFns::hash(akey);
-  List<MapElem<K, C>, A> empty;
-  List<MapElem<K, C>, A> *l;
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> e(h, empty);
-  MapElem<uintptr_t, List<MapElem<K, C>, A>> *x = this->set_in(e);
-  if (x)
-    l = &x->value;
-  else
-    return 0;
-  ConsCell<MapElem<K, C>, A> *last = 0;
-  for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr) {
-    if (AHashFns::equal(akey, p->car.key)) {
-      if (!last)
-        l->head = p->cdr;
-      else
-        last->cdr = p->cdr;
-      return 1;
-    }
-    last = p;
-  }
-  return 0;
-}
-
-template <class K, class AHashFns, class C, class A>
-void
-ChainHashMap<K, AHashFns, C, A>::get_keys(Vec<K> &keys)
-{
-  for (size_t i = 0; i < n; i++) {
-    List<MapElem<K, C>> *l = &v[i].value;
-    if (l->head)
-      for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-        keys.add(p->car.key);
-  }
-}
-
-template <class K, class AHashFns, class C, class A>
-void
-ChainHashMap<K, AHashFns, C, A>::get_values(Vec<C> &values)
-{
-  for (size_t i = 0; i < n; i++) {
-    List<MapElem<K, C>, A> *l = &v[i].value;
-    if (l->head)
-      for (ConsCell<MapElem<K, C>, A> *p = l->head; p; p = p->cdr)
-        values.add(p->car.value);
-  }
-}
-
-template <class F, class A>
-inline cchar *
-StringChainHash<F, A>::canonicalize(cchar *s, cchar *e)
-{
-  uintptr_t h = 0;
-  cchar *a    = s;
-  // 31 changed to 27, to avoid prime2 in vec.cpp
-  if (e)
-    while (a != e)
-      h = h * 27 + (unsigned char)*a++;
-  else
-    while (*a)
-      h = h * 27 + (unsigned char)*a++;
-  MapElem<uintptr_t, List<cchar *, A>> me(h, (char *)0);
-  MapElem<uintptr_t, List<cchar *, A>> *x = this->set_in(me);
-  if (x) {
-    List<cchar *, A> *l = &x->value;
-    typedef ConsCell<cchar *, A> TT;
-    forc_List(TT, x, *l)
-    {
-      a        = s;
-      cchar *b = x->car;
-      while (1) {
-        if (!*b) {
-          if (a == e)
-            return x->car;
-          break;
-        }
-        if (a >= e || *a != *b)
-          break;
-        a++;
-        b++;
-      }
-    }
-  }
-  s         = _dupstr<A>(s, e);
-  cchar *ss = ChainHash<cchar *, F, A>::put(s);
-  if (ss)
-    return ss;
-  return s;
-}
-
-template <class K, class C, class A>
-inline C
-Env<K, C, A>::get(K akey)
-{
-  MapElem<K, List<C, A> *> e(akey, 0);
-  MapElem<K, List<C, A> *> *x = store.set_in(e);
-  if (x)
-    return x->value->first();
-  return (C)0;
-}
-
-template <class K, class C, class A>
-inline List<C, A> *
-Env<K, C, A>::get_bucket(K akey)
-{
-  List<C, A> *bucket = store.get(akey);
-  if (bucket)
-    return bucket;
-  bucket = new List<C>();
-  store.put(akey, bucket);
-  return bucket;
-}
-
-template <class K, class C, class A>
-inline void
-Env<K, C, A>::put(K akey, C avalue)
-{
-  scope.head->car.push(akey);
-  get_bucket(akey)->push(avalue);
-}
-
-template <class K, class C, class A>
-inline void
-Env<K, C, A>::push()
-{
-  scope.push();
-}
-
-template <class K, class C, class A>
-inline void
-Env<K, C, A>::pop()
-{
-  forc_List(EnvCons, e, scope.first()) get_bucket(e->car)->pop();
-}
-
-template <class C, class AHashFns, int N, class A> inline NBlockHash<C, AHashFns, N, A>::NBlockHash() : n(1), i(0)
-{
-  memset(&e[0], 0, sizeof(e));
-  v = e;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C *
-NBlockHash<C, AHashFns, N, A>::first()
-{
-  return &v[0];
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C *
-NBlockHash<C, AHashFns, N, A>::last()
-{
-  return &v[n * N];
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C
-NBlockHash<C, AHashFns, N, A>::put(C c)
-{
-  int a;
-  uintptr_t h = AHashFns::hash(c);
-  C *x        = &v[(h % n) * N];
-  for (a = 0; a < N; a++) {
-    if (!x[a])
-      break;
-    if (AHashFns::equal(c, x[a]))
-      return x[a];
-  }
-  if (a < N) {
-    x[a] = c;
-    return (C)0;
-  }
-  C *vv = first(), *ve = last();
-  C *old_v = v;
-  i        = i + 1;
-  size(i);
-  for (; vv < ve; vv++)
-    if (*vv)
-      put(*vv);
-  if (old_v != &e[0])
-    A::free(old_v);
-  return put(c);
-}
-
-template <class C, class AHashFns, int N, class A>
-inline void
-NBlockHash<C, AHashFns, N, A>::size(int p2)
-{
-  n = prime2[p2];
-  v = (C *)A::alloc(n * sizeof(C) * N);
-  memset(v, 0, n * sizeof(C) * N);
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C
-NBlockHash<C, AHashFns, N, A>::get(C c)
-{
-  if (!n)
-    return (C)0;
-  uintptr_t h = AHashFns::hash(c);
-  C *x        = &v[(h % n) * N];
-  for (int a = 0; a < N; a++) {
-    if (!x[a])
-      return (C)0;
-    if (AHashFns::equal(c, x[a]))
-      return x[a];
-  }
-  return (C)0;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C *
-NBlockHash<C, AHashFns, N, A>::assoc_get(C *c)
-{
-  if (!n)
-    return (C *)0;
-  uintptr_t h = AHashFns::hash(*c);
-  C *x        = &v[(h % n) * N];
-  int a       = 0;
-  if (c >= x && c < x + N)
-    a = c - x + 1;
-  for (; a < N; a++) {
-    if (!x[a])
-      return (C *)0;
-    if (AHashFns::equal(*c, x[a]))
-      return &x[a];
-  }
-  return (C *)0;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline C *
-NBlockHash<C, AHashFns, N, A>::assoc_put(C *c)
-{
-  int a;
-  uintptr_t h = AHashFns::hash(*c);
-  C *x        = &v[(h % n) * N];
-  for (a = 0; a < N; a++) {
-    if (!x[a])
-      break;
-  }
-  if (a < N) {
-    x[a] = *c;
-    return &x[a];
-  }
-  x[i % N] = *c;
-  i++;
-  return &x[i % N];
-}
-
-template <class C, class AHashFns, int N, class A>
-inline int
-NBlockHash<C, AHashFns, N, A>::del(C c)
-{
-  int a, b;
-  if (!n)
-    return 0;
-  uintptr_t h = AHashFns::hash(c);
-  C *x        = &v[(h % n) * N];
-  for (a = 0; a < N; a++) {
-    if (!x[a])
-      return 0;
-    if (AHashFns::equal(c, x[a])) {
-      if (a < N - 1) {
-        for (b = a + 1; b < N; b++) {
-          if (!x[b])
-            break;
-        }
-        if (b != a + 1)
-          x[a]   = x[b - 1];
-        x[b - 1] = (C)0;
-        return 1;
-      } else {
-        x[N - 1] = (C)0;
-        return 1;
-      }
-    }
-  }
-  return 0;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline void
-NBlockHash<C, AHashFns, N, A>::clear()
-{
-  if (v && v != e)
-    A::free(v);
-  v = e;
-  n = 1;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline void
-NBlockHash<C, AHashFns, N, A>::reset()
-{
-  if (v)
-    memset(v, 0, n * N * sizeof(C));
-}
-
-template <class C, class AHashFns, int N, class A>
-inline int
-NBlockHash<C, AHashFns, N, A>::count()
-{
-  int nelements = 0;
-  C *l          = last();
-  for (C *xx = first(); xx < l; xx++)
-    if (*xx)
-      nelements++;
-  return nelements;
-}
-
-template <class C, class AHashFns, int N, class A>
-inline void
-NBlockHash<C, AHashFns, N, A>::copy(const NBlockHash<C, AHashFns, N, A> &hh)
-{
-  clear();
-  n = hh.n;
-  i = hh.i;
-  if (hh.v == &hh.e[0]) {
-    memcpy(e, &hh.e[0], sizeof(e));
-    v = e;
-  } else {
-    if (hh.v) {
-      v = (C *)A::alloc(n * sizeof(C) * N);
-      memcpy(v, hh.v, n * sizeof(C) * N);
-    } else
-      v = 0;
-  }
-}
-
-template <class C, class AHashFns, int N, class A>
-inline void
-NBlockHash<C, AHashFns, N, A>::move(NBlockHash<C, AHashFns, N, A> &hh)
-{
-  clear();
-  n = hh.n;
-  i = hh.i;
-  v = hh.v;
-  if (hh.v == &hh.e[0]) {
-    memcpy(e, &hh.e[0], sizeof(e));
-    v = e;
-  }
-  hh.clear();
-}
-
-void test_map();
-
 /* ---------------------------------------------------------------------------------------------- */
 /** A hash map usable by ATS core.
 
diff --git a/lib/ts/test_Map.cc b/lib/ts/test_Map.cc
index 4ec0713..0e36c07 100644
--- a/lib/ts/test_Map.cc
+++ b/lib/ts/test_Map.cc
@@ -145,28 +145,7 @@ main(int /* argc ATS_UNUSED */, char ** /*argv ATS_UNUSED */)
             }
             */
 
-  StringChainHash<> h;
   cchar *hi = "hi", *ho = "ho", *hum = "hum", *hhi = "hhi";
-  hhi++;
-  h.put(hi);
-  h.put(ho);
-  ink_assert(h.put(hum) == hum);
-  ink_assert(h.put(hhi) == hi);
-  ink_assert(h.get(hhi) == hi && h.get(hi) == hi && h.get(ho) == ho);
-  ink_assert(h.get("he") == nullptr && h.get("hee") == nullptr);
-  h.del(ho);
-  ink_assert(h.get(ho) == nullptr);
-
-  StringBlockHash hh;
-  hh.put(hi);
-  hh.put(ho);
-  ink_assert(hh.put(hum) == nullptr);
-  ink_assert(hh.put(hhi) == hi);
-  ink_assert(hh.get(hhi) == hi && hh.get(hi) == hi && hh.get(ho) == ho);
-  ink_assert(hh.get("he") == nullptr && hh.get("hee") == nullptr);
-  hh.del(hi);
-  ink_assert(hh.get(hhi) == nullptr);
-  ink_assert(hh.get(hi) == nullptr);
 
   HashMap<cchar *, StringHashFns, int> sh;
   sh.put(hi, 1);
@@ -188,35 +167,6 @@ main(int /* argc ATS_UNUSED */, char ** /*argv ATS_UNUSED */)
   ink_assert(sh.get("af") == 10);
   ink_assert(sh.get("ac") == 7);
 
-  ChainHashMap<cchar *, StringHashFns, int> ssh;
-  ssh.put(hi, 1);
-  ssh.put(ho, 2);
-  ssh.put(hum, 3);
-  ssh.put(hhi, 4);
-  ink_assert(ssh.get(hi) == 4);
-  ink_assert(ssh.get(ho) == 2);
-  ink_assert(ssh.get(hum) == 3);
-  ssh.put("aa", 5);
-  ssh.put("ab", 6);
-  ssh.put("ac", 7);
-  ssh.put("ad", 8);
-  ssh.put("ae", 9);
-  ssh.put("af", 10);
-  ink_assert(ssh.get(hi) == 4);
-  ink_assert(ssh.get(ho) == 2);
-  ink_assert(ssh.get(hum) == 3);
-  ink_assert(ssh.get("af") == 10);
-  ink_assert(ssh.get("ac") == 7);
-  ssh.del(ho);
-  ink_assert(ssh.get(ho) == 0);
-
-  Vec<int> ints;
-  ssh.get_values(ints);
-  ink_assert(ints.n == 8);
-  Vec<cchar *> chars;
-  ssh.get_keys(chars);
-  ink_assert(chars.n == 8);
-
   test_TSHashTable();
 
   printf("test_Map PASSED\n");

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.