Alien-Judy
view release on metacpan or search on metacpan
src/judy-1.0.5/src/JudyCommon/JudyGet.c view on Meta::CPAN
// Note: Need ? if (JU_DCDNOTMATCHINDEX(Index, Pjp, 1)) break;
case cJ1_JPFULLPOPU1m15:
if (Pjp->jp_1Index[14] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m14:
if (Pjp->jp_1Index[13] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m13:
if (Pjp->jp_1Index[12] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m12:
if (Pjp->jp_1Index[11] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m11:
if (Pjp->jp_1Index[10] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m10:
if (Pjp->jp_1Index[9] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m9:
if (Pjp->jp_1Index[8] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m8:
if (Pjp->jp_1Index[7] == (uint8_t)Index) break;
#endif
case cJ1_JPFULLPOPU1m7:
if (Pjp->jp_1Index[6] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m6:
if (Pjp->jp_1Index[5] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m5:
if (Pjp->jp_1Index[4] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m4:
if (Pjp->jp_1Index[3] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m3:
if (Pjp->jp_1Index[2] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m2:
if (Pjp->jp_1Index[1] == (uint8_t)Index) break;
case cJ1_JPFULLPOPU1m1:
if (Pjp->jp_1Index[0] == (uint8_t)Index) break;
return(1); // found, not in exclusion list
#endif // JUDY1
#endif // notdef
// ****************************************************************************
// JPIMMED*:
//
// Note that the contents of jp_DcdPopO are different for cJU_JPIMMED_*_01:
case cJU_JPIMMED_1_01:
case cJU_JPIMMED_2_01:
case cJU_JPIMMED_3_01:
#ifdef JU_64BIT
case cJU_JPIMMED_4_01:
case cJU_JPIMMED_5_01:
case cJU_JPIMMED_6_01:
case cJU_JPIMMED_7_01:
#endif
if (JU_JPDCDPOP0(Pjp) != JU_TRIMTODCDSIZE(Index)) break;
JUDY1CODE(return(1);)
JUDYLCODE(return((PPvoid_t) &(Pjp->jp_Addr));) // immediate value area.
// Macros to make code more readable and avoid dup errors
#ifdef JUDY1
#define CHECKINDEXNATIVE(LEAF_T, PJP, IDX, INDEX) \
if (((LEAF_T *)((PJP)->jp_1Index))[(IDX) - 1] == (LEAF_T)(INDEX)) \
return(1)
#define CHECKLEAFNONNAT(LFBTS, PJP, INDEX, IDX, COPY) \
{ \
Word_t i_ndex; \
uint8_t *a_ddr; \
a_ddr = (PJP)->jp_1Index + (((IDX) - 1) * (LFBTS)); \
COPY(i_ndex, a_ddr); \
if (i_ndex == JU_LEASTBYTES((INDEX), (LFBTS))) \
return(1); \
}
#endif
#ifdef JUDYL
#define CHECKINDEXNATIVE(LEAF_T, PJP, IDX, INDEX) \
if (((LEAF_T *)((PJP)->jp_LIndex))[(IDX) - 1] == (LEAF_T)(INDEX)) \
return((PPvoid_t)(P_JV((PJP)->jp_Addr) + (IDX) - 1))
#define CHECKLEAFNONNAT(LFBTS, PJP, INDEX, IDX, COPY) \
{ \
Word_t i_ndex; \
uint8_t *a_ddr; \
a_ddr = (PJP)->jp_LIndex + (((IDX) - 1) * (LFBTS)); \
COPY(i_ndex, a_ddr); \
if (i_ndex == JU_LEASTBYTES((INDEX), (LFBTS))) \
return((PPvoid_t)(P_JV((PJP)->jp_Addr) + (IDX) - 1)); \
}
#endif
#if (defined(JUDY1) && defined(JU_64BIT))
case cJ1_JPIMMED_1_15: CHECKINDEXNATIVE(uint8_t, Pjp, 15, Index);
case cJ1_JPIMMED_1_14: CHECKINDEXNATIVE(uint8_t, Pjp, 14, Index);
case cJ1_JPIMMED_1_13: CHECKINDEXNATIVE(uint8_t, Pjp, 13, Index);
case cJ1_JPIMMED_1_12: CHECKINDEXNATIVE(uint8_t, Pjp, 12, Index);
case cJ1_JPIMMED_1_11: CHECKINDEXNATIVE(uint8_t, Pjp, 11, Index);
case cJ1_JPIMMED_1_10: CHECKINDEXNATIVE(uint8_t, Pjp, 10, Index);
case cJ1_JPIMMED_1_09: CHECKINDEXNATIVE(uint8_t, Pjp, 9, Index);
case cJ1_JPIMMED_1_08: CHECKINDEXNATIVE(uint8_t, Pjp, 8, Index);
#endif
#if (defined(JUDY1) || defined(JU_64BIT))
case cJU_JPIMMED_1_07: CHECKINDEXNATIVE(uint8_t, Pjp, 7, Index);
case cJU_JPIMMED_1_06: CHECKINDEXNATIVE(uint8_t, Pjp, 6, Index);
case cJU_JPIMMED_1_05: CHECKINDEXNATIVE(uint8_t, Pjp, 5, Index);
case cJU_JPIMMED_1_04: CHECKINDEXNATIVE(uint8_t, Pjp, 4, Index);
#endif
case cJU_JPIMMED_1_03: CHECKINDEXNATIVE(uint8_t, Pjp, 3, Index);
case cJU_JPIMMED_1_02: CHECKINDEXNATIVE(uint8_t, Pjp, 2, Index);
CHECKINDEXNATIVE(uint8_t, Pjp, 1, Index);
break;
#if (defined(JUDY1) && defined(JU_64BIT))
case cJ1_JPIMMED_2_07: CHECKINDEXNATIVE(uint16_t, Pjp, 7, Index);
case cJ1_JPIMMED_2_06: CHECKINDEXNATIVE(uint16_t, Pjp, 6, Index);
case cJ1_JPIMMED_2_05: CHECKINDEXNATIVE(uint16_t, Pjp, 5, Index);
( run in 0.526 second using v1.01-cache-2.11-cpan-71847e10f99 )