Alien-Judy
view release on metacpan or search on metacpan
src/judy-1.0.5/src/JudyCommon/JudyCascade.c view on Meta::CPAN
// Copyright (C) 2000 - 2002 Hewlett-Packard Company
//
// This program is free software; you can redistribute it and/or modify it
// under the term of the GNU Lesser 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 Lesser General Public License
// for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this program; if not, write to the Free Software Foundation,
// Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// _________________
// @(#) $Revision: 4.38 $ $Source: /judy/src/JudyCommon/JudyCascade.c $
#ifdef JUDY1
#include "Judy1.h"
#else
#include "JudyL.h"
#endif
#include "JudyPrivate1L.h"
extern int j__udyCreateBranchL(Pjp_t, Pjp_t, uint8_t *, Word_t, Pvoid_t);
extern int j__udyCreateBranchB(Pjp_t, Pjp_t, uint8_t *, Word_t, Pvoid_t);
DBGCODE(extern void JudyCheckSorted(Pjll_t Pjll, Word_t Pop1, long IndexSize);)
static const jbb_t StageJBBZero; // zeroed versions of namesake struct.
// TBD: There are multiple copies of (some of) these CopyWto3, Copy3toW,
// CopyWto7 and Copy7toW functions in Judy1Cascade.c, JudyLCascade.c, and
// JudyDecascade.c. These static functions should probably be moved to a
// common place, made macros, or something to avoid having four copies.
// ****************************************************************************
// __ J U D Y C O P Y X T O W
FUNCTION static void j__udyCopy3toW(
PWord_t PDest,
uint8_t * PSrc,
Word_t LeafIndexes)
{
do
{
JU_COPY3_PINDEX_TO_LONG(*PDest, PSrc);
PSrc += 3;
PDest += 1;
} while(--LeafIndexes);
} //j__udyCopy3toW()
#ifdef JU_64BIT
FUNCTION static void j__udyCopy4toW(
PWord_t PDest,
uint32_t * PSrc,
Word_t LeafIndexes)
{
do { *PDest++ = *PSrc++;
} while(--LeafIndexes);
} // j__udyCopy4toW()
FUNCTION static void j__udyCopy5toW(
PWord_t PDest,
uint8_t * PSrc,
Word_t LeafIndexes)
{
do
{
JU_COPY5_PINDEX_TO_LONG(*PDest, PSrc);
PSrc += 5;
PDest += 1;
} while(--LeafIndexes);
} // j__udyCopy5toW()
FUNCTION static void j__udyCopy6toW(
PWord_t PDest,
uint8_t * PSrc,
Word_t LeafIndexes)
{
do
{
JU_COPY6_PINDEX_TO_LONG(*PDest, PSrc);
( run in 0.616 second using v1.01-cache-2.11-cpan-e1769b4cff6 )