/* We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list.  */
SWIGRUNTIME swig_type_info* SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name)
/* We start searching at module start, and finish searching when start == end. Note: if start == end at the beginning of the function, we go all the way around the circular list.  */
SWIGRUNTIME swig_type_info* SWIG_TypeQueryModule(swig_module_info *start, swig_module_info *end, const char *name)
{
  swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
  if (ret) {
    return ret;
  } else {
    swig_module_info *iter = start;
    do {
      register size_t i = 0;
      for (; i < iter->size; ++i) {
        if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
          return iter->types[i];
      }
      iter = iter->next;
    } while (iter != end);
  }
  return 0;
}