From e85be13d3bb140f51e83301cbe92d2fca48d5c67 Mon Sep 17 00:00:00 2001 From: Andrea Mazzoleni Date: Fri, 28 Mar 2014 21:30:21 +0100 Subject: [PATCH] Updates to latest TommyDS library. --- tommyds/tommy.c | 39 ++++++++++++++++++++++++--------------- tommyds/tommyarrayblk.h | 5 +++-- tommyds/tommyarrayblkof.h | 2 +- tommyds/tommytypes.h | 3 ++- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/tommyds/tommy.c b/tommyds/tommy.c index 4b2cce3b..0bc511e2 100644 --- a/tommyds/tommy.c +++ b/tommyds/tommy.c @@ -1,32 +1,41 @@ /* - * Copyright (C) 2011 Andrea Mazzoleni + * Copyright 2010 Andrea Mazzoleni. All rights reserved. * - * 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 3 of the License, or - * (at your option) any later version. + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: * - * 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. + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY ANDREA MAZZOLENI AND CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL ANDREA MAZZOLENI OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. */ #include "cmdline/portable.h" -#include "cmdline/util.h" /* for safe_malloc */ +#include "cmdline/util.h" /* for malloc_nofail() */ /* redefine the malloc for tommy use */ #define tommy_malloc malloc_nofail #define tommy_free free -/* include tommy source */ -#include "tommylist.c" #include "tommyhash.c" -#include "tommyhashdyn.c" #include "tommyarray.c" #include "tommyarrayblk.c" #include "tommyarrayblkof.c" +#include "tommylist.c" +#include "tommyhashdyn.c" diff --git a/tommyds/tommyarrayblk.h b/tommyds/tommyarrayblk.h index 5dd57047..0730a244 100644 --- a/tommyds/tommyarrayblk.h +++ b/tommyds/tommyarrayblk.h @@ -31,7 +31,8 @@ * This array is able to grow dynamically upon request. * * The resize involve an allocation of a new array block, without reallocating - * the already allocated memory, and then not increasing the heap fragmentation. + * the already allocated memory, and then not increasing the heap fragmentation, + * and minimize the space occupation. * This means that the address of the allocated blocks never change. * * Allocated blocks are always of the same fixed size of 64 Ki pointers. @@ -88,7 +89,7 @@ tommy_inline void** tommy_arrayblk_ref(tommy_arrayblk* array, unsigned pos) assert(pos < array->size); - ptr = tommy_array_get(&array->block, pos / TOMMY_ARRAYBLK_SIZE); + ptr = tommy_cast(void**, tommy_array_get(&array->block, pos / TOMMY_ARRAYBLK_SIZE)); return &ptr[pos % TOMMY_ARRAYBLK_SIZE]; } diff --git a/tommyds/tommyarrayblkof.h b/tommyds/tommyarrayblkof.h index f3fa0c8a..3d020943 100644 --- a/tommyds/tommyarrayblkof.h +++ b/tommyds/tommyarrayblkof.h @@ -90,7 +90,7 @@ tommy_inline void* tommy_arrayblkof_ref(tommy_arrayblkof* array, unsigned pos) assert(pos < array->size); - base = tommy_array_get(&array->block, pos / TOMMY_ARRAYBLKOF_SIZE); + base = tommy_cast(unsigned char*, tommy_array_get(&array->block, pos / TOMMY_ARRAYBLKOF_SIZE)); return base + (pos % TOMMY_ARRAYBLKOF_SIZE) * array->element_size; } diff --git a/tommyds/tommytypes.h b/tommyds/tommytypes.h index 9f66e6b8..887c3579 100644 --- a/tommyds/tommytypes.h +++ b/tommyds/tommytypes.h @@ -271,6 +271,7 @@ typedef void tommy_foreach_arg_func(void* arg, void* obj); #if defined(_MSC_VER) && !defined(__cplusplus) #include #pragma intrinsic(_BitScanReverse) +#pragma intrinsic(_BitScanForward) #endif /** \internal @@ -337,7 +338,7 @@ tommy_inline unsigned tommy_ilog2_u32(tommy_uint32_t value) * * If no bit is set, the result is undefined. * \param value Value to scan. 0 is not allowed. - * \return The index of the least significan bit set. + * \return The index of the least significant bit set. */ tommy_inline unsigned tommy_ctz_u32(tommy_uint32_t value) {