mirror of
https://github.com/amadvance/snapraid.git
synced 2026-10-26 10:51:54 -04:00
Updates to latest TommyDS library.
This commit is contained in:
parent
44ef039a13
commit
e85be13d3b
4 changed files with 30 additions and 19 deletions
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||
* 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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -271,6 +271,7 @@ typedef void tommy_foreach_arg_func(void* arg, void* obj);
|
|||
#if defined(_MSC_VER) && !defined(__cplusplus)
|
||||
#include <intrin.h>
|
||||
#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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue