Bugzilla bug #145076. Added FLM_ROOTED_PATH capability to speed up searches and take advantage of field ID table in flmCurGetAtomFromRec.

git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@212 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
dsandersoremutah
2006-03-24 18:14:19 +00:00
parent 08f367ee2f
commit 0023b51ad8
11 changed files with 861 additions and 320 deletions

View File

@@ -495,7 +495,9 @@ void flmCurLinkLastChild(
}
/****************************************************************************
Desc: Put a value in an FQATOM node - so we can call it from SMI.
Desc: Put a value in an FQATOM node - so we can call it from SMI. Can
only be used for values, not field paths. Cannot be used for
unknown values.
****************************************************************************/
RCODE flmPutValInAtom(
void * pAtom,
@@ -527,9 +529,6 @@ RCODE flmPutValInAtom(
pQAtom->val.pucBuf = (FLMBYTE *)pvVal;
pQAtom->uiBufLen = uiValLen;
break;
case FLM_FLD_PATH:
pQAtom->val.QueryFld.puiFldPath = (FLMUINT *)pvVal;
break;
case FLM_UNKNOWN:
break;
default:
@@ -553,6 +552,7 @@ RCODE flmCurMakeQNode(
FQNODE_p * ppQNode)
{
FLMUINT * puiTmpPath;
FLMUINT * puiPToCPath;
FLMUINT * puiFldPath;
FLMUINT uiTmpLen = uiValLen;
FLMBYTE * pTmpBuf;
@@ -622,19 +622,22 @@ RCODE flmCurMakeQNode(
}
if ((puiTmpPath = (FLMUINT *)GedPoolCalloc( pPool,
(FLMUINT)((FLMUINT)(uiPathCnt + 1) *
(FLMUINT)((FLMUINT)(uiPathCnt + 1) * 2 *
(FLMUINT)sizeof( FLMUINT)))) == NULL)
{
rc = RC_SET( FERR_MEM);
goto Exit;
}
puiPToCPath = &puiTmpPath [uiPathCnt + 1];
puiFldPath = (FLMUINT *)pVal;
for (uiCnt = 0; uiCnt < uiPathCnt; uiCnt++)
{
puiTmpPath[ uiPathCnt - uiCnt - 1] = puiFldPath[ uiCnt];
puiPToCPath [uiCnt] = puiFldPath [uiCnt];
}
pQAtom->val.QueryFld.puiFldPath = puiTmpPath;
pQAtom->val.QueryFld.puiPToCPath = puiPToCPath;
break;
case FLM_BINARY_VAL:
if ((pTmpBuf = (FLMBYTE *)GedPoolCalloc( pPool, uiTmpLen)) == NULL)